source: branches/2.5/admin/rating.php @ 29922

Last change on this file since 29922 was 19703, checked in by plg, 12 years ago

update Piwigo headers to 2013 (the end of the world didn't occur as expected on r12922)

  • Property svn:eol-style set to LF
File size: 8.0 KB
Line 
1<?php
2// +-----------------------------------------------------------------------+
3// | Piwigo - a PHP based photo gallery                                    |
4// +-----------------------------------------------------------------------+
5// | Copyright(C) 2008-2013 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
24if (!defined('PHPWG_ROOT_PATH'))
25{
26  die ("Hacking attempt!");
27}
28
29include_once(PHPWG_ROOT_PATH.'admin/include/functions.php');
30
31// +-----------------------------------------------------------------------+
32// | Check Access and exit when user status is not ok                      |
33// +-----------------------------------------------------------------------+
34check_status(ACCESS_ADMINISTRATOR);
35
36
37include_once(PHPWG_ROOT_PATH.'admin/include/tabsheet.class.php');
38$tabsheet = new tabsheet();
39$tabsheet->set_id('rating');
40$tabsheet->select('rating');
41$tabsheet->assign();
42
43// +-----------------------------------------------------------------------+
44// |                            initialization                             |
45// +-----------------------------------------------------------------------+
46if (isset($_GET['start']) and is_numeric($_GET['start']))
47{
48  $start = $_GET['start'];
49}
50else
51{
52  $start = 0;
53}
54
55$elements_per_page=10;
56if (isset($_GET['display']) and is_numeric($_GET['display']))
57{
58  $elements_per_page = $_GET['display'];
59}
60
61$order_by_index=0;
62if (isset($_GET['order_by']) and is_numeric($_GET['order_by']))
63{
64  $order_by_index = $_GET['order_by'];
65}
66
67$page['user_filter'] = '';
68if (isset($_GET['users']))
69{
70  if ($_GET['users'] == 'user')
71  {
72    $page['user_filter'] = ' AND r.user_id <> '.$conf['guest_id'];
73  }
74  elseif ($_GET['users'] == 'guest')
75  {
76    $page['user_filter'] = ' AND r.user_id = '.$conf['guest_id'];
77  }
78}
79
80if (isset($_GET['del']))
81{
82  include_once(PHPWG_ROOT_PATH.'include/functions_rate.inc.php');
83  $del_params = urldecode( $_GET['del'] );
84  parse_str($del_params, $vars);
85  if ( !is_numeric($vars['e']) or !is_numeric($vars['u']) )
86  {
87    die('Hacking attempt');
88  }
89  $query = '
90DELETE FROM '. RATE_TABLE .'
91WHERE element_id=' . $vars['e'] . '
92AND user_id=' . $vars['u'] . '
93AND anonymous_id=\'' . $vars['a'] . '\'
94;';
95  pwg_query($query);
96  update_rating_score( $vars['e'] );
97}
98
99$users = array();
100$query = '
101SELECT '.$conf['user_fields']['username'].' as username, '.$conf['user_fields']['id'].' as id
102  FROM '.USERS_TABLE.'
103;';
104$result = pwg_query($query);
105while ($row = pwg_db_fetch_assoc($result))
106{
107  $users[$row['id']]=stripslashes($row['username']);
108}
109
110
111$query = 'SELECT COUNT(DISTINCT(r.element_id))
112FROM '.RATE_TABLE.' AS r
113WHERE 1=1'. $page['user_filter'];
114list($nb_images) = pwg_db_fetch_row(pwg_query($query));
115
116
117// +-----------------------------------------------------------------------+
118// |                             template init                             |
119// +-----------------------------------------------------------------------+
120
121$template->set_filename('rating', 'rating.tpl');
122
123$template->assign(
124  array(
125    'navbar' => create_navigation_bar(
126      PHPWG_ROOT_PATH.'admin.php'.get_query_string_diff(array('start','del')),
127      $nb_images,
128      $start,
129      $elements_per_page
130      ),
131    'F_ACTION' => PHPWG_ROOT_PATH.'admin.php',
132    'DISPLAY' => $elements_per_page,
133    'NB_ELEMENTS' => $nb_images,
134    )
135  );
136
137
138
139$available_order_by= array(
140    array(l10n('Rate date'), 'recently_rated DESC'),
141    array(l10n('Rating score'), 'score DESC'),
142    array(l10n('Average rate'), 'avg_rates DESC'),
143    array(l10n('Number of rates'), 'nb_rates DESC'),
144    array(l10n('Sum of rates'), 'sum_rates DESC'),
145    array(l10n('File name'), 'file DESC'),
146    array(l10n('Creation date'), 'date_creation DESC'),
147    array(l10n('Post date'), 'date_available DESC'),
148  );
149
150for ($i=0; $i<count($available_order_by); $i++)
151{
152  $template->append(
153    'order_by_options',
154    $available_order_by[$i][0]
155    );
156}
157$template->assign('order_by_options_selected', array($order_by_index) );
158
159
160$user_options = array(
161  'all'   => l10n('all'),
162  'user'  => l10n('Users'),
163  'guest' => l10n('Guests'),
164  );
165
166$template->assign('user_options', $user_options );
167$template->assign('user_options_selected', array(@$_GET['users']) );
168
169
170$query = '
171SELECT i.id,
172    i.path,
173    i.file,
174    i.representative_ext,
175    i.rating_score       AS score,
176    MAX(r.date)          AS recently_rated,
177    ROUND(AVG(r.rate),2) AS avg_rates,
178    COUNT(r.rate)        AS nb_rates,
179    SUM(r.rate)          AS sum_rates
180  FROM '.RATE_TABLE.' AS r
181    LEFT JOIN '.IMAGES_TABLE.' AS i ON r.element_id = i.id
182  WHERE 1 = 1 ' . $page['user_filter'] . '
183  GROUP BY i.id,
184        i.path,
185        i.file,
186        i.representative_ext,
187        i.rating_score,
188        r.element_id
189  ORDER BY ' . $available_order_by[$order_by_index][1] .'
190  LIMIT '.$elements_per_page.' OFFSET '.$start.'
191;';
192
193$images = array();
194$result = pwg_query($query);
195while ($row = pwg_db_fetch_assoc($result))
196{
197  array_push($images, $row);
198}
199
200$template->assign( 'images', array() );
201foreach ($images as $image)
202{
203  $thumbnail_src = DerivativeImage::thumb_url($image);
204
205  $image_url = get_root_url().'admin.php?page=photo-'.$image['id'];
206
207  $query = 'SELECT *
208FROM '.RATE_TABLE.' AS r
209WHERE r.element_id='.$image['id'] . '
210ORDER BY date DESC;';
211  $result = pwg_query($query);
212  $nb_rates = pwg_db_num_rows($result);
213
214  $tpl_image = 
215     array(
216       'U_THUMB' => $thumbnail_src,
217       'U_URL' => $image_url,
218                         'SCORE_RATE' => $image['score'],
219       'AVG_RATE' => $image['avg_rates'],
220       'SUM_RATE' => $image['sum_rates'],
221       'NB_RATES' => (int)$image['nb_rates'],
222       'NB_RATES_TOTAL' => (int)$nb_rates,
223       'FILE' => $image['file'],
224       'rates'  => array()
225   );
226
227  while ($row = pwg_db_fetch_assoc($result))
228  {
229
230    $url_del = PHPWG_ROOT_PATH.'admin.php'.
231                get_query_string_diff(array('del'));
232
233    $del_param = 'e='.$image['id'].
234                 '&u='.$row['user_id'].
235                 '&a='.$row['anonymous_id'];
236
237    $url_del .= '&amp;del='.urlencode(urlencode($del_param));
238
239    if ( isset($users[$row['user_id']]) )
240    {
241      $user_rate = $users[$row['user_id']];
242    }
243    else
244    {
245      $user_rate = '? '. $row['user_id'];
246    }
247    if ( strlen($row['anonymous_id'])>0 )
248    {
249      $user_rate .= '('.$row['anonymous_id'].')';
250    }
251
252    $tpl_image['rates'][] =
253       array(
254         'DATE' => /*format_date*/($row['date']),
255         'RATE' => $row['rate'],
256         'USER' => $user_rate,
257         'U_DELETE' => $url_del
258     );
259  }
260  $template->append( 'images', $tpl_image );
261}
262
263// +-----------------------------------------------------------------------+
264// |                           sending html code                           |
265// +-----------------------------------------------------------------------+
266$template->assign_var_from_handle('ADMIN_CONTENT', 'rating');
267?>
Note: See TracBrowser for help on using the repository browser.