Changeset 6772
- Timestamp:
- Aug 17, 2010, 5:47:14 PM (14 years ago)
- Location:
- extensions/bulk_manager
- Files:
-
- 2 added
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
extensions/bulk_manager/element_set.php
r6756 r6772 44 44 45 45 // +-----------------------------------------------------------------------+ 46 // | initialize info about category | 47 // +-----------------------------------------------------------------------+ 48 49 if (!isset($_GET['cat'])) 50 { 51 $_GET['cat'] = 'caddie'; 52 } 53 54 // To element_set_(global|unit).php, we must provide the elements id of the 55 // managed category in $page['cat_elements_id'] array. 56 $page['cat_elements_id'] = array(); 57 if (is_numeric($_GET['cat'])) 58 { 59 $page['title'] = 60 get_cat_display_name_from_id( 61 $_GET['cat'], 62 PHPWG_ROOT_PATH.'admin.php?page=cat_modify&cat_id=', 63 false 46 // | initialize current set | 47 // +-----------------------------------------------------------------------+ 48 49 if (isset($_POST['submitFilter'])) 50 { 51 // echo '<pre>'; print_r($_POST); echo '</pre>'; 52 53 $_SESSION['bulk_manager_filter'] = array(); 54 55 if (isset($_POST['filter_prefilter_use'])) 56 { 57 $prefilters = array('caddie', 'last import', 'with no album', 'with no tag'); 58 if (in_array($_POST['filter_prefilter'], $prefilters)) 59 { 60 $_SESSION['bulk_manager_filter']['prefilter'] = $_POST['filter_prefilter']; 61 } 62 } 63 64 if (isset($_POST['filter_category_use'])) 65 { 66 $_SESSION['bulk_manager_filter']['category'] = $_POST['filter_category']; 67 68 if (isset($_POST['filter_category_recursive'])) 69 { 70 $_SESSION['bulk_manager_filter']['category_recursive'] = true; 71 } 72 } 73 74 if (isset($_POST['filter_level_use'])) 75 { 76 if (in_array($_POST['filter_level'], $conf['available_permission_levels'])) 77 { 78 $_SESSION['bulk_manager_filter']['level'] = $_POST['filter_level']; 79 } 80 } 81 } 82 83 if (isset($_GET['cat'])) 84 { 85 if ('caddie' == $_GET['cat']) 86 { 87 $_SESSION['bulk_manager_filter'] = array( 88 'prefilter' => 'caddie' 64 89 ); 65 66 $query = ' 67 SELECT image_id 68 FROM '.IMAGE_CATEGORY_TABLE.' 69 WHERE category_id = '.$_GET['cat'].' 70 ;'; 71 $page['cat_elements_id'] = array_from_query($query, 'image_id'); 72 } 73 else if ('caddie' == $_GET['cat']) 74 { 75 $page['title'] = l10n('caddie'); 76 77 $query = ' 90 } 91 92 if (is_numeric($_GET['cat'])) 93 { 94 $_SESSION['bulk_manager_filter'] = array( 95 'category' => $_GET['cat'] 96 ); 97 } 98 } 99 100 if (!isset($_SESSION['bulk_manager_filter'])) 101 { 102 $_SESSION['bulk_manager_filter'] = array( 103 'prefilter' => 'caddie' 104 ); 105 } 106 107 // echo '<pre>'; print_r($_SESSION['bulk_manager_filter']); echo '</pre>'; 108 109 // depending on the current filter (in session), we find the appropriate 110 // photos 111 $filter_sets = array(); 112 if (isset($_SESSION['bulk_manager_filter']['prefilter'])) 113 { 114 if ('caddie' == $_SESSION['bulk_manager_filter']['prefilter']) 115 { 116 $query = ' 78 117 SELECT element_id 79 118 FROM '.CADDIE_TABLE.' 80 119 WHERE user_id = '.$user['id'].' 81 120 ;'; 82 $page['cat_elements_id'] = array_from_query($query, 'element_id'); 83 } 84 else if ('not_linked' == $_GET['cat']) 85 { 86 $page['title'] = l10n('Not linked elements'); 87 $template->assign(array('U_ACTIVE_MENU' => 5 )); 88 89 // we are searching elements not linked to any virtual category 121 array_push( 122 $filter_sets, 123 array_from_query($query, 'element_id') 124 ); 125 } 126 127 if ('last import'== $_SESSION['bulk_manager_filter']['prefilter']) 128 { 129 $query = ' 130 SELECT MAX(date_available) AS date 131 FROM '.IMAGES_TABLE.' 132 ;'; 133 $row = pwg_db_fetch_assoc(pwg_query($query)); 134 if (!empty($row['date'])) 135 { 136 $query = ' 137 SELECT id 138 FROM '.IMAGES_TABLE.' 139 WHERE date_available BETWEEN '.pwg_db_get_recent_period_expression(1, $row['date']).' AND \''.$row['date'].'\' 140 ;'; 141 array_push( 142 $filter_sets, 143 array_from_query($query, 'id') 144 ); 145 } 146 } 147 } 148 149 if (isset($_SESSION['bulk_manager_filter']['category'])) 150 { 151 $categories = array(); 152 153 if (isset($_SESSION['bulk_manager_filter']['category_recursive'])) 154 { 155 $categories = get_subcat_ids(array($_SESSION['bulk_manager_filter']['category'])); 156 } 157 else 158 { 159 $categories = array($_SESSION['bulk_manager_filter']['category']); 160 } 161 162 $query = ' 163 SELECT DISTINCT(image_id) 164 FROM '.IMAGE_CATEGORY_TABLE.' 165 WHERE category_id IN ('.implode(',', $categories).') 166 ;'; 167 array_push( 168 $filter_sets, 169 array_from_query($query, 'image_id') 170 ); 171 } 172 173 if (isset($_SESSION['bulk_manager_filter']['level'])) 174 { 90 175 $query = ' 91 176 SELECT id 92 177 FROM '.IMAGES_TABLE.' 178 WHERE level >= '.$_SESSION['bulk_manager_filter']['level'].' 93 179 ;'; 94 $all_elements = array_from_query($query, 'id'); 95 96 $linked_to_virtual = array(); 97 98 $query = ' 99 SELECT id 100 FROM '.CATEGORIES_TABLE.' 101 WHERE dir IS NULL 102 ;'; 103 $virtual_categories = array_from_query($query, 'id'); 104 if (!empty($virtual_categories)) 105 { 106 $query = ' 107 SELECT DISTINCT(image_id) 108 FROM '.IMAGE_CATEGORY_TABLE.' 109 WHERE category_id IN ('.implode(',', $virtual_categories).') 110 ;'; 111 $linked_to_virtual = array_from_query($query, 'image_id'); 112 } 113 114 $page['cat_elements_id'] = array_diff($all_elements, $linked_to_virtual); 115 } 116 else if ('duplicates' == $_GET['cat']) 117 { 118 $page['title'] = l10n('Files with same name in more than one physical category'); 119 $template->assign(array('U_ACTIVE_MENU' => 5 )); 120 121 // we are searching related elements twice or more to physical categories 122 // 1 - Retrieve Files 123 $query = ' 124 SELECT DISTINCT(file) 125 FROM '.IMAGES_TABLE.' 126 GROUP BY file 127 HAVING COUNT(DISTINCT storage_category_id) > 1 128 ;'; 129 130 $duplicate_files = array_from_query($query, 'file'); 131 $duplicate_files[]='Nofiles'; 132 // 2 - Retrives related picture ids 133 $query = ' 134 SELECT id, file 135 FROM '.IMAGES_TABLE.' 136 WHERE file IN (\''.implode("','", $duplicate_files).'\') 137 ORDER BY file, id 138 ;'; 139 140 $page['cat_elements_id'] = array_from_query($query, 'id'); 141 } 142 elseif ('recent'== $_GET['cat']) 143 { 144 $page['title'] = l10n('Recent pictures'); 145 $query = 'SELECT MAX(date_available) AS date 146 FROM '.IMAGES_TABLE; 147 $row = pwg_db_fetch_assoc(pwg_query($query)); 148 if (!empty($row['date'])) 149 { 150 $query = 'SELECT id 151 FROM '.IMAGES_TABLE.' 152 WHERE date_available BETWEEN '.pwg_db_get_recent_period_expression(1, $row['date']).' AND \''.$row['date'].'\''; 153 $page['cat_elements_id'] = array_from_query($query, 'id'); 154 } 155 } 180 array_push( 181 $filter_sets, 182 array_from_query($query, 'id') 183 ); 184 } 185 186 $current_set = array_shift($filter_sets); 187 foreach ($filter_sets as $set) 188 { 189 $current_set = array_intersect($current_set, $set); 190 } 191 $page['cat_elements_id'] = $current_set; 192 193 // // To element_set_(global|unit).php, we must provide the elements id of the 194 // // managed category in $page['cat_elements_id'] array. 195 // $page['cat_elements_id'] = array(); 196 // if (is_numeric($_GET['cat'])) 197 // { 198 // $page['title'] = 199 // get_cat_display_name_from_id( 200 // $_GET['cat'], 201 // PHPWG_ROOT_PATH.'admin.php?page=cat_modify&cat_id=', 202 // false 203 // ); 204 // 205 // $query = ' 206 // SELECT image_id 207 // FROM '.IMAGE_CATEGORY_TABLE.' 208 // WHERE category_id = '.$_GET['cat'].' 209 // ;'; 210 // $page['cat_elements_id'] = array_from_query($query, 'image_id'); 211 // } 212 // else if ('caddie' == $_GET['cat']) 213 // { 214 // $page['title'] = l10n('caddie'); 215 // 216 // $query = ' 217 // SELECT element_id 218 // FROM '.CADDIE_TABLE.' 219 // WHERE user_id = '.$user['id'].' 220 // ;'; 221 // $page['cat_elements_id'] = array_from_query($query, 'element_id'); 222 // } 223 // else if ('not_linked' == $_GET['cat']) 224 // { 225 // $page['title'] = l10n('Not linked elements'); 226 // $template->assign(array('U_ACTIVE_MENU' => 5 )); 227 // 228 // // we are searching elements not linked to any virtual category 229 // $query = ' 230 // SELECT id 231 // FROM '.IMAGES_TABLE.' 232 // ;'; 233 // $all_elements = array_from_query($query, 'id'); 234 // 235 // $linked_to_virtual = array(); 236 // 237 // $query = ' 238 // SELECT id 239 // FROM '.CATEGORIES_TABLE.' 240 // WHERE dir IS NULL 241 // ;'; 242 // $virtual_categories = array_from_query($query, 'id'); 243 // if (!empty($virtual_categories)) 244 // { 245 // $query = ' 246 // SELECT DISTINCT(image_id) 247 // FROM '.IMAGE_CATEGORY_TABLE.' 248 // WHERE category_id IN ('.implode(',', $virtual_categories).') 249 // ;'; 250 // $linked_to_virtual = array_from_query($query, 'image_id'); 251 // } 252 // 253 // $page['cat_elements_id'] = array_diff($all_elements, $linked_to_virtual); 254 // } 255 // else if ('duplicates' == $_GET['cat']) 256 // { 257 // $page['title'] = l10n('Files with same name in more than one physical category'); 258 // $template->assign(array('U_ACTIVE_MENU' => 5 )); 259 // 260 // // we are searching related elements twice or more to physical categories 261 // // 1 - Retrieve Files 262 // $query = ' 263 // SELECT DISTINCT(file) 264 // FROM '.IMAGES_TABLE.' 265 // GROUP BY file 266 // HAVING COUNT(DISTINCT storage_category_id) > 1 267 // ;'; 268 // 269 // $duplicate_files = array_from_query($query, 'file'); 270 // $duplicate_files[]='Nofiles'; 271 // // 2 - Retrives related picture ids 272 // $query = ' 273 // SELECT id, file 274 // FROM '.IMAGES_TABLE.' 275 // WHERE file IN (\''.implode("','", $duplicate_files).'\') 276 // ORDER BY file, id 277 // ;'; 278 // 279 // $page['cat_elements_id'] = array_from_query($query, 'id'); 280 // } 281 // elseif ('recent'== $_GET['cat']) 282 // { 283 // $page['title'] = l10n('Recent pictures'); 284 // $query = 'SELECT MAX(date_available) AS date 285 // FROM '.IMAGES_TABLE; 286 // $row = pwg_db_fetch_assoc(pwg_query($query)); 287 // if (!empty($row['date'])) 288 // { 289 // $query = 'SELECT id 290 // FROM '.IMAGES_TABLE.' 291 // WHERE date_available BETWEEN '.pwg_db_get_recent_period_expression(1, $row['date']).' AND \''.$row['date'].'\''; 292 // $page['cat_elements_id'] = array_from_query($query, 'id'); 293 // } 294 // } 156 295 157 296 // +-----------------------------------------------------------------------+ -
extensions/bulk_manager/element_set_global.php
r6756 r6772 325 325 $template->assign( 326 326 array( 327 'filter' => $_SESSION['bulk_manager_filter'], 328 327 329 'selection' => $collection, 328 330 329 'CATEGORIES_NAV'=>$page['title'],330 331 331 'U_DISPLAY'=>$base_url.get_query_string_diff(array('display')), 332 332 … … 337 337 .'&mode=unit', 338 338 339 'F_ACTION'=>$base_url.get_query_string_diff(array( )),339 'F_ACTION'=>$base_url.get_query_string_diff(array('cat')), 340 340 ) 341 341 ); … … 345 345 // +-----------------------------------------------------------------------+ 346 346 347 $template->assign('IN_CADDIE', 'caddie' == $_GET['cat'] ? true : false ); 347 $in_caddie = false; 348 if (isset($_SESSION['bulk_manager_filter']['prefilter']) 349 and 'caddie' == $_SESSION['bulk_manager_filter']['prefilter']) 350 { 351 $in_caddie = true; 352 } 353 $template->assign('IN_CADDIE', $in_caddie); 348 354 349 355 // +-----------------------------------------------------------------------+ … … 375 381 // +-----------------------------------------------------------------------+ 376 382 383 // privacy level 384 $template->assign( 385 array( 386 'filter_level_options'=> get_privacy_level_options(), 387 'filter_level_options_selected' => isset($_SESSION['bulk_manager_filter']['level']) 388 ? $_SESSION['bulk_manager_filter']['level'] 389 : 0, 390 ) 391 ); 392 377 393 // Virtualy associate a picture to a category 378 394 $query = ' … … 381 397 ;'; 382 398 display_select_cat_wrapper($query, array(), 'associate_options', true); 399 400 // in the filter box, which category to select by default 401 $selected_category = array(); 402 403 if (isset($_SESSION['bulk_manager_filter']['category'])) 404 { 405 $selected_category = array($_SESSION['bulk_manager_filter']['category']); 406 } 407 else 408 { 409 // we need to know the category in which the last photo was added 410 $selected_category = array(); 411 412 $query = ' 413 SELECT 414 category_id, 415 id_uppercat 416 FROM '.IMAGES_TABLE.' AS i 417 JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON image_id = i.id 418 JOIN '.CATEGORIES_TABLE.' AS c ON category_id = c.id 419 ORDER BY i.id DESC 420 LIMIT 1 421 ;'; 422 $result = pwg_query($query); 423 if (pwg_db_num_rows($result) > 0) 424 { 425 $row = pwg_db_fetch_assoc($result); 426 427 $selected_category = array($row['category_id']); 428 } 429 } 430 431 $query = ' 432 SELECT id,name,uppercats,global_rank 433 FROM '.CATEGORIES_TABLE.' 434 ;'; 435 display_select_cat_wrapper($query, $selected_category, 'filter_category_options', true); 383 436 384 437 // Dissociate from a category : categories listed for dissociation can -
extensions/bulk_manager/element_set_global.tpl
r6756 r6772 235 235 }); 236 236 237 $(".removeFilter").click(function () { 238 var filter = $(this).parent('li').attr("id"); 239 filter_disable(filter); 240 241 return false; 242 }); 243 244 function filter_enable(filter) { 245 /* show the filter*/ 246 $("#"+filter).show(); 247 248 /* check the checkbox to declare we use this filter */ 249 $("input[type=checkbox][name="+filter+"_use]").attr("checked", true); 250 251 /* forbid to select this filter in the addFilter list */ 252 $("#addFilter").children("option[value="+filter+"]").attr("disabled", "disabled"); 253 } 254 255 $("#addFilter").change(function () { 256 var filter = $(this).attr("value"); 257 filter_enable(filter); 258 $(this).attr("value", -1); 259 }); 260 261 function filter_disable(filter) { 262 /* hide the filter line */ 263 $("#"+filter).hide(); 264 265 /* uncheck the checkbox to declare we do not use this filter */ 266 $("input[name="+filter+"_use]").removeAttr("checked"); 267 268 /* give the possibility to show it again */ 269 $("#addFilter").children("option[value="+filter+"]").removeAttr("disabled"); 270 } 271 272 $("#removeFilters").click(function() { 273 $("#filterList li").each(function() { 274 var filter = $(this).attr("id"); 275 filter_disable(filter); 276 }); 277 return false; 278 }); 279 237 280 checkPermitAction() 238 281 }); … … 253 296 #selectSet a {border-bottom:1px dotted} 254 297 #applyOnDetails {font-style:italic;} 298 299 .actionButtons {text-align:left;} 300 #filterList {padding-left:5px;} 301 #filterList li {margin-bottom:5px; list-style-type:none;} 302 a.removeFilter {background: url(plugins/bulk_manager/remove_filter.png) no-repeat top left;width:7px;height:7px;display:inline-block} 303 a.removeFilter:hover {background: url(plugins/bulk_manager/remove_filter_hover.png); border:none;} 304 .removeFilter span {display:none} 305 #applyFilterBlock {margin-top:20px;} 306 .useFilterCheckbox {display:none} 255 307 </style> 256 308 {/literal} 257 309 310 <p style="float:left; font-size:90%;margin:5px 0 0 0;padding:0;"> 311 <a href="{$U_UNIT_MODE}">Switch to unit mode</a> 312 </p> 313 258 314 <h2>{'Batch management'|@translate}</h2> 259 315 260 <h3>{$CATEGORIES_NAV}</h3> 261 262 {if !empty($thumbnails)} 263 <p style="text-align:center;"> 264 {'global mode'|@translate} 265 | <a href="{$U_UNIT_MODE}">{'unit mode'|@translate}</a> 266 </p> 267 268 <fieldset style="display:none;"> 269 270 <legend>{'Display options'|@translate}</legend> 271 272 <p>{'elements per page'|@translate}: 273 <a href="{$U_DISPLAY}&display=20">20</a> 274 | <a href="{$U_DISPLAY}&display=50">50</a> 275 | <a href="{$U_DISPLAY}&display=100">100</a> 276 | <a href="{$U_DISPLAY}&display=all">{'all'|@translate}</a> 316 <form action="{$F_ACTION}" method="post"> 317 318 <fieldset> 319 <legend>{'Filter'|@translate}</legend> 320 321 <ul id="filterList"> 322 <li id="filter_prefilter" {if !isset($filter.prefilter)}style="display:none"{/if}> 323 <a href="#" class="removeFilter" title="remove this filter"><span>[x]</span></a> 324 <input type="checkbox" name="filter_prefilter_use" class="useFilterCheckbox" {if isset($filter.prefilter)}checked="checked"{/if}> 325 predefined filter 326 <select name="filter_prefilter"> 327 <option value="caddie" {if $filter.prefilter eq 'caddie'}selected="selected"{/if}>caddie</option> 328 <option value="last import" {if $filter.prefilter eq 'last import'}selected="selected"{/if}>last import</option> 329 <!-- <option value="with no album">with no album</option> --> 330 <!-- <option value="with no virtual album">with no virtual album</option> --> 331 <!-- <option value="with no tag">with no tag</option> --> 332 </select> 333 </li> 334 <li id="filter_category" {if !isset($filter.category)}style="display:none"{/if}> 335 <a href="#" class="removeFilter" title="remove this filter"><span>[x]</span></a> 336 <input type="checkbox" name="filter_category_use" class="useFilterCheckbox" {if isset($filter.category)}checked="checked"{/if}> 337 album 338 <select style="width:400px" name="filter_category" size="1"> 339 {html_options options=$filter_category_options selected=$filter_category_options_selected} 340 </select> 341 <label><input type="checkbox" name="filter_category_recursive" {if isset($filter.category_recursive)}checked="checked"{/if}> {'include child albums'|@translate}</label> 342 </li> 343 <li id="filter_level" {if !isset($filter.level)}style="display:none"{/if}> 344 <a href="#" class="removeFilter" title="remove this filter"><span>[x]</span></a> 345 <input type="checkbox" name="filter_level_use" class="useFilterCheckbox" {if isset($filter.level)}checked="checked"{/if}> 346 {'Who can see these photos?'|@translate} 347 <select name="filter_level" size="1"> 348 {html_options options=$filter_level_options selected=$filter_level_options_selected} 349 </select> 350 </li> 351 </ul> 352 353 <p class="actionButtons" style=""> 354 <select id="addFilter"> 355 <option value="-1">Add a filter</option> 356 <option disabled="disabled">------------------</option> 357 <option value="filter_prefilter">predefined filter</option> 358 <option value="filter_category">album</option> 359 <option value="filter_level">{'Who can see these photos?'|@translate}</option> 360 </select> 361 <!-- <input id="removeFilters" class="submit" type="submit" value="Remove all filters" name="removeFilters"> --> 362 <a id="removeFilters" href="">Remove all filters</a> 277 363 </p> 278 364 365 <p class="actionButtons" id="applyFilterBlock"> 366 <input id="applyFilter" class="submit" type="submit" value="Refresh photo set" name="submitFilter"> 367 </p> 368 279 369 </fieldset> 280 370 281 <!-- <fieldset> -->282 <!-- <legend>{'Filter'|@translate}</legend> -->283 <!-- </fieldset> -->284 285 <form action="{$F_ACTION}" method="post">286 287 371 <fieldset> 288 372 289 373 <legend>{'Selection'|@translate}</legend> 290 374 375 {if !empty($thumbnails)} 291 376 <p id="checkActions"> 292 377 {'Select:'|@translate} … … 304 389 </p> 305 390 306 {if !empty($thumbnails)}307 391 <ul class="thumbnails"> 308 392 {foreach from=$thumbnails item=thumbnail} … … 332 416 {/foreach} 333 417 </ul> 334 {/if}335 418 336 419 {if !empty($navbar) } … … 351 434 {/if} 352 435 436 {else} 437 <div>No photo in the current set.</div> 438 {/if} 353 439 </fieldset> 354 440 … … 462 548 </div> 463 549 464 <p id="applyActionBlock" style="display:none" >550 <p id="applyActionBlock" style="display:none" class="actionButtons"> 465 551 <input id="applyAction" class="submit" type="submit" value="{'Apply action'|@translate}" name="submit" {$TAG_INPUT_ENABLED}> <span id="applyOnDetails"></span></p> 466 552 … … 469 555 470 556 </form> 471 472 {else}473 <div class="infos"><p>{'Caddie is currently empty'|@translate}</p></div>474 {/if} -
extensions/bulk_manager/main.inc.php
r6756 r6772 2 2 /* 3 3 Plugin Name: Bulk Manager 4 Version: auto4 Version: 2.1a 5 5 Description: Bulk Manager new generation, for Piwigo 2.2 6 6 Plugin URI: http://piwigo.org/ext/extension_view.php?eid=440
Note: See TracChangeset
for help on using the changeset viewer.