source: extensions/ConcoursPhoto/include/Concours.class.php @ 4252

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

[Concours[ConcoursPhoto] Add param to mask author on images when a concours is prepared

File size: 42.7 KB
Line 
1<?php
2/*
3 * Plugin Name: ConcoursPhoto
4 * File :  Concours.class.php 
5 */
6 
7global $user;
8
9class Concours
10{
11        var $concours_id = null;
12        var $concours_infos = array();
13       
14/*      var $create_date = null;
15        var $name = null;
16        var $descr = null;
17        var $begin_date = null;
18        var $end_date = null;
19        var $category = null;
20        var $groups = null;
21*/     
22
23        // General configuration parameters
24        var $my_config = array();
25/*
26        active_menubar
27        nbconcours_menubar
28*/
29        var $user_groups = array();
30        var $debug = false;
31       
32        // Class constructor with concours id. Return NULL if not existing or create it
33        function Concours($concours_id = null, $force_creation = NULL)
34        {
35//          $this->get_user_groups();
36                if ($concours_id !== null)
37                {               
38                        $this->concours_id = (int)$concours_id;
39                        $this->get_concours($concours_id);
40                }
41                // Load general parameters
42                $this->load_config();
43        }
44
45       
46        // Load general configuration from config_database
47        function load_config() 
48        {
49
50                $query = '
51                  SELECT value
52                  FROM '.CONFIG_TABLE.'
53                  WHERE param = \'concoursphoto\'
54                ;';
55
56                $result = pwg_query($query);
57
58            if($result) 
59                {
60                     $row = mysql_fetch_row($result);
61                     if(is_string($row[0])) 
62                         {
63                        $this->my_config = unserialize(($row[0]));
64                     }
65            }
66                $this->load_default_config();
67        }
68       
69        // Initialize default values of params
70        private function load_default_config()
71        {
72            include CONCOURS_INC_PATH.'default_values.inc.php';
73            foreach ($concours_default_values as $key => $value) 
74                {
75                    if (!isset($this->my_config[$key]))         $this->my_config[$key] = $value;
76                }
77        }
78
79        // Save  general configuration to config_database
80        function save_config()
81        {
82                $query = '
83                  REPLACE INTO '.CONFIG_TABLE.'
84                  VALUES(
85                        \'concoursphoto\',
86                        \''.serialize($this->my_config).'\',
87                        \'Configuration Concours Photo\')
88                ;';
89
90                $result = pwg_query($query);
91
92                if($result) 
93                  return true;
94                else
95                  return false;
96        }
97       
98       
99        // Retrieve user groups
100        function get_user_groups()
101        {
102                global $user;
103if ($this->debug)
104foreach ($user as $id=>$val)
105{
106        if (is_array($val))
107                foreach ($val as $id2=>$val2)
108                        echo "user[".$id."][".$id2."]=".$val2."\n";
109        else
110                echo "user[".$id."]=".$val."\n";
111}
112
113                $query = 'SELECT group_id FROM ' . USER_GROUP_TABLE . ' WHERE user_id = ' . $user['id'] . ';';
114if ($this->debug)               echo $query."\n";
115                $result = pwg_query($query);
116                while ($row = mysql_fetch_assoc($result))
117                {
118                  array_push($this->user_groups, $row['group_id']);
119                }
120               
121if ($this->debug)
122foreach ($this->user_groups as $gr)
123        echo "Group=".$gr."\n";
124
125        }
126
127        // create a concours and store it to db.
128        // return id for concours.
129        function create_concours()
130        {}
131
132        // Get informations array for  a concours id
133        function get_concours($concours_id = null)
134        {
135                if ($concours_id!== null or $this->concours_id !== null)
136                {
137                        $query = '
138                                SELECT *
139                                FROM ' . CONCOURS_TABLE .'
140                                WHERE id =' . ($concours_id !== NULL ? $concours_id : $this->concours_id) . '
141                                LIMIT 1
142                        ';
143
144                        $result = pwg_query($query);
145                        if ($result)
146                                $this->concours_infos = mysql_fetch_assoc($result);
147                }
148
149        }
150
151        // save informations on database for a concours_id
152        function save_concours($concours_id = null)
153        {
154                if ($concours_id!== null or $this->concours_id !== null)
155                {
156                                                       
157                        $query = "INSERT INTO " . CONCOURS_TABLE . "
158                                                ( `id`,
159                                                `create_date`,
160                                                `name`,
161                                                `descr`,
162                                                `begin_date`,
163                                                `end_date`,
164                                                `category`,
165                                                `groups`)
166                                        VALUES (".($concours_id !== NULL ? $concours_id : $this->concours_id).", now(),
167                                                        \"".$this->concours_infos['name']."\", \"".$this->concours_infos['descr']."\",
168                                                        \"".$this->concours_infos['begin_date']."\", \"".$this->concours_infos['end_date']."\",
169                                                        ".$this->concours_infos['category'].", ".$this->concours_infos['groups'].");";
170                        if (pwg_query($query) != null)
171                                return true;
172                        else
173                                return false;
174                }
175                else           
176                        return false;
177        }
178
179        // update informations on database for a concours_id
180        function update_concours($concours_id = null)
181        {
182                if ($concours_id!== null or $this->concours_id !== null)
183                {
184
185                        $query = "UPDATE " . CONCOURS_TABLE . "
186                                                SET
187                                                create_date = now(),
188                                                name = \"".$this->concours_infos['name']."\",
189                                                descr = \"".$this->concours_infos['descr']."\",
190                                                begin_date = \"".$this->concours_infos['begin_date']."\",
191                                                end_date = \"".$this->concours_infos['end_date']."\",
192                                                category = ".$this->concours_infos['category'].",
193                                                groups = ".$this->concours_infos['groups']."
194                                                WHERE id = ".($concours_id !== NULL ? $concours_id : $this->concours_id)."
195                                                ;";
196                        pwg_query($query);
197                        if (pwg_query($query) != null)
198                                return true;
199                        else
200                                return false;
201                }
202                else           
203                        return false;
204       
205        }
206       
207        // delete concours from db (and all sub informations such as details, vote and result
208        function delete_concours($concours_id = null)
209        {
210                if ($concours_id!== null or $this->concours_id !== null)
211                {
212               
213                        $query = '
214                                DELETE
215                                FROM ' . CONCOURS_TABLE .'
216                                WHERE id =' . ($concours_id !== null ? $concours_id : $this->concours_id ) . '
217                                ';
218                        pwg_query($query);
219                        $query = '
220                                DELETE
221                                FROM ' . CONCOURS_DETAIL_TABLE .'
222                                WHERE id_concours =' . ($concours_id !== null ? $concours_id : $this->concours_id ) . '
223                                ';
224                        pwg_query($query);
225                        $query = '
226                                DELETE
227                                FROM ' . CONCOURS_DATA_TABLE .'
228                                WHERE id_concours =' . ($concours_id !== null ? $concours_id : $this->concours_id ) . '
229                                ';
230                        pwg_query($query);
231                        $query = '
232                                DELETE
233                                FROM ' . CONCOURS_RESULT_TABLE .'
234                                WHERE id_concours =' . ($concours_id !== null ? $concours_id : $this->concours_id ) . '
235                                ';
236                        pwg_query($query);
237                }
238                else
239                        return false;
240               
241        }
242
243                       
244        // today's date is between open and close date of concours?
245        function is_active($concours_id = NULL)
246        {
247                if ($concours_id!== null or $this->concours_id !== null)
248                {
249                        $query = '
250                                SELECT id
251                                FROM ' . CONCOURS_TABLE .'
252                                WHERE id =' . ($concours_id !== NULL ? $concours_id : $this->concours_id) . '
253                                AND time_to_sec(TIMEDIFF(begin_date,now())) < 0
254                                AND time_to_sec(TIMEDIFF(now(), end_date)) < 0
255                                ';
256
257                        $result = pwg_query($query);
258if ($this->debug) echo $query."\n";
259                        if ($result != NULL)
260                                return true;
261                        else
262                                return false;
263                }
264                else
265                        return NULL;
266        }
267
268        // today's date is not between open and close date of concours?
269        function is_closed($concours_id = NULL)
270        {
271                if ($concours_id!== null or $this->concours_id !== null)
272                {
273                        $query = '
274                                SELECT id
275                                FROM ' . CONCOURS_TABLE .'
276                                WHERE id =' . ($concours_id !== NULL ? $concours_id : $this->concours_id) . '
277                                AND time_to_sec(TIMEDIFF(now(), end_date)) > 0
278                                ';
279
280                        $result = pwg_query($query);
281if ($this->debug) echo $query."\n";
282                        if ($result != NULL)
283                                return true;
284                        else
285                                return false;
286                }
287                else
288                        return NULL;
289        }
290
291
292        // Get criterias that are stored on db for default mode (concours_id = 0)
293        function get_default_criterias()
294        {
295                $criterias = $this->get_criterias_list(0);
296                $query = 'SELECT IF(MAX(id)+1 IS NULL, 1, MAX(id)+1) AS next_element_id
297                                        FROM ' . CONCOURS_DETAIL_TABLE . ' ;';
298                list($next_element_id) = mysql_fetch_array(pwg_query($query));
299
300                foreach ($criterias as $criteria)
301                {               
302if ($this->debug)                       echo "NEXT =".$next_element_id."\n";
303                        $query = 'INSERT INTO '.CONCOURS_DETAIL_TABLE.'
304                                                (id, id_concours, criteria_id, name, descr, min_value, max_value, ponderation, uppercriteria)'
305                                                .'VALUES ('.$next_element_id.', '.$this->concours_id.', '
306                                                .$criteria['criteria_id'].', "'.$criteria['name'].'", "'
307                                                .$criteria['descr'].'", '.$criteria['min_value'].', '
308                                                .$criteria['max_value'].', '.$criteria['ponderation'].', '
309                                                .($criteria['uppercriteria'] ? $criteria['uppercriteria'] : 'NULL').')
310                                                ;';
311                       
312                                $result = pwg_query($query);
313if ($this->debug)       echo $query;                   
314                        $next_element_id = $next_element_id +1;
315                }
316        }
317
318        // Get criterias from a concours
319        function get_criterias_list($concours_id = NULL)
320        {
321                $criteria_list = array();
322                if ($concours_id!== null or $this->concours_id !== null)
323                {
324                        $query = '
325                                SELECT *
326                                FROM ' . CONCOURS_DETAIL_TABLE .'
327                                WHERE id_concours =' . ($concours_id !== null ? $concours_id : $this->concours_id ) . '
328                                ORDER BY criteria_id
329                                ';
330                        $result = pwg_query($query);
331if ($this->debug) echo $query."\n";
332                        while ($row = mysql_fetch_assoc($result))
333                        {
334                                array_push($criteria_list, $row);
335                        }
336                        return $criteria_list;
337                }
338                else
339                        return $criteria_list;
340        }
341
342        // Get list of the fist level criterias
343        function get_firstlevel_criterias($concours_id = NULL)
344        {
345                $criteria_list = array();
346                if ($concours_id!== null or $this->concours_id !== null)
347                {
348                        $query = '
349                                SELECT *
350                                FROM ' . CONCOURS_DETAIL_TABLE .'
351                                WHERE id_concours =' . ($concours_id !== null ? $concours_id : $this->concours_id ) . '
352                                AND uppercriteria IS NULL
353                                ORDER BY criteria_id
354                                ';
355                        $result = pwg_query($query);
356if ($this->debug) echo $query."\n";
357                        while ($row = mysql_fetch_assoc($result))
358                        {
359if ($this->debug)                       echo "criteria_id=".$row['criteria_id']."\n";
360                                array_push($criteria_list, $row);
361                        }
362                        return $criteria_list;
363                }
364                else
365                        return $criteria_list;
366        }
367
368        // check if a criteria contains subcriterias
369        function is_criterias_contains_sub($criteria_id, $concours_id = NULL)
370        {
371                if ($concours_id!== null or $this->concours_id !== null)
372                {
373                        $query = '
374                                SELECT criteria_id
375                                FROM ' . CONCOURS_DETAIL_TABLE .'
376                                WHERE id_concours =' . ($concours_id !== null ? $concours_id : $this->concours_id ) . '
377                                AND uppercriteria = '.$criteria_id.'
378                                ';
379                        $result = pwg_query($query);
380if ($this->debug) echo $query."\n";
381                        // mini 1 line
382                        if(mysql_fetch_assoc($result))
383                                return true;
384                        else
385                                return false;
386                }
387                return NULL;
388        }
389       
390       
391        // Get list of subcriterias from a criteria_id
392        function get_subcriterias($criteria_id, $concours_id = NULL)
393        {
394                $criteria_list = array();
395                if ($concours_id!== null or $this->concours_id !== null)
396                {
397                        $query = '
398                                SELECT *
399                                FROM ' . CONCOURS_DETAIL_TABLE .'
400                                WHERE id_concours =' . ($concours_id !== null ? $concours_id : $this->concours_id ) . '
401                                AND uppercriteria = '.$criteria_id.'
402                                ORDER BY criteria_id
403                                ';
404                        $result = pwg_query($query);
405if ($this->debug) echo $query."\n";
406                        while ($row = mysql_fetch_assoc($result))
407                        {
408                                array_push($criteria_list, $row);
409                        }
410                        return $criteria_list;
411                }
412                else
413                        return $criteria_list;
414        }
415       
416        // Get a detail from a criteria
417        function get_criteria($criteria_id, $concours_id = NULL)
418        {
419                $criteria = array();
420
421                if ($concours_id!== null or $this->concours_id !== null)
422                {
423                        $query = '
424                                SELECT *
425                                FROM ' . CONCOURS_DETAIL_TABLE .'
426                                WHERE id_concours = '. ($concours_id !== null ? $concours_id : $this->concours_id ) . '
427                                AND criteria_id =' . $criteria_id . '
428                                ';
429                        $result = pwg_query($query);
430        if ($this->debug) echo $query."\n";
431        $criteria = mysql_fetch_assoc($result);
432        /*              while ($row = mysql_fetch_assoc($result))
433                        {
434                                array_push($criteria, $row);
435                        }
436*/             
437                }
438                return $criteria;
439       
440        }
441
442        // Get a detail from a criteria
443        function get_criteria_by_id($id)
444        {
445                $criteria = array();
446
447                $query = '
448                        SELECT *
449                        FROM ' . CONCOURS_DETAIL_TABLE .'
450                        WHERE id =' . $id . '
451                        ';
452                $result = pwg_query($query);
453if ($this->debug) echo $query."\n";
454$criteria = mysql_fetch_assoc($result);
455/*              while ($row = mysql_fetch_assoc($result))
456                {
457                        array_push($criteria, $row);
458                }
459*/             
460        return $criteria;
461       
462        }
463
464        // Add a criteria to a concours
465        // Datas is an array and contains all infos.
466        // Return the criteria id
467        function add_criteria($datas, $concours_id = NULL)
468        {
469                // determines the criteria_id
470                if ($concours_id!== null or $this->concours_id !== null)
471                {
472                        $query = 'SELECT IF(MAX(id)+1 IS NULL, 1, MAX(id)+1) AS next_element_id
473                                                FROM ' . CONCOURS_DETAIL_TABLE . ' ;';
474                        list($next_element_id) = mysql_fetch_array(pwg_query($query));
475                        $query = 'SELECT IF(MAX(criteria_id)+1 IS NULL, 1, MAX(criteria_id)+1) AS next_criteria_id
476                                                FROM ' . CONCOURS_DETAIL_TABLE . '
477                                          WHERE id_concours = '.($concours_id !== null ? $concours_id : $this->concours_id ) . ' ;';
478                        list($next_criteria_id) = mysql_fetch_array(pwg_query($query));
479                       
480                        $query = '
481                        INSERT INTO ' . CONCOURS_DETAIL_TABLE .'
482                                (`id`,
483                                `id_concours`,
484                                `criteria_id`,
485                                `name`,
486                                `descr`,
487                                `min_value`,
488                                `max_value`,
489                                `ponderation`,
490                                `uppercriteria`)
491                                VALUES (
492                                '.$next_element_id.', '.($concours_id !== null ? $concours_id : $this->concours_id ).',
493                                '.$next_criteria_id.', "'.$datas['name'].'", "'.$datas['descr'].'", '.$datas['min_value'].'
494                                , '.$datas['max_value'].', '.$datas['ponderation'].'
495                                , '.($datas['uppercriteria'] ? $datas['uppercriteria'] : 'NULL').'
496                                );';
497
498                        pwg_query($query);
499                        if ($this->debug) echo $query."\n";
500       
501                }
502        }
503       
504        // Update a criteria to a concours
505        // Datas is an array and contains all infos.
506        function update_criteria($datas, $concours_id = NULL)
507        {
508                // determines the criteria_id
509                if ($concours_id!== null or $this->concours_id !== null)
510                {
511                        $query = '
512                                UPDATE ' . CONCOURS_DETAIL_TABLE .'
513                                SET
514                                name = "'.$datas['name'].'",
515                                descr = "'.$datas['descr'].'",
516                                min_value = '.$datas['min_value'].',
517                                max_value = '.$datas['max_value'].',
518                                '.($datas['uppercriteria'] == false ? '' : 'uppercriteria = '.($datas['uppercriteria'] ? $datas['uppercriteria'].',' : 'NULL ,')).'
519                                ponderation = '.$datas['ponderation'].'
520                                WHERE id = '.$datas['id'].';';
521
522                        pwg_query($query);
523
524                        if ($this->debug) echo $query."\n";
525
526                }               
527        }
528       
529
530        // Delete a criteria from a concours
531        function delete_criteria($criteria_id, $concours_id = NULL)
532        {
533                if ($concours_id!== null or $this->concours_id !== null)
534                {
535               
536                        $query = '
537                                DELETE
538                                FROM ' . CONCOURS_DETAIL_TABLE .'
539                                WHERE id_concours =' . ($concours_id !== null ? $concours_id : $this->concours_id ) . '
540                                AND criteria_id = '.$criteria_id.'
541                                ';
542                        $result = pwg_query($query);
543        if ($this->debug) echo $query."\n";
544                        if($result)
545                                return true;
546                        else
547                                return false;
548                }
549                else
550                        return null;
551
552        }
553       
554        // Delete a criteria (with id) from a concours
555        function delete_criteria_by_id($id)
556        {
557       
558                $query = '
559                        DELETE
560                        FROM ' . CONCOURS_DETAIL_TABLE .'
561                        WHERE id =' . $id . '
562                        ';
563                $result = pwg_query($query);
564if ($this->debug) echo $query."\n";
565
566        }       
567
568        // check if a result is already present in the database
569        function is_result_present($concours_id = null)
570        {
571                // recover all img_id from the category
572                $query = 'SELECT DISTINCT(id_concours)'
573                .' FROM ' .CONCOURS_RESULT_TABLE
574                .' WHERE id_concours = '.($concours_id !== null ? $concours_id : $this->concours_id ).';';
575               
576                $result = pwg_query($query);
577                // For each images
578                if (mysql_fetch_assoc($result))
579                        return true;
580                else
581                        return false;
582       
583        }
584       
585       
586        // After concours is completed (closed date is passed), generate the result and store it to DB
587        function create_result($concours_id = NULL)
588        {
589                // var which contains id=img_id and val =global note
590                $global_note = array();
591                if ($concours_id!== null or $this->concours_id !== null)
592                {
593                        // only for closed concours and not already result generated
594                        if ($this->is_closed($concours_id) AND ! $this->is_result_present($concours_id))
595                        {
596                                $user_id = array();
597                                // vars not initialized
598                                if ($this->concours_infos == array())
599                                        $this->get_concours();
600                                $category = $this->concours_infos['category'];
601
602if ($this->debug)
603        echo "CAT=".$category;
604                                // Get all user_id from a concours
605                                $query = 'SELECT DISTINCT(user_id)'
606                                .' FROM ' .CONCOURS_DATA_TABLE
607                                .' WHERE id_concours = '.($concours_id !== null ? $concours_id : $this->concours_id )
608                                .';';
609                                $result = pwg_query($query);
610if ($this->debug)
611echo $query;
612                                while ($row = mysql_fetch_assoc($result))
613                                {
614                                        array_push($user_id, $row['user_id']);
615                                }
616
617if ($this->debug)
618        foreach ($user_id as $userid)
619                        echo "USER = ".$userid;
620                               
621                               
622                               
623                                // recover all img_id from the category
624                                $query = 'SELECT DISTINCT(image_id)'
625                                .' FROM ' .IMAGE_CATEGORY_TABLE
626                                .' WHERE category_id = '.$category.';';
627                               
628                                $result = pwg_query($query);
629                                // For each images
630                                while ($row = mysql_fetch_assoc($result))
631                                {
632                if ($this->debug)       echo "IMG_ID=".$row['image_id']."\n";
633                                        foreach ($user_id as $i => $userid)
634                                        {
635                                                if (!isset($global_note[$row['image_id']]))
636                                                        $global_note[$row['image_id']] = 0;
637                                                $global_note[$row['image_id']] +=  $this->get_img_globalnote_user($row['image_id'], null, $userid );                   
638                                        }
639                                }
640                                if ($this->debug)
641                                {
642                                        foreach ($global_note as $id => $val)
643                                                echo "Note img ( ".$id.") = ".$val."\n";
644                                }
645                               
646                                // update database and store result into RESULT table
647                                // note = global note
648                                foreach ($global_note as $id => $val)
649                                {
650                                        $query = 'INSERT INTO  ' . CONCOURS_RESULT_TABLE .'(`id_concours`, `img_id`, `date` , `note` )
651                                                        VALUES ('.($concours_id !== null ? $concours_id : $this->concours_id )
652                                                                         .', '.$id 
653                                                                         .', now() '
654                                                                         .', '.$val
655                                                                         .');';
656                                $result = pwg_query($query);
657                                                 
658                                       
659                                }
660                               
661
662                               
663                        }
664                        else
665                                return false;
666                }
667                else
668                        return false;
669        }
670       
671
672        // Check if an image's author is the same as the actual user
673        function check_img_user($img_id)
674        {
675                global $user;
676                $query = '
677                        SELECT author
678                        FROM ' . IMAGES_TABLE .'
679                        WHERE id =' . $img_id . '
680                        ';
681
682                $result = pwg_query($query);
683if ($this->debug) echo $query."\n";
684                if ($result)
685                {
686                        $row = mysql_fetch_assoc($result);
687                        $authorid = get_userid($row['author']);
688                        if ($authorid and ($authorid == $user['id']))
689                                return true;
690                        else
691                                return false;
692                }
693                return false;
694       
695        }
696       
697
698        // Add tpl to picture.php page to display concours informations and vote
699        function display_concours_to_picture()
700        {
701                // Step1 : concours is defined to this category AND concours is open AND user is authorized to access to this category (thru group)
702                // Step1 bis : dont show concours if img_author = user_id
703                // Step 2 : Recover stored informations in db for this user
704                // Step 3 : Complete tpl information
705                // Step 4 : concat tpl
706               
707                global $page, $user, $template;
708
709                // Get user group.
710                $this->get_user_groups();
711
712                $concours = array();
713
714               
715// DEBUG
716if ($this->debug)
717foreach ($page as $id=>$val)
718{
719        if (is_array($val))
720                foreach ($val as $id2=>$val2)
721                        echo "page[".$id."][".$id2."]=".$val2."\n";
722        else
723                echo "page[".$id."]=".$val."\n";
724}
725//  END DEBUG
726                if (($page['section']) == 'categories' AND !empty($page['category']))
727                {
728if ($this->debug)       echo "STEP1\n";
729                        //------------
730                        // Step 1
731           
732            if ($this->my_config['mask_author'] && $this->my_config['mask_author'] == true)
733            {
734                // Request for prepared concours
735                $query = '
736                    SELECT *
737                    FROM ' . CONCOURS_TABLE .'
738                    WHERE category =' . $page['category']['id'] . '
739                    AND time_to_sec(TIMEDIFF(begin_date,now())) > 0
740                                ';
741                $result = pwg_query($query);
742                if ($result)
743                    $template->assign('INFO_AUTHOR',l10n('concours_img_author'));
744            }
745
746           
747                        $query = '
748                                SELECT *
749                                FROM ' . CONCOURS_TABLE .'
750                                WHERE category =' . $page['category']['id'] . '
751                                AND time_to_sec(TIMEDIFF(begin_date,now())) < 0
752                                AND time_to_sec(TIMEDIFF(now(), end_date)) < 0
753                                ';
754
755                        $result = pwg_query($query);
756if ($this->debug) echo $query."\n";
757                        while ($row = mysql_fetch_assoc($result))
758                        {
759                               
760                                if (!empty($row['groups']))
761                                {
762if ($this->debug)       echo "GROUPS=".$row['groups'];                         
763                                        $authorized_groups = explode(',', $row['groups']);
764                                        if (array_intersect($this->user_groups, $authorized_groups) == array()) 
765                                        {
766if ($this->debug)       echo "ERROR GROUPS";
767                                                continue;
768                                        }
769                                        $concours = $row;
770                                }
771
772                        }
773
774if ($this->debug)       echo "STEP1 bis\n";
775                        //------------
776                        // Step 1 bis
777                        // Actual user is  the author of the picture ==>end
778                        if ($this->check_img_user($page['current_item']))
779                                return;
780                       
781
782if ($this->debug)       echo "STEP2\n";
783                        //------------
784                        // Step 2
785                        if ($concours != array())
786                        {
787                                // If user validate the notation
788                                if (isset($_POST['concours_submit']))
789                                {
790                                        $user_note = "";
791                if ($this->debug)                       echo "SUBMIT";
792                                // concat all the notes to save on db
793                               
794                                        $firstcriterias = $this->get_firstlevel_criterias($concours['id']);
795                                        foreach ($firstcriterias as $criteria)
796                                        {
797                                               
798                                                // First without sub criterias
799                                                if (!$this->is_criterias_contains_sub($criteria['criteria_id'],$concours['id'] ))
800                                                {
801                                                        // Check value
802                                                        $value = str_replace(",",".",$_POST[$criteria['criteria_id']]);
803                                                        $value = str_replace(" ","",$value);
804                                                        $value = floatval($value);
805                                                        if ($value < floatval($criteria['min_value']))
806                                                                $value = floatval($criteria['min_value']);
807                                                        if ($value > floatval($criteria['max_value']))
808                                                                $value = floatval($criteria['max_value']);
809
810                                                        $user_note .= (strlen($user_note) != 0 ? ";" : "").$criteria['criteria_id']."=".$value;
811                                                }
812                                                else
813                                                {
814                                                        $secondcriterias = $this->get_subcriterias($criteria['criteria_id'], $concours['id'] );
815                                                        foreach ($secondcriterias as $subcriteria)
816                                                        {
817                                                                // Check value
818                                                                $value = str_replace(",",".",$_POST[$subcriteria['criteria_id']]);
819                                                                $value = str_replace(" ","",$value);
820                                                                $value = floatval($value);
821                                                                if ($value < floatval($subcriteria['min_value']))
822                                                                        $value = floatval($subcriteria['min_value']);
823                                                                if ($value > floatval($subcriteria['max_value']))
824                                                                        $value = floatval($subcriteria['max_value']);
825                                                       
826                                                                $user_note .= (strlen($user_note) != 0 ? ";" : "").$subcriteria['criteria_id']."=".$value;
827                                                        }
828                                                }
829                                        }
830                               
831//                              $datas = "0=0";
832                                        $this->store_img_note_user($page['current_item'], $user_note, $concours['id']);
833if ($this->debug)       echo "COMMENT=".$_POST['CONCOURS_COMMENT'];
834                                        $this->store_img_comment_user($page['current_item'], $_POST['concours_comment'], $concours['id']);
835                                }
836
837                                // If user want to erase notes
838                                if (isset($_POST['concours_raz']))
839                                {
840if ($this->debug)                       echo "RAZ";                             
841                                        $this->RAZ_img_note_user($page['current_item'], $concours['id']);
842                                }
843                                else
844                                {
845                                        // Recover previous note in DB (if exists)
846                                        $user_notes = $this->get_img_note_user($page['current_item'], $concours['id']);
847                                }
848                               
849                                // Comment is not RAZ, always restore                           
850                                $comment = $this->get_img_comment_user($page['current_item'], $concours['id']);
851
852if ($this->debug)       echo "STEP3\n";
853                                //------------
854                                // Step 3
855                                // Recover all 1st level criterias
856                                $firstcriterias = $this->get_firstlevel_criterias($concours['id']);
857                                foreach ($firstcriterias as $criteria)
858                                {
859if ($this->debug)                                       echo "criteriaID=".$criteria['criteria_id']."\n";
860                                        // First without sub criterias
861                                        if (!$this->is_criterias_contains_sub($criteria['criteria_id'],$concours['id'] ))
862                                        {
863                                                $template->append( 'concours_criteria', array(
864                                                                'nosub' => true,
865                                                                'level' => 1,
866                                                                'id'    => $criteria['criteria_id'],                            // id du critere
867                                                                'name'  => $criteria['name'],                           // id du critere
868                                                                'lib'   => $criteria['descr'], //.'(min='$criteria['min_value'].';max='.$criteria['min_value'].')',                     // libelle du critrer
869                                                                'val'   => (isset($user_notes[$criteria['criteria_id']])?$user_notes[$criteria['criteria_id']] : $criteria['min_value']),               //  valeur du critere
870                                                                'min'   => $criteria['min_value'],                              // min
871                                                                'max'   => $criteria['max_value']                               // max
872                                                        ));
873                                        }
874                                        else
875                                        {
876                                                $template->append( 'concours_criteria', array(
877                                                                'nosub' => false,
878                                                                'level' => 1,
879                                                                'id'    => $criteria['criteria_id'],                            // id du critere
880                                                                'name'  => $criteria['name'],                           // id du critere
881                                                                'lib'   => $criteria['descr']
882                                                        ));
883                                                $secondcriterias = $this->get_subcriterias($criteria['criteria_id'], $concours['id'] );
884                                                foreach ($secondcriterias as $subcriteria)
885                                                {
886if ($this->debug)                                                       echo "subcriteriaID=".$criteria['criteria_id']."\n";
887                                                        $template->append( 'concours_criteria', array(
888                                                                        'nosub' => true,
889                                                                        'level' => 2,
890                                                                        'id'    => $subcriteria['criteria_id'],                         // id du critere
891                                                                        'name'  => $subcriteria['name'],                                // id du critere
892                                                                        'lib'   => $subcriteria['descr'], //.'(min='$criteria['min_value'].';max='.$criteria['min_value'].')',                  // libelle du critrer
893                                                                        'val'   => (isset($user_notes[$subcriteria['criteria_id']])?$user_notes[$subcriteria['criteria_id']] : $subcriteria['min_value']),
894                                                                        'min'   => $subcriteria['min_value'],                           // min
895                                                                        'max'   => $subcriteria['max_value']                            // max
896                                                                ));
897                                                       
898                                                }
899                                        }
900
901                                }
902                                // Add the comment
903                                $template->assign( 'CONCOURS_COMMENT', $comment);
904                               
905                                // Add concours informations on template
906                                $template->assign( 'concours_infos', array(
907                                                        'name'  => $concours['name'],
908                                                        'descr' => $concours['descr']
909                                                                ));
910                               
911                       
912                                $template->set_filenames(array('concours' =>  CONCOURS_ROOT.'/template/concours.tpl'));
913//                              $template->concat('PLUGIN_PICTURE_AFTER', $template->parse('concours', true));
914                                $template->concat('COMMENT_IMG', $template->parse('concours', true));
915
916                                //
917                                $template->assign('INFO_AUTHOR',l10n('concours_img_author'));
918                        }
919                }
920        }
921
922        // RAZ notation from user to db
923        // fill criterias notes to 0 in DB
924        // return false if error
925        function RAZ_img_note_user($img_id, $concours_id = NULL)
926        {
927                $user_note = "";
928                if ($concours_id === null)
929                        if ($this->concours_id !== null)
930                                $concours_id = $this->concours_id;
931                        else
932                                return false;
933                               
934                $firstcriterias = $this->get_firstlevel_criterias($concours_id);
935                foreach ($firstcriterias as $criteria)
936                {
937if ($this->debug)                                       echo "ID=".$criteria['criteria_id']."\n";
938                        // First without sub criterias
939                        if (!$this->is_criterias_contains_sub($criteria['criteria_id'],$concours_id ))
940                        {
941                                $user_note .= (strlen($user_note) != 0 ? ";" : "").$criteria['criteria_id']."=".$criteria['min_value'];
942                        }
943                        else
944                        {
945                                $secondcriterias = $this->get_subcriterias($criteria['criteria_id'], $concours_id );
946                                foreach ($secondcriterias as $subcriteria)
947                                {
948if ($this->debug)                                                       echo "ID=".$criteria['criteria_id']."\n";
949                                        $user_note .= (strlen($user_note) != 0 ? ";" : "").$subcriteria['criteria_id']."=".$subcriteria['min_value'];
950                                }
951                        }
952                }
953if ($this->debug)       echo "RAZ=>".$user_note."\n";
954                if (strlen($user_note) != 0)
955                {
956                        $this->store_img_note_user($img_id, $user_note, $concours_id);
957                        return true;
958                }
959                else
960                        return false;
961                               
962
963        }
964
965        // Store notation from user to db
966        // save with format "criteria_id=note;criteria_id=note..." for data     
967        function store_img_note_user($img_id, $datas, $concours_id = NULL)
968        {
969                global $user;
970                if ($this->get_img_note_user( $img_id, $concours_id) == array())
971                {
972                        $query = 'SELECT IF(MAX(id)+1 IS NULL, 1, MAX(id)+1) AS next_element_id  FROM ' . CONCOURS_DATA_TABLE . ' ;';
973                        list($next_element_id) = mysql_fetch_array(pwg_query($query));
974if ($this->debug)       echo "Next_element=".$next_element_id."\n";
975                        $query = '
976                        INSERT INTO ' . CONCOURS_DATA_TABLE .'
977                                (`id`,
978                                `id_concours` ,
979                                `user_id` ,
980                                `create_date` ,
981                                `img_id` ,
982                                `datas` )
983                        VALUES ( '.$next_element_id.','
984                        .($concours_id !== null ? $concours_id : $this->concours_id ) .'
985                        , '. $user['id'] .', now(), '.$img_id.', "'.$datas.'");';
986                }
987                else
988                {
989                        $query = '
990                        UPDATE ' . CONCOURS_DATA_TABLE .'
991                        SET datas = "'.$datas.'", create_date = now()
992                        WHERE id_concours = '.($concours_id !== null ? $concours_id : $this->concours_id ).'
993                        AND user_id = '.$user['id'].'
994                        AND img_id = '.$img_id.';';
995                }
996if ($this->debug)                       echo $query."\n";
997                        pwg_query($query);
998       
999        }
1000       
1001        // get notation's user from db
1002        // Return an array with :
1003        // Criteria_id ==> value
1004        // Note : criterias with subcriterias are not saved and not restored. They are calculated for global result
1005        function get_img_note_user($img_id, $concours_id = NULL, $user_id = null)
1006        {
1007                global $user;
1008                $img_note = array();
1009                if ($concours_id!== null or $this->concours_id !== null)
1010                {
1011                        $query = '
1012                        SELECT datas
1013                        FROM ' . CONCOURS_DATA_TABLE .'
1014                        WHERE id_concours =' . ($concours_id !== NULL ? $concours_id : $this->concours_id) . '
1015                        AND user_id = '. ($user_id !== null ? $user_id : $user['id']).'
1016                        AND img_id = '. $img_id .'
1017                        ';
1018if ($this->debug)                       echo $query."\n";
1019                        $result = pwg_query($query);
1020                       
1021                        while ($row = mysql_fetch_assoc($result))
1022                        {
1023if ($this->debug)                               echo "row[data]=".$row['datas']."\n";
1024                                $datas = explode(";",$row['datas']);
1025                                foreach ($datas as $val)
1026                                {
1027                                        if (strpos($val, '=') !== FALSE)
1028                                                $img_note[substr($val, 0, strpos($val, '='))]=substr($val, strpos($val, '=')+1);
1029                                }
1030                        }
1031// DEBUG
1032if ($this->debug)
1033foreach ($img_note as $id=>$val)
1034{
1035        if (is_array($val))
1036                foreach ($val as $id2=>$val2)
1037                        echo "img_note[".$id."][".$id2."]=".$val2."\n";
1038        else
1039                echo "img_note[".$id."]=".$val."\n";
1040}
1041//  END DEBUG
1042                       
1043                        return $img_note;
1044                }
1045                else
1046                        return array();
1047               
1048               
1049        }
1050
1051       
1052        // get notation's user from db
1053        // Return the global note for a picture id from a user
1054        function get_img_globalnote_user($img_id, $concours_id = NULL, $user_id = null)
1055        {
1056                global $user;
1057                $img_note = array();
1058                $global_user_note = 0;
1059                if ($concours_id!== null or $this->concours_id !== null)
1060                {
1061                        $query = '
1062                        SELECT datas
1063                        FROM ' . CONCOURS_DATA_TABLE .'
1064                        WHERE id_concours =' . ($concours_id !== NULL ? $concours_id : $this->concours_id) . '
1065                        AND user_id = '. ($user_id !== null ? $user_id : $user['id']).'
1066                        AND img_id = '. $img_id .'
1067                        ';
1068                        $result = pwg_query($query);
1069                       
1070                        while ($row = mysql_fetch_assoc($result))
1071                        {
1072                                $datas = explode(";",$row['datas']);
1073                                foreach ($datas as $val)
1074                                {
1075                                        if (strpos($val, '=') !== FALSE)
1076                                                $img_note[substr($val, 0, strpos($val, '='))]=substr($val, strpos($val, '=')+1);
1077                                }
1078                        }
1079                       
1080                        $firstcriterias = $this->get_firstlevel_criterias($concours_id);
1081                        foreach ($firstcriterias as $criteria)
1082                        {
1083if ($this->debug)                                       echo "criteriaID=".$criteria['criteria_id']."\n";
1084                                // First without sub criterias
1085                                if (!$this->is_criterias_contains_sub($criteria['criteria_id'],$concours_id ))
1086                                {
1087                                        if (isset($img_note[$criteria['criteria_id']]))
1088                                                $global_user_note += (int)$criteria['ponderation'] * (float)$img_note[$criteria['criteria_id']];
1089                                }
1090                                else
1091                                {
1092
1093                                        $secondcriterias = $this->get_subcriterias($criteria['criteria_id'], $concours_id );
1094                                        foreach ($secondcriterias as $subcriteria)
1095                                        {
1096if ($this->debug)                                                       echo "subcriteriaID=".$subcriteria['criteria_id']."\n";
1097                                                if (isset($img_note[$subcriteria['criteria_id']]))
1098                                                $global_user_note += (int)$subcriteria['ponderation'] * (float)$img_note[$subcriteria['criteria_id']];
1099                                        }
1100                                }
1101
1102                        }
1103                       
1104                        return $global_user_note;
1105                }
1106                else
1107                        return array();
1108               
1109               
1110        }
1111
1112        // Store comment from user to db
1113        function store_img_comment_user($img_id, $datas, $concours_id = NULL)
1114        {
1115                global $user;
1116                if (($comment = $this->get_img_note_user( $img_id, $concours_id)) == false)
1117                {
1118                        $query = 'SELECT IF(MAX(id)+1 IS NULL, 1, MAX(id)+1) AS next_element_id  FROM ' . CONCOURS_DATA_TABLE . ' ;';
1119                        list($next_element_id) = mysql_fetch_array(pwg_query($query));
1120if ($this->debug)       echo "Next_element=".$next_element_id."\n";
1121                        $query = '
1122                        INSERT INTO ' . CONCOURS_DATA_TABLE .'
1123                                (`id`,
1124                                `id_concours` ,
1125                                `user_id` ,
1126                                `create_date` ,
1127                                `img_id` ,
1128                                `comment`)
1129                        VALUES ( '.$next_element_id.','
1130                        .($concours_id !== null ? $concours_id : $this->concours_id ) .'
1131                        , '. $user['id'] .', now(), '.$img_id.', "'.$datas.'");';
1132                }
1133                else
1134                {
1135                        $query = '
1136                        UPDATE ' . CONCOURS_DATA_TABLE .'
1137                        SET comment = "'.$datas.'", create_date = now()
1138                        WHERE id_concours = '.($concours_id !== null ? $concours_id : $this->concours_id ).'
1139                        AND user_id = '.$user['id'].'
1140                        AND img_id = '.$img_id.';';
1141                }
1142if ($this->debug)                       echo $query."\n";
1143                        pwg_query($query);
1144       
1145        }
1146       
1147       
1148        // Get comment on an image for a user
1149        function get_img_comment_user($img_id, $concours_id = NULL, $user_id = null)
1150        {
1151                global $user;
1152                $datas = false;
1153                if ($concours_id!== null or $this->concours_id !== null)
1154                {
1155                        $query = '
1156                        SELECT comment
1157                        FROM ' . CONCOURS_DATA_TABLE .'
1158                        WHERE id_concours =' . ($concours_id !== NULL ? $concours_id : $this->concours_id) . '
1159                        AND user_id = '. ($user_id !== null ? $user_id : $user['id']).'
1160                        AND img_id = '. $img_id .'
1161                        ';
1162if ($this->debug)                       echo $query."\n";
1163                        $result = pwg_query($query);
1164                       
1165                        while ($row = mysql_fetch_assoc($result))
1166                        {
1167if ($this->debug)                               echo "row[comment]=".$row['comment']."\n";
1168                                $datas = $row['comment'];
1169                        }
1170                }
1171                return $datas;
1172        }
1173       
1174       
1175        // Generate csv file for a closed concours with result generated
1176        function generate_csv($concours_id = NULL)
1177        {
1178                $file = "rang, id_concours, img_id, img_name, img_file, date, note, datas\r\n";
1179
1180                // recover all img_id from the category
1181                $query = 'SELECT id_concours, img_id, IMG.name, IMG.file, date, note, datas'
1182                .' FROM ' .CONCOURS_RESULT_TABLE
1183                .' INNER JOIN ' . IMAGES_TABLE.' AS IMG on IMG.id = img_id'
1184                .' WHERE id_concours = '.($concours_id !== null ? $concours_id : $this->concours_id )
1185                .' ORDER BY note DESC'
1186                .';';
1187               
1188                $result = pwg_query($query);
1189                // For each images
1190                $rang = 1;
1191                while ($row = mysql_fetch_assoc($result))
1192                {
1193                        $file .= $rang.', '
1194                                        .$row['id_concours'].', '
1195                                        .$row['img_id'].', '
1196                                        .$row['name'].', '
1197                                        .$row['file'].', '
1198                                        .$row['date'].', '
1199                                        .$row['note'].', '
1200                                        .($row['datas'] != null ? $row['datas'] : '')
1201                                        ."\r\n";
1202                        $rang ++;
1203                }
1204                               
1205                return $file;
1206       
1207               
1208        }
1209
1210        // Generate csv file for a closed concours with result generated and all users informations
1211        function generate_detail_csv($concours_id = NULL)
1212        {
1213                if ($concours_id === null)
1214                        $concours_id = $this->concours_id;
1215                // Prepare the list of criteria
1216                $criteria_list = "";
1217                $firstcriterias = $this->get_firstlevel_criterias($concours_id);
1218                $ident1 = 1;
1219                foreach ($firstcriterias as $criteria)
1220                {
1221                        // format (id:name)
1222                        $criteria_list .= (strlen($criteria_list) ? "," : "")
1223                                                                .$ident1.":".$criteria['name']
1224                                                                ."(id=".$criteria['criteria_id'].")";
1225                        // First wit sub criterias
1226                        if ($this->is_criterias_contains_sub($criteria['criteria_id'],$concours_id ))
1227                        {
1228                                $ident2 = 1;
1229                                $secondcriterias = $this->get_subcriterias($criteria['criteria_id'], $concours_id );
1230                                foreach ($secondcriterias as $subcriteria)
1231                                {
1232                                        // format (id:name)
1233                                        $criteria_list .= (strlen($criteria_list) ? "," : "")
1234                                                                          .$ident1.".".$ident2
1235                                                                          .":".$subcriteria['name']."(id=".$subcriteria['criteria_id'].")";
1236                                        $ident2 ++;
1237                                }
1238                        }
1239                        $ident1++;
1240                }
1241if ($this->debug)       echo "CRITERIA_LIST=".$criteria_list."\n";     
1242                $user_list = array();
1243                $users_criteria = "";
1244                // Get all the users who have notes for the concours
1245                $query = 'SELECT distinct(user_id), USER.username'
1246                .' FROM ' .CONCOURS_DATA_TABLE
1247                .' INNER JOIN ' . USERS_TABLE.' AS USER on USER.id = user_id'
1248                .' WHERE id_concours = '.($concours_id !== null ? $concours_id : $this->concours_id )
1249                .' ORDER BY username ASC'
1250                .';';
1251                $result = pwg_query($query);
1252                // For each user
1253                while ($row = mysql_fetch_assoc($result))
1254                {
1255                        array_push($user_list, $row);
1256                        $users_criteria .= (strlen($users_criteria) ? "," : "")."user, user_global_note, comment, ".$criteria_list;
1257                       
1258                }
1259
1260if ($this->debug)       echo "users_criteria=".$users_criteria."\n";   
1261               
1262                // All informations in csv format
1263                $file = "rang, id_concours, nom_concours, date_debut, date_fin, date_export, img_id, img_name, img_file, img_author, note, nbvotant, datas,"
1264                .$users_criteria 
1265                ."\r\n";
1266
1267                // nb of users who vote for each image
1268                $query = 'SELECT img_id, COUNT(DISTINCT user_id) AS NBVOTE FROM ' . CONCOURS_DATA_TABLE 
1269                .' GROUP BY img_id '
1270                .';';
1271                               
1272                $result = pwg_query($query);
1273//              echo $query;
1274                $nbvotes = array();
1275                while ($row = mysql_fetch_assoc($result))
1276                {
1277                        $nbvotes[$row['img_id']] = $row['NBVOTE'];
1278                }
1279/*             
1280                foreach ($nbvotes as $id=>$val)
1281                {
1282                        echo "Vote img(".$id.")=".$val."\n";
1283                }
1284*/             
1285                // recover all img_id from the category
1286                $query = 'SELECT id_concours, img_id, IMG.name, IMG.file, IMG.author, date, note, datas, comment'
1287                .' FROM ' .CONCOURS_RESULT_TABLE
1288                .' INNER JOIN ' . IMAGES_TABLE.' AS IMG on IMG.id = img_id'
1289                .' WHERE id_concours = '.($concours_id !== null ? $concours_id : $this->concours_id )
1290                .' ORDER BY note DESC'
1291                .';';
1292               
1293                $result = pwg_query($query);
1294//              echo $query;
1295                // For each images
1296                $rang = 1;
1297                while ($row = mysql_fetch_assoc($result))
1298                {
1299                        $file .= $rang.', '
1300                                        .$row['id_concours'].', '
1301                                        .str_replace(",", "",$this->concours_infos['name']).', '
1302                                        .$this->concours_infos['begin_date'].', '
1303                                        .$this->concours_infos['end_date'].', '
1304                                        .$row['date'].', '
1305
1306                                        .$row['img_id'].', '
1307                                        .str_replace(",", "",$row['name']).', '
1308                                        .$row['file'].', '
1309                                        .$row['author'].', '
1310                                        .$row['note'].', '
1311                                        .(isset($nbvotes[$row['img_id']]) ? $nbvotes[$row['img_id']] : 0).', '
1312                                        .($row['datas'] != null ? $row['datas'] : '')
1313                                        ;
1314                        foreach ($user_list as $uuser)
1315                        {
1316                               
1317                                $user_note = $this->get_img_note_user($row['img_id'], $concours_id, $uuser['user_id']);
1318                               
1319                                $file .= ', '.$uuser['username'].', '.$this->get_img_globalnote_user($row['img_id'], $concours_id, $uuser['user_id'])
1320                                                .', '.($row['comment'] != null ? str_replace(",", "",$row['comment']) : '')
1321                                                .', '
1322                                                ;
1323
1324                                $user_note_by_crit = "";
1325                                foreach ($firstcriterias as $criteria)
1326                                {
1327                                        // First without sub criterias
1328                                        if (!$this->is_criterias_contains_sub($criteria['criteria_id'],$concours_id ))
1329                                        {
1330                                                $user_note_by_crit .= (strlen($user_note_by_crit) ? "," : "").(isset($user_note[$criteria['criteria_id']]) ? $user_note[$criteria['criteria_id']] : ' ');
1331                                        }
1332                                        else
1333                                        {
1334                                                $user_note_by_subcrit = "";
1335                                                $subcrit_note = 0;
1336                                                $user_has_vote = false;
1337                                                $secondcriterias = $this->get_subcriterias($criteria['criteria_id'], $concours_id );
1338                                                foreach ($secondcriterias as $subcriteria)
1339                                                {
1340                                                        if (isset($user_note[$subcriteria['criteria_id']]))             $user_has_vote = true;
1341                                                        $user_note_by_subcrit .= (strlen($user_note_by_subcrit) ? "," : "").(isset($user_note[$subcriteria['criteria_id']]) ? $user_note[$subcriteria['criteria_id']] : ' ');
1342                                                        $subcrit_note += (int)$subcriteria['ponderation'] * (float)(isset($user_note[$subcriteria['criteria_id']]) ? $user_note[$subcriteria['criteria_id']] : 0);
1343
1344                                                }
1345                                                $user_note_by_crit .= (strlen($user_note_by_crit) ? "," : "").($user_has_vote ? $subcrit_note : ' ').",".$user_note_by_subcrit;
1346                                        }
1347                                }
1348                                $file .= $user_note_by_crit;
1349
1350                        }
1351
1352                        $file .="\r\n";
1353                        $rang ++;
1354                }
1355//              echo $file;
1356                return $file;
1357       
1358               
1359        }
1360       
1361       
1362       
1363        // Save csv datas to physical file
1364        function save_file($file,$concours_id = NULL)
1365        {
1366                // check if already saved file
1367                if ($filename = $this->get_file_name($concours_id))
1368                        return $filename;
1369                else
1370                {
1371                        $dirpath = CONCOURS_RESULT_FOLDER;
1372
1373                        $filename = date('Ymd')."_concours".($concours_id !== null ? $concours_id : $this->concours_id ).".csv";
1374                        if (!is_dir($dirpath)) 
1375                                @mkdir($dirpath);
1376                        if (file_exists($dirpath. $filename))
1377                                unlink($dirpath. $filename);
1378
1379                        $fh = fopen($dirpath. $filename, 'w') or die("can't open file");
1380                        fwrite($fh, $file);
1381                        fclose($fh);
1382
1383                        //update result database with filename
1384                        $query = "UPDATE " . CONCOURS_RESULT_TABLE . "
1385                                                SET
1386                                                file_name = \"".$filename."\"
1387                                                WHERE id_concours= ".($concours_id !== NULL ? $concours_id : $this->concours_id)."
1388                                                ;";
1389                        pwg_query($query);
1390        //              echo $query;
1391                       
1392                        return $filename;
1393                }
1394        }               
1395
1396        // Get result file name from db
1397        function get_file_name($concours_id = NULL)
1398        {
1399                $query = 'SELECT distinct(file_name)'
1400                .' FROM ' .CONCOURS_RESULT_TABLE
1401                .' WHERE id_concours = '.($concours_id !== null ? $concours_id : $this->concours_id )
1402                .';';
1403                $row = mysql_fetch_assoc(pwg_query($query));
1404                if ($row)
1405                        return $row['file_name'];
1406                else
1407                        return false;
1408       
1409        }
1410
1411        // Get csv datas from a saved file
1412        function get_file($concours_id = NULL)
1413        {
1414                $filename = CONCOURS_RESULT_FOLDER.
1415                $size = filesize($filename);
1416                header('Content-Type: application/octet-stream');
1417                header('Content-Length: '.$size);
1418                header('Content-Disposition: attachment; filename='.$filename);
1419                header('Content-Transfer-Encoding: binary');
1420
1421                $file = @fopen($filename, ‘rb’);
1422                if ($file) {
1423                        // stream the file and exit the script when complete
1424                        fpassthru($file);
1425                }
1426       
1427        }
1428       
1429        // Activation page administration
1430        function concours_admin_menu($menu)
1431        {
1432            array_push($menu,
1433               array(
1434                    'NAME' => CONCOURS_NAME,
1435                    'URL' => get_admin_plugin_menu_link(CONCOURS_ADMIN_PATH.'admin.php')
1436                ) 
1437            );
1438            return $menu;
1439        }
1440       
1441        // register Concours Menubar
1442        public function register_blocks( $menu_ref_arr )
1443        {
1444        $menu = & $menu_ref_arr[0];
1445        if ($menu->get_id() != 'menubar' OR $this->my_config['active_menubar'] == false)
1446          return;
1447        $menu->register_block( new RegisteredBlock( 'CONCOURS_menu', 'Polls', 'MYPOLLS'));
1448        }
1449
1450  /*
1451    initialise menubar's menu
1452    called by menubar object when making menu
1453  */
1454        public function blockmanager_apply( $menu_ref_arr )
1455        {
1456 
1457                global $user, $template;
1458                $menu = & $menu_ref_arr[0];
1459
1460                if ($this->user_groups == array())
1461                        $this->get_user_groups();
1462               
1463                if ( ($block = $menu->get_block( 'CONCOURS_menu' ) ) != null )
1464                {
1465                  if($user['id']==2)
1466                  {
1467                        $vote_id = $_SERVER['REMOTE_ADDR'];
1468                  }
1469                  else
1470                  {
1471                        $vote_id = $user['id'];
1472                  }
1473
1474        //      $polls_list=$this->get_polls_list($vote_id, is_admin(), $user['language']);
1475                  $menu_list=array();
1476
1477                  if(is_admin())
1478                  {
1479                        array_push($menu_list,
1480                          array(
1481                                'nfo' => "",
1482                                'text' => l10n('concours_admin_add'),
1483                                'link' => PHPWG_ROOT_PATH . 'admin.php?page=plugin&amp;section=' . CONCOURS_DIR . '%2Fadmin%2Fadd_concours.php&amp;action=new',
1484                                'edit' => ""
1485                          )
1486                        );
1487                  }
1488
1489                        // recover all img_id from the category
1490                        $query = 'SELECT distinct(id_concours), groups, CONC.name'
1491                        .' FROM ' .CONCOURS_RESULT_TABLE
1492                        .' INNER JOIN '.CONCOURS_TABLE. ' AS CONC ON CONC.id = id_concours'
1493                        .' ORDER BY date DESC'
1494                        .';';
1495                       
1496                        $result = pwg_query($query);
1497                        $nb_concours = 1;
1498                        // For each concours
1499                        while ($row = mysql_fetch_assoc($result))
1500                        {
1501                               
1502                                if ($nb_concours > $this->my_config['nbconcours_menubar'])
1503                                        break;
1504                                       
1505                                if (!empty($row['groups']))
1506                                {
1507                                        $authorized_groups = explode(',', $row['groups']);
1508                                        if (array_intersect($this->user_groups, $authorized_groups) == array()) 
1509                                        {
1510                                                continue;
1511                                        }
1512                                        $nb_concours ++;
1513                                        array_push($menu_list,
1514                                          array(
1515                                                'nfo' => "",
1516                                                'text' => $row['name'],
1517        //                                      'link' => CONCOURS_PATH.'publish.php?id='.$row['id_concours'],
1518                                                'link' => './index.php?/concours/'.$row['id_concours'],
1519                                                'edit' => (is_admin()? PHPWG_ROOT_PATH . 'admin.php?page=plugin&amp;section=' . CONCOURS_DIR . '%2Fadmin%2Fadd_concours.php&amp;concours=' . $row['id_concours'].'&amp;action=modify':"")
1520                                          )
1521                                        );
1522                                }
1523                        }
1524
1525                  if (count($menu_list))
1526                  {
1527
1528                          $block->set_title("Concours Photo");
1529                          $block->template = CONCOURS_ROOT.'/template/concours_menu.tpl';
1530                          $block->data = $menu_list;
1531                  }
1532                }
1533        }
1534
1535       
1536        function section_init_concours()
1537        {
1538                global $tokens, $page;
1539                if ($tokens[0] == 'concours')
1540                  $page['section'] = 'concours';
1541        }
1542       
1543        function index_concours()
1544        {
1545                global $page;
1546               
1547                if (isset($page['section']) and $page['section'] == 'concours')
1548                {
1549                        include(CONCOURS_PATH . 'publish.php');
1550                }
1551        }
1552
1553       
1554}
1555
1556?>
Note: See TracBrowser for help on using the repository browser.