source: extensions/ConcoursPhoto/admin/audit.php @ 4428

Last change on this file since 4428 was 4428, checked in by tiico, 14 years ago

[ConcoursPhoto] Correct some bugs. Add audit and user audit page.

File size: 8.3 KB
Line 
1<?php
2
3// file to audit concours configutation and votes
4// --> if _GET['concours'] ==> concours audit (with id)
5//              if _GET['user_id'] ==> audit for a user
6// --> else ==> list concours to be audited
7
8if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
9include_once(CONCOURS_PATH . 'admin/functions.inc.php');
10
11global $template;
12
13
14if (isset($_POST['user_list']))
15    $user_id = $_POST['user_list'];
16else 
17    $user_id = 0;
18   
19//echo "USER_ID=".$user_id;
20   
21// Get the concours id if present
22if (isset($_GET['concours']))
23{
24        $concours_id = $_GET['concours'];
25        // Get informations from base for concours_id
26        $concours = new Concours($concours_id);
27
28    // Get group authorized to participate
29    $users = array();     // contain {id;username} or each
30    $groups = $concours->concours_infos['groups'];
31    $query = 'SELECT user_id, username FROM ' . USER_GROUP_TABLE 
32    .' INNER JOIN ' . USERS_TABLE .' ON id = user_id'
33    .($groups != NULL ? ' WHERE group_id = '.$groups : '')
34    .' ORDER BY username ASC'
35    .';';
36if ($concours->debug)           echo $query."\n";
37    $result = pwg_query($query);
38    while ($row = mysql_fetch_assoc($result))
39    {
40      array_push($users, $row);
41    }       
42
43    // Add user list
44    $template->append('user_list',
45        array(  'ID' => '0',
46                'NAME' => l10n('all_users'),
47                'SELECTED' => ($user_id == 0 ? 'selected' : '')));
48
49    foreach ( $users as $userid ) //on parcours le tableau
50    {
51        $template->append('user_list',
52            array(      'ID' => $userid['user_id'],
53                    'NAME' => $userid['username'],
54                    'SELECTED' => ($user_id == $userid['user_id'] ? 'selected' : '')));
55    }
56
57   
58    // Send concours info to template
59    $template->assign( 'CONCOURS', array(
60            'ID'        => $concours->concours_infos['id'],
61            'NAME'      => $concours->concours_infos['name'],
62            'DESCR'     => $concours->concours_infos['descr'],
63            'BEGIN_DATE'        => $concours->concours_infos['begin_date'],
64            'END_DATE'  => $concours->concours_infos['end_date'],
65            'METHOD'    => l10n("concours_method".$concours->concours_infos['method'])
66            ));
67
68// Step 1 : recover all the picture for the concours
69// Step 2 :For each picture, recover the global note, the number of vote, the actual rank (?),
70// Step 3 : Display theses informations
71       
72       
73        // nb of users who vote for each image (for a selected concours
74        $query = 'SELECT img_id, COUNT(DISTINCT user_id) AS NBVOTE FROM ' . CONCOURS_DATA_TABLE 
75        .' WHERE id_concours = '.($concours_id !== null ? $concours_id : $this->concours_id )
76        .' GROUP BY img_id '
77        .';';
78                       
79        $result = pwg_query($query);
80        $nbvotes = array();
81        while ($row = mysql_fetch_assoc($result))
82        {
83                $nbvotes[$row['img_id']] = $row['NBVOTE'];
84        }
85
86        // Get all the users who have notes for the concours
87        $query = 'SELECT distinct(user_id), USER.username'
88        .' FROM ' .CONCOURS_DATA_TABLE
89        .' INNER JOIN ' . USERS_TABLE.' AS USER on USER.id = user_id'
90        .' WHERE id_concours = '.$concours_id
91        .' ORDER BY username ASC'
92        .';';
93        $result = pwg_query($query);
94        // For each user
95        $user_list = array();
96        while ($row2 = mysql_fetch_assoc($result))
97                array_push($user_list, $row2); 
98
99
100
101        // Get criteria list and
102        $criteria_list = "";
103        $firstcriterias = $concours->get_firstlevel_criterias($concours_id);
104        $ident1 = 1;
105        $criteria_number = 0;   // total number of criterias
106        foreach ($firstcriterias as $criteria)
107        {
108                // format (id:name)
109                $criteria_list .= (strlen($criteria_list) ? "," : "")
110                                                        .$ident1.":".$criteria['name']
111                                                        ."(id=".$criteria['criteria_id'].")";
112                // First wit sub criterias
113                if ($concours->is_criterias_contains_sub($criteria['criteria_id'],$concours_id ))
114                {
115                        $ident2 = 1;
116                        $secondcriterias = $concours->get_subcriterias($criteria['criteria_id'], $concours_id );
117                        foreach ($secondcriterias as $subcriteria)
118                        {
119                                // format (id:name)
120                                $criteria_list .= (strlen($criteria_list) ? "," : "")
121                                                                  .$ident1.".".$ident2
122                                                                  .":".$subcriteria['name']."(id=".$subcriteria['criteria_id'].")";
123                                $ident2 ++;
124                                $criteria_number ++;
125                        }
126                }
127                else
128                $criteria_number ++;
129                $ident1++;
130        }
131               
132
133
134        // Get images for all the selected cconcours
135               
136        $category = $concours->concours_infos['category'];
137
138        $query = 'SELECT DISTINCT(img.id), img.name, img.file, img.path, img.tn_ext, img.author ,
139                          ic.category_id, cat.name AS catname'  //, conc.note'
140                        .' FROM ' . IMAGES_TABLE.' AS img'
141                        .' INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON img.id = ic.image_id'
142                        .' INNER JOIN '.CATEGORIES_TABLE.' AS cat ON ic.category_id = cat.id'
143//                      .' INNER JOIN '.CONCOURS_RESULT_TABLE.' AS conc ON conc.img_id = img.id'
144                        .' WHERE ic.category_id = '.$concours->concours_infos['category']
145//                      .' ORDER by note DESC
146                        .';';
147
148        $result = pwg_query($query);
149//      echo $query;
150        $concours_img = array();
151
152        // Recover all pictures and informations (global note
153        while ($row = mysql_fetch_assoc($result))
154        {
155                // link on picture.php page
156                set_make_full_url();
157                if ( isset($row['category_id']) & isset($row['catname']) ) 
158                {
159                        $url = duplicate_picture_url(
160                        array(
161                        'image_id' => $row['id'],
162                        'image_file' => $row['file'],
163                        'category' => array(
164                                                        'id' => $row['category_id'],
165                                                        'name' => $row['catname'],
166                                                        'permalink' => ''
167                                                  )
168                        ),
169                        array('start')
170                        );
171                }
172                else
173                {
174                        $url = duplicate_picture_url(
175                          array(
176                                'image_id' => $row['id'],
177                                'image_file' => $row['file']
178                          ),
179                          array('start')
180                        );
181                }       
182                unset_make_full_url();
183               
184                // Get note (depending on the calling : global OR user)
185                $user_note = array();
186                $globalnote = 0;
187                if ($user_id != 0)      // for user
188                {
189                        $globalnote = $concours->get_img_globalnote_user($row['id'], $concours_id, $user_id);
190                        $user_note = $concours->get_img_note_user($row['id'], $concours_id, $user_id);
191                }
192                else    // global
193                {
194                        foreach ($user_list as $userid)
195                        $globalnote += $concours->get_img_globalnote_user($row['id'], null, $userid['user_id']);
196                }
197
198               
199                $concours_img[$row['id']]  = array(
200                                'img_id' => $row['id'],
201                                'name'  => $row['name'],
202                                'author'=> $row['author'],
203                                'file'  => $row['file'],
204                                'rang'  => 0,
205                                'thumb' => get_thumbnail_url($row),
206                                'url'   => $url,
207                                'note'  => $globalnote,
208                'moyenne'       => (isset($nbvotes[$row['id']]) && $nbvotes[$row['id']] !=0  ? $globalnote/(int)$nbvotes[$row['id']] : 0),
209                                'nbvotant' => isset($nbvotes[$row['id']]) ? $nbvotes[$row['id']] : 0
210                                );
211
212        }
213        /*
214        foreach ($concours_img  as $key => $value)
215        {
216                echo
217                                'img_id => '.$concours_img[$key]['img_id']
218                                .'author => '.$concours_img[$key]['author']
219                                .'name  => '.$concours_img[$key]['name']
220                                .'file  => '.$concours_img[$key]['file']
221                                .'rang  => '.$concours_img[$key]['rang']
222                                .'thumb => '.$concours_img[$key]['thumb']
223                                .'url   => '.$concours_img[$key]['url']
224                                .'note  => '.$concours_img[$key]['note'];
225        }
226        */
227
228        // Ordre image by "note" or "moyenne"
229    if ($concours->concours_infos['method'] == 1) // sum method
230        $concours_img = array_sort($concours_img, 'note', false);
231    elseif ($concours->concours_infos['method'] == 2) // moy method
232        $concours_img = array_sort($concours_img, 'moyenne', false);
233   
234        $rang = 1;
235        foreach ($concours_img  as $key => $value) 
236        {
237           $concours_img[$key]['rang'] = $rang;
238                $rang++;
239
240                $template->append( 'concours_note', array(
241                                'img_id' => $concours_img[$key]['img_id'],
242                                'author' => $concours_img[$key]['author'],
243                                'name'  => $concours_img[$key]['name'],
244                                'file'  => $concours_img[$key]['file'],
245                                'rang'  => $concours_img[$key]['rang'],
246                                'thumb' => $concours_img[$key]['thumb'],
247                                'url'   => $concours_img[$key]['url'],
248                                'note'  => $concours_img[$key]['note'],
249                'moyenne'       => $concours_img[$key]['moyenne'],
250                                'nbvotant' => $concours_img[$key]['nbvotant']
251
252                        ));
253        }
254
255}
256
257
258
259
260if (isset($_POST['submit'])) { 
261}
262
263
264$template->set_filename('plugin_admin_content', dirname(__FILE__) . '/template/audit.tpl');
265$template->assign_var_from_handle('ADMIN_CONTENT', 'plugin_admin_content');
266
267
268// Function to sort the array
269// asc =  false ==> descendant
270function array_sort($array, $key, $asc=true)
271{
272        foreach ($array as $i => $o) 
273        {
274           $sort_values[$i] = $array[$i][$key];
275
276        }
277        if ($asc)
278                asort  ($sort_values);
279        else
280                arsort ($sort_values);
281        reset ($sort_values);
282
283
284        while (list ($arr_key, $arr_val) = each ($sort_values)) 
285        {
286                 $sorted_arr[] = $array[$arr_key];
287        }
288
289        unset($array);
290        return $sorted_arr;
291}
292
293
294?>
Note: See TracBrowser for help on using the repository browser.