source: extensions/ConcoursPhoto/publish.php @ 15907

Last change on this file since 15907 was 8946, checked in by tiico, 13 years ago

Prepare v2.0.0 for Concours photo plugin :

  • Add exaequo checking for the result (beta)
  • Add EN language
  • Correct "concours not displayed" when no group is selected in admin page. Now, concours is available for all registered user (not depending on the group appartenance)
  • Add option to allow author to vote for their photos (disable check based on username=authorname)
  • Add option to allow user to change the score after a validation
  • Add to guest the possibility to vote for a concours (BETA)
  • Some correction (code and database structure)
File size: 4.7 KB
Line 
1<?php
2if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
3
4global $template;
5
6// Publish the result on a global page.
7// Mode global ==> simply display global result
8// Mode full ==> display global result and user notations
9
10$ap_id = explode('concours/' , $_SERVER['REQUEST_URI']);
11$id_concours = $ap_id[1];
12
13$user['ipguest'] = null;
14if (is_a_guest())
15{
16    if (isset($_SERVER['HTTP_X_FORWARDED_FOR']))
17        $IP = $_SERVER['HTTP_X_FORWARDED_FOR']; 
18    elseif(isset($_SERVER['HTTP_CLIENT_IP']))   
19        $IP = $_SERVER['HTTP_CLIENT_IP'];   
20    else
21        $IP = $_SERVER['REMOTE_ADDR']; 
22         
23    // store ip
24    $user['ipguest'] = $IP;
25}
26       
27
28
29$concours = new Concours($id_concours);
30
31                $template->assign( 'CONCOURS', array(
32                                'ID'    => $concours->concours_infos['id'],
33                                'NAME'  => $concours->concours_infos['name'],
34                                'DESCR' => $concours->concours_infos['descr'],
35                                'BEGIN_DATE'    => $concours->concours_infos['begin_date'],
36                                'END_DATE'      => $concours->concours_infos['end_date'],
37                                'METHOD'        => l10n("concours_method".$concours->concours_infos['method'])
38                                ));
39
40
41$category = $concours->concours_infos['category'];
42
43if (!(isset($concours->concours_infos['method'])))
44        $concours->concours_infos['method'] = 1;
45
46$query = 'SELECT DISTINCT(img.id), img.name, img.file, img.path, img.tn_ext,img.author,
47                  ic.category_id, cat.name AS catname, conc.note, conc.moyenne, conc.nbvotant'
48                .' FROM ' . IMAGES_TABLE.' AS img'
49                .' INNER JOIN '.IMAGE_CATEGORY_TABLE.' AS ic ON img.id = ic.image_id'
50                .' INNER JOIN '.CATEGORIES_TABLE.' AS cat ON ic.category_id = cat.id'
51                .' INNER JOIN '.CONCOURS_RESULT_TABLE.' AS conc ON conc.img_id = img.id'
52                .' WHERE ic.category_id = '.$concours->concours_infos['category']
53                .' AND conc.id_concours = '.$concours->concours_infos['id']
54        ;
55
56if ($concours->concours_infos['method'] == 1)   // total
57        $query .= ' ORDER BY note DESC';
58elseif ($concours->concours_infos['method'] == 2)       // moyenne
59        $query .= ' ORDER BY moyenne DESC';
60
61$query .=';';
62//              .' ORDER by note DESC;';
63$result = pwg_query($query);
64$rang = 1;
65$previousNote = $previousMoy = 0;
66while ($row = mysql_fetch_assoc($result))
67{
68        // link on picture.php page
69        set_make_full_url();
70        if ( isset($row['category_id']) & isset($row['catname']) ) 
71        {
72                $url = duplicate_picture_url(
73                array(
74                'image_id' => $row['id'],
75                'image_file' => $row['file'],
76                'category' => array(
77                                                'id' => $row['category_id'],
78                                                'name' => $row['catname'],
79                                                'permalink' => ''
80                                          )
81                ),
82                array('start')
83                );
84        }
85        else
86        {
87                $url = duplicate_picture_url(
88                  array(
89                        'image_id' => $row['id'],
90                        'image_file' => $row['file']
91                  ),
92                  array('start')
93                );
94        }       
95        unset_make_full_url();
96
97    // Check the exaequos
98    if ($concours->my_config['check_exaequo'])
99    {
100        if ( ($concours->concours_infos['method'] == 1  // total
101               AND ($row['note'] == $previousNote))
102             OR  ($concours->concours_infos['method'] == 2      // moyenne
103                  AND ($row['moyenne'] == $previousMoy)))
104        {
105//            echo "Rang=".$rang."\n";
106            $rang --;
107           
108        }
109    }
110
111        $template->append( 'concours_note', array(
112                        'img_id' => $row['id'],
113                        'name'  => $row['name'],
114                        'file'  => $row['file'],
115                        'author'        => $row['author'],
116                        'rang'  => $rang,
117                        'thumb' => get_thumbnail_url($row),
118                        'url'   => $url,
119                        'note'  => ($row['note'] == 0 ? 'N/A' :$row['note']),
120                        'moyenne'       => ($row['moyenne'] == 0 ? 'N/A' :$row['moyenne']),
121                        'nbvotant'      => $row['nbvotant'],
122                        'usernote'      => $concours->get_img_globalnote_user($row['id'], null, null, $user['ipguest'])
123                       
124                ));
125    $rang ++;
126   
127//    echo "Rang=".$rang."\n";
128    $previousNote = $row['note'];
129    $previousMoy = $row['moyenne'];
130
131}
132// Envoi de la page
133$template->assign(array(
134  'TITLE' => "Concours : ".$concours->concours_infos['name']));
135
136$template->assign('IMG_URL', CONCOURS_IMG_PATH);
137
138$template->set_filenames(array('concours_result' =>  CONCOURS_ROOT.'/template/result.tpl'));
139$template->concat('PLUGIN_INDEX_CONTENT_BEGIN', $template->parse('concours_result', true));
140 
141 
142  $template->assign('PLUGIN_INDEX_ACTIONS' , '
143    <li><a href="' . make_index_url() . '" title="' . l10n('return to homepage') . '">
144      <img src="' . $template->get_themeconf('icon_dir') . '/home.png" class="button" alt="' . l10n('home') . '"/></a>
145    </li>');
146
147if (is_admin())
148{
149  $template->assign('U_EDIT', PHPWG_ROOT_PATH . 'admin.php?page=plugin&amp;section=' . CONCOURS_DIR . '%2Fadmin%2Fadd_concours.php&amp;concours=' . $id_concours.'&amp;action=edit');
150}
151
152$template->clear_assign(array('U_MODE_POSTED', 'U_MODE_CREATED'));
153
154?>
Note: See TracBrowser for help on using the repository browser.