$image_id, 'author' => $_POST['author'] ) ); } mass_updates( IMAGES_TABLE, array('primary' => array('id'), 'update' => array('author')), $datas ); } // title if ('title' == $action) { if (isset($_POST['remove_title'])) { $_POST['title'] = null; } $datas = array(); foreach ($collection as $image_id) { array_push( $datas, array( 'id' => $image_id, 'name' => $_POST['title'] ) ); } mass_updates( IMAGES_TABLE, array('primary' => array('id'), 'update' => array('name')), $datas ); } // date_creation if ('date_creation' == $action) { $date_creation = sprintf( '%u-%u-%u', $_POST['date_creation_year'], $_POST['date_creation_month'], $_POST['date_creation_day'] ); if (isset($_POST['remove_date_creation'])) { $date_creation = null; } $datas = array(); foreach ($collection as $image_id) { array_push( $datas, array( 'id' => $image_id, 'date_creation' => $date_creation ) ); } mass_updates( IMAGES_TABLE, array('primary' => array('id'), 'update' => array('date_creation')), $datas ); } // privacy_level if ('level' == $action) { $datas = array(); foreach ($collection as $image_id) { array_push( $datas, array( 'id' => $image_id, 'level' => $_POST['level'] ) ); } mass_updates( IMAGES_TABLE, array('primary' => array('id'), 'update' => array('level')), $datas ); if (isset($_SESSION['bulk_manager_filter']['level'])) { if ($_POST['level'] < $_SESSION['bulk_manager_filter']['level']) { redirect($redirect_url); } } } // add_to_caddie if ('add_to_caddie' == $action) { fill_caddie($collection); } // delete if ('delete' == $action) { if (isset($_POST['confirm_deletion']) and 1 == $_POST['confirm_deletion']) { $deleted_count = delete_elements($collection, true); if ($deleted_count > 0) { $_SESSION['page_infos'] = array( sprintf( l10n_dec( '%d photo was deleted', '%d photos were deleted', $deleted_count ), $deleted_count ) ); $redirect_url = get_root_url().'admin.php?page='.$_GET['page']; redirect($redirect_url); } else { array_push($page['errors'], l10n('No photo can be deleted')); } } else { array_push($page['errors'], l10n('You need to confirm deletion')); } } // synchronize metadata if ('metadata' == $action) { sync_metadata($collection); array_push( $page['infos'], l10n('Metadata synchronized from file') ); } if ('delete_derivatives' == $action) { $query='SELECT path,representative_ext FROM '.IMAGES_TABLE.' WHERE id IN ('.implode(',', $collection).')'; $result = pwg_query($query); while ($info = pwg_db_fetch_assoc($result)) { foreach( $_POST['del_derivatives_type'] as $type) { delete_element_derivatives($info, $type); } } } if ('generate_derivatives' == $action) { if ($_POST['regenerateSuccess'] != '0') array_push($page['infos'], sprintf(l10n('%s photos were generated'), $_POST['regenerateSuccess'])); if ($_POST['regenerateError'] != '0') array_push($page['warnings'], sprintf(l10n('%s photos were not generated'), $_POST['regenerateError'])); } trigger_action('element_set_global_action', $action, $collection); } // +-----------------------------------------------------------------------+ // | template init | // +-----------------------------------------------------------------------+ $template->set_filenames(array('batch_manager_global' => 'batch_manager_global.tpl')); $base_url = get_root_url().'admin.php'; $prefilters = array(); array_push($prefilters, array('ID' => 'caddie', 'NAME' => l10n('Caddie')), array('ID' => 'last import', 'NAME' => l10n('Last import')), array('ID' => 'with no album', 'NAME' => l10n('With no album')), array('ID' => 'with no tag', 'NAME' => l10n('With no tag')), array('ID' => 'duplicates', 'NAME' => l10n('Duplicates')), array('ID' => 'all photos', 'NAME' => l10n('All')) ); if ($conf['enable_synchronization']) { array_push($prefilters, array('ID' => 'with no virtual album', 'NAME' => l10n('With no virtual album')) ); } $prefilters = trigger_event('get_batch_manager_prefilters', $prefilters); usort($prefilters, 'UC_name_compare'); $template->assign( array( 'prefilters' => $prefilters, 'filter' => $_SESSION['bulk_manager_filter'], 'selection' => $collection, 'all_elements' => $page['cat_elements_id'], 'START' => $page['start'], 'U_DISPLAY'=>$base_url.get_query_string_diff(array('display')), 'F_ACTION'=>$base_url.get_query_string_diff(array('cat','start')), ) ); // +-----------------------------------------------------------------------+ // | caddie options | // +-----------------------------------------------------------------------+ $in_caddie = false; if (isset($_SESSION['bulk_manager_filter']['prefilter']) and 'caddie' == $_SESSION['bulk_manager_filter']['prefilter']) { $in_caddie = true; } $template->assign('IN_CADDIE', $in_caddie); // +-----------------------------------------------------------------------+ // | deletion form | // +-----------------------------------------------------------------------+ // we can only remove photos that have no storage_category_id, in other // word, it currently (Butterfly) means that the photo was added with // pLoader if (count($page['cat_elements_id']) > 0) { $query = ' SELECT id FROM '.IMAGES_TABLE.' WHERE id IN ('.implode(',', $page['cat_elements_id']).') AND file NOT LIKE \'http%\' LIMIT 1 ;'; ; if ( pwg_db_fetch_row(pwg_query($query)) ) { $template->assign('show_delete_form', true); } } // +-----------------------------------------------------------------------+ // | global mode form | // +-----------------------------------------------------------------------+ // privacy level foreach ($conf['available_permission_levels'] as $level) { $level_options[$level] = l10n(sprintf('Level %d', $level)); if (0 == $level) { $level_options[$level] = l10n('Everybody'); } } $template->assign( array( 'filter_level_options'=> $level_options, 'filter_level_options_selected' => isset($_SESSION['bulk_manager_filter']['level']) ? $_SESSION['bulk_manager_filter']['level'] : 0, ) ); // tags if (!empty($_SESSION['bulk_manager_filter']['tags'])) { $query = ' SELECT id, name FROM '.TAGS_TABLE.' WHERE id IN ('.implode(',', $_SESSION['bulk_manager_filter']['tags']).') ;'; $template->assign('filter_tags', get_taglist($query)); } // Virtualy associate a picture to a category $query = ' SELECT id,name,uppercats,global_rank FROM '.CATEGORIES_TABLE.' ;'; display_select_cat_wrapper($query, array(), 'associate_options', true); display_select_cat_wrapper($query, array(), 'move_options', true); display_select_cat_wrapper($query, array(), 'category_parent_options'); // in the filter box, which category to select by default $selected_category = array(); if (isset($_SESSION['bulk_manager_filter']['category'])) { $selected_category = array($_SESSION['bulk_manager_filter']['category']); } else { // we need to know the category in which the last photo was added $selected_category = array(); $query = ' SELECT category_id, id_uppercat FROM '.IMAGES_TABLE.' AS i JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON image_id = i.id JOIN '.CATEGORIES_TABLE.' AS c ON category_id = c.id ORDER BY i.id DESC LIMIT 1 ;'; $result = pwg_query($query); if (pwg_db_num_rows($result) > 0) { $row = pwg_db_fetch_assoc($result); $selected_category = array($row['category_id']); } } $query = ' SELECT id,name,uppercats,global_rank FROM '.CATEGORIES_TABLE.' ;'; display_select_cat_wrapper($query, $selected_category, 'filter_category_options', true); // Dissociate from a category : categories listed for dissociation can only // represent virtual links. We can't create orphans. Links to physical // categories can't be broken. if (count($page['cat_elements_id']) > 0) { $query = ' SELECT DISTINCT(category_id) AS id, c.name, c.uppercats, c.global_rank FROM '.IMAGE_CATEGORY_TABLE.' AS ic JOIN '.CATEGORIES_TABLE.' AS c ON c.id = ic.category_id JOIN '.IMAGES_TABLE.' AS i ON i.id = ic.image_id WHERE ic.image_id IN ('.implode(',', $page['cat_elements_id']).') AND ( ic.category_id != i.storage_category_id OR i.storage_category_id IS NULL ) ;'; display_select_cat_wrapper($query, array(), 'dissociate_options', true); } if (count($page['cat_elements_id']) > 0) { // remove tags $tags = get_common_tags($page['cat_elements_id'], -1); $template->assign( array( 'DEL_TAG_SELECTION' => get_html_tag_selection($tags, 'del_tags'), ) ); } // creation date $day = empty($_POST['date_creation_day']) ? date('j') : $_POST['date_creation_day']; $month = empty($_POST['date_creation_month']) ? date('n') : $_POST['date_creation_month']; $year = empty($_POST['date_creation_year']) ? date('Y') : $_POST['date_creation_year']; $month_list = $lang['month']; $month_list[0]='------------'; ksort($month_list); $template->assign( array( 'month_list' => $month_list, 'DATE_CREATION_DAY' => (int)$day, 'DATE_CREATION_MONTH'=> (int)$month, 'DATE_CREATION_YEAR' => (int)$year, ) ); // image level options $template->assign( array( 'level_options'=> get_privacy_level_options(), 'level_options_selected' => 0, ) ); // metadata include_once( PHPWG_ROOT_PATH.'admin/site_reader_local.php'); $site_reader = new LocalSiteReader('./'); $used_metadata = implode( ', ', $site_reader->get_metadata_attributes()); $template->assign( array( 'used_metadata' => $used_metadata, ) ); //derivatives $del_deriv_map = array(); foreach(ImageStdParams::get_defined_type_map() as $params) { $del_deriv_map[$params->type] = l10n($params->type); } $gen_deriv_map = $del_deriv_map; $del_deriv_map[IMG_CUSTOM] = l10n(IMG_CUSTOM); $template->assign( array( 'del_derivatives_types' => $del_deriv_map, 'generate_derivatives_types' => $gen_deriv_map, ) ); // +-----------------------------------------------------------------------+ // | global mode thumbnails | // +-----------------------------------------------------------------------+ // how many items to display on this page if (!empty($_GET['display'])) { if ('all' == $_GET['display']) { $page['nb_images'] = count($page['cat_elements_id']); } else { $page['nb_images'] = intval($_GET['display']); } } else { $page['nb_images'] = 20; } $nb_thumbs_page = 0; if (count($page['cat_elements_id']) > 0) { $nav_bar = create_navigation_bar( $base_url.get_query_string_diff(array('start')), count($page['cat_elements_id']), $page['start'], $page['nb_images'] ); $template->assign('navbar', $nav_bar); $is_category = false; if (isset($_SESSION['bulk_manager_filter']['category']) and !isset($_SESSION['bulk_manager_filter']['category_recursive'])) { $is_category = true; } if (isset($_SESSION['bulk_manager_filter']['prefilter']) and 'duplicates' == $_SESSION['bulk_manager_filter']['prefilter']) { $conf['order_by'] = ' ORDER BY file, id'; } $query = ' SELECT id,path,representative_ext,file,filesize,level,name,width,height,rotation FROM '.IMAGES_TABLE; if ($is_category) { $category_info = get_cat_info($_SESSION['bulk_manager_filter']['category']); $conf['order_by'] = $conf['order_by_inside_category']; if (!empty($category_info['image_order'])) { $conf['order_by'] = ' ORDER BY '.$category_info['image_order']; } $query.= ' JOIN '.IMAGE_CATEGORY_TABLE.' ON id = image_id'; } $query.= ' WHERE id IN ('.implode(',', $page['cat_elements_id']).')'; if ($is_category) { $query.= ' AND category_id = '.$_SESSION['bulk_manager_filter']['category']; } $query.= ' '.$conf['order_by'].' LIMIT '.$page['nb_images'].' OFFSET '.$page['start'].' ;'; $result = pwg_query($query); $thumb_params = ImageStdParams::get_by_type(IMG_THUMB); // template thumbnail initialization while ($row = pwg_db_fetch_assoc($result)) { $nb_thumbs_page++; $src_image = new SrcImage($row); $ttitle = render_element_name($row); if ($ttitle != get_name_from_file($row['file'])) { $ttitle.= ' ('.$row['file'].')'; } $template->append( 'thumbnails', array_merge($row, array( 'thumb' => new DerivativeImage($thumb_params, $src_image), 'TITLE' => $ttitle, 'FILE_SRC' => DerivativeImage::url(IMG_LARGE, $src_image), 'U_EDIT' => get_root_url().'admin.php?page=photo-'.$row['id'], ) )); } $template->assign('thumb_params', $thumb_params); } $template->assign( array( 'nb_thumbs_page' => $nb_thumbs_page, 'nb_thumbs_set' => count($page['cat_elements_id']), ) ); trigger_action('loc_end_element_set_global'); //----------------------------------------------------------- sending html code $template->assign_var_from_handle('ADMIN_CONTENT', 'batch_manager_global'); ?>