source: trunk/admin/batch_manager_unit.php @ 11039

Last change on this file since 11039 was 11039, checked in by patdenice, 13 years ago

Load tags for tokeninput directly in html page. Ajax is too slow.

File size: 8.6 KB
Line 
1<?php
2// +-----------------------------------------------------------------------+
3// | Piwigo - a PHP based photo gallery                                    |
4// +-----------------------------------------------------------------------+
5// | Copyright(C) 2008-2011 Piwigo Team                  http://piwigo.org |
6// | Copyright(C) 2003-2008 PhpWebGallery Team    http://phpwebgallery.net |
7// | Copyright(C) 2002-2003 Pierrick LE GALL   http://le-gall.net/pierrick |
8// +-----------------------------------------------------------------------+
9// | This program is free software; you can redistribute it and/or modify  |
10// | it under the terms of the GNU General Public License as published by  |
11// | the Free Software Foundation                                          |
12// |                                                                       |
13// | This program is distributed in the hope that it will be useful, but   |
14// | WITHOUT ANY WARRANTY; without even the implied warranty of            |
15// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU      |
16// | General Public License for more details.                              |
17// |                                                                       |
18// | You should have received a copy of the GNU General Public License     |
19// | along with this program; if not, write to the Free Software           |
20// | Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, |
21// | USA.                                                                  |
22// +-----------------------------------------------------------------------+
23
24/**
25 * Management of elements set. Elements can belong to a category or to the
26 * user caddie.
27 *
28 */
29
30if (!defined('PHPWG_ROOT_PATH'))
31{
32  die('Hacking attempt!');
33}
34
35include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
36
37// +-----------------------------------------------------------------------+
38// | Check Access and exit when user status is not ok                      |
39// +-----------------------------------------------------------------------+
40check_status(ACCESS_ADMINISTRATOR);
41
42trigger_action('loc_begin_element_set_unit');
43
44// +-----------------------------------------------------------------------+
45// |                        unit mode form submission                      |
46// +-----------------------------------------------------------------------+
47
48if (isset($_POST['submit']))
49{
50  $collection = explode(',', $_POST['element_ids']);
51
52  $datas = array();
53
54  $query = '
55SELECT id, date_creation
56  FROM '.IMAGES_TABLE.'
57  WHERE id IN ('.implode(',', $collection).')
58;';
59  $result = pwg_query($query);
60
61  while ($row = pwg_db_fetch_assoc($result))
62  {
63    $data = array();
64
65    $data['id'] = $row['id'];
66    $data['name'] = $_POST['name-'.$row['id']];
67    $data['author'] = $_POST['author-'.$row['id']];
68    $data['level'] = $_POST['level-'.$row['id']];
69
70    foreach (array('name', 'level') as $field)
71    {
72      if (!empty($_POST[$field.'-'.$row['id']]))
73      {
74        $data[$field] = strip_tags($_POST[$field.'-'.$row['id']]);
75      }
76    }
77
78    if ($conf['allow_html_descriptions'])
79    {
80      $data['comment'] = @$_POST['description-'.$row['id']];
81    }
82    else
83    {
84      $data['comment'] = strip_tags(@$_POST['description-'.$row['id']]);
85    }
86
87    if (isset($_POST['date_creation_action-'.$row['id']]))
88    {
89      if ('set' == $_POST['date_creation_action-'.$row['id']])
90      {
91        $data['date_creation'] =
92          $_POST['date_creation_year-'.$row['id']]
93            .'-'.$_POST['date_creation_month-'.$row['id']]
94            .'-'.$_POST['date_creation_day-'.$row['id']];
95      }
96      else if ('unset' == $_POST['date_creation_action-'.$row['id']])
97      {
98        $data['date_creation'] = '';
99      }
100    }
101    else
102    {
103      $data['date_creation'] = $row['date_creation'];
104    }
105
106    array_push($datas, $data);
107
108    // tags management
109    if (isset($_POST[ 'tags-'.$row['id'] ]))
110    {
111      $tag_ids = get_tag_ids($_POST[ 'tags-'.$row['id'] ]);
112      set_tags($tag_ids, $row['id']);
113    }
114  }
115
116  mass_updates(
117    IMAGES_TABLE,
118    array(
119      'primary' => array('id'),
120      'update' => array('name','author','level','comment','date_creation')
121      ),
122    $datas
123    );
124
125  array_push($page['infos'], l10n('Photo informations updated'));
126}
127
128// +-----------------------------------------------------------------------+
129// |                             template init                             |
130// +-----------------------------------------------------------------------+
131
132$template->set_filenames(
133  array('batch_manager_unit' => 'batch_manager_unit.tpl'));
134
135$base_url = PHPWG_ROOT_PATH.'admin.php';
136
137$month_list = $lang['month'];
138$month_list[0]='------------';
139ksort($month_list);
140
141$template->assign(
142  array(
143    'U_ELEMENTS_PAGE' => $base_url.get_query_string_diff(array('display','start')),
144    'F_ACTION'=>$base_url.get_query_string_diff(array()),   
145    'month_list' => $month_list,
146    'level_options' => get_privacy_level_options(),
147    )
148  );
149
150// +-----------------------------------------------------------------------+
151// |                        global mode thumbnails                         |
152// +-----------------------------------------------------------------------+
153
154// how many items to display on this page
155if (!empty($_GET['display']))
156{
157  if ('all' == $_GET['display'])
158  {
159    $page['nb_images'] = count($page['cat_elements_id']);
160  }
161  else
162  {
163    $page['nb_images'] = intval($_GET['display']);
164  }
165}
166else
167{
168  $page['nb_images'] = 5;
169}
170
171
172
173if (count($page['cat_elements_id']) > 0)
174{
175  $nav_bar = create_navigation_bar(
176    $base_url.get_query_string_diff(array('start')),
177    count($page['cat_elements_id']),
178    $page['start'],
179    $page['nb_images']
180    );
181  $template->assign(array('navbar' => $nav_bar));
182
183  // tags
184  $all_tags = get_all_tags();
185
186  $element_ids = array();
187
188  $is_category = false;
189  if (isset($_SESSION['bulk_manager_filter']['category'])
190      and !isset($_SESSION['bulk_manager_filter']['category_recursive']))
191  {
192    $is_category = true;
193  }
194
195  if (isset($_SESSION['bulk_manager_filter']['prefilter'])
196      and 'duplicates' == $_SESSION['bulk_manager_filter']['prefilter'])
197  {
198    $conf['order_by'] = ' ORDER BY file, id';
199  }
200
201
202  $query = '
203SELECT id,path,tn_ext,name,date_creation,comment,author,level,file
204  FROM '.IMAGES_TABLE;
205 
206  if ($is_category)
207  {
208    $category_info = get_cat_info($_SESSION['bulk_manager_filter']['category']);
209   
210    $conf['order_by'] = $conf['order_by_inside_category'];
211    if (!empty($category_info['image_order']))
212    {
213      $conf['order_by'] = ' ORDER BY '.$category_info['image_order'];
214    }
215
216    $query.= '
217    JOIN '.IMAGE_CATEGORY_TABLE.' ON id = image_id';
218  }
219
220  $query.= '
221  WHERE id IN ('.implode(',', $page['cat_elements_id']).')';
222
223  if ($is_category)
224  {
225    $query.= '
226    AND category_id = '.$_SESSION['bulk_manager_filter']['category'];
227  }
228
229  $query.= '
230  '.$conf['order_by'].'
231  LIMIT '.$page['nb_images'].' OFFSET '.$page['start'].'
232;';
233  $result = pwg_query($query);
234
235  while ($row = pwg_db_fetch_assoc($result))
236  {
237    array_push($element_ids, $row['id']);
238
239    $src = get_thumbnail_url($row);
240
241    // creation date
242    if (!empty($row['date_creation']))
243    {
244      list($year,$month,$day) = explode('-', $row['date_creation']);
245    }
246    else
247    {
248      list($year,$month,$day) = array('',0,0);
249    }
250
251    $query = '
252SELECT
253    tag_id,
254    name AS tag_name
255  FROM '.IMAGE_TAG_TABLE.' AS it
256    JOIN '.TAGS_TABLE.' AS t ON t.id = it.tag_id
257  WHERE image_id = '.$row['id'].'
258;';
259    $tag_selection = get_taglist($query);
260
261    $template->append(
262      'elements',
263      array(
264        'ID' => $row['id'],
265        'TN_SRC' => $src,
266        'FILE_SRC' => $row['path'],
267        'LEGEND' => !empty($row['name']) ?
268            $row['name'] : get_name_from_file($row['file']),
269        'U_EDIT' =>
270            PHPWG_ROOT_PATH.'admin.php?page=picture_modify'.
271            '&amp;image_id='.$row['id'],
272        'NAME' => !empty($row['name'])?$row['name']:'',
273        'AUTHOR' => !empty($row['author'])?htmlspecialchars($row['author']):'',
274        'LEVEL' => !empty($row['level'])?$row['level']:'0',
275        'DESCRIPTION' => !empty($row['comment'])?$row['comment']:'',
276        'DATE_CREATION_YEAR' => $year,
277        'DATE_CREATION_MONTH' => (int)$month,
278        'DATE_CREATION_DAY' => (int)$day,
279        'TAGS' => $tag_selection,
280        )
281      );
282  }
283
284  $template->assign('ELEMENT_IDS', implode(',', $element_ids));
285}
286
287trigger_action('loc_end_element_set_unit');
288
289// +-----------------------------------------------------------------------+
290// |                           sending html code                           |
291// +-----------------------------------------------------------------------+
292
293$template->assign_var_from_handle('ADMIN_CONTENT', 'batch_manager_unit');
294?>
Note: See TracBrowser for help on using the repository browser.