source: extensions/ConcoursPhoto/maintain.inc.php @ 32546

Last change on this file since 32546 was 32546, checked in by tiico, 3 years ago

Correction + add podium on category (with param)

File size: 9.8 KB
Line 
1<?php
2/*
3 * Plugin Name: ConcoursPhoto
4 * File :  maintain.inc.php 
5 */
6
7if (!defined('PHPWG_ROOT_PATH')) die('Hacking attempt!');
8
9function plugin_install() 
10{
11        global $prefixeTable, $conf;
12        $query = 'SHOW TABLES LIKE "' . $prefixeTable . 'concours"';
13        $result = pwg_query($query);
14        if (!pwg_db_fetch_row($result))
15        {
16
17        // Concours description
18                $q = 'CREATE TABLE IF NOT EXISTS  `' . $prefixeTable . 'concours` (
19                                `id` smallint(5) NOT NULL,
20                                `create_date` datetime NOT NULL,
21                                `name` text NOT NULL,
22                                `descr` varchar(255) default NULL,
23                                `begin_date` datetime NOT NULL,
24                                `end_date` datetime NOT NULL,
25                                `category` smallint(5) default NULL,
26                                `groups` varchar(255) default NULL,
27                                `method` smallint(5) default 1 NOT NULL,
28                                `guest` Boolean default FALSE,
29                                `admin` Boolean default FALSE,
30                                `Podium_onCat` Boolean default FALSE,
31                               
32                                PRIMARY KEY  (`id`)
33                                ) DEFAULT CHARSET=utf8;';
34                pwg_query($q);
35
36        // Concours description detail (criterias)
37                $q = 'CREATE TABLE IF NOT EXISTS  `' . $prefixeTable . 'concours_detail` (
38                                `id` smallint(5) NOT NULL,
39                                `id_concours` smallint(5) NOT NULL,
40                                `criteria_id` smallint(5) NOT NULL,
41                                `name` text NOT NULL,
42                                `descr` varchar(255) default NULL,
43                                `min_value` int default 0,
44                                `max_value` int default 0,
45                                `ponderation` int default 1,
46                                `uppercriteria` smallint(5) default NULL,
47                               
48                                PRIMARY KEY  (`id`),
49                                FOREIGN KEY (`id_concours`) REFERENCES ' . $prefixeTable . 'concours(id)
50                                ) DEFAULT CHARSET=utf8;';
51                pwg_query($q);
52
53
54        // Concours notation (by users)
55                $q = 'CREATE TABLE IF NOT EXISTS  `' . $prefixeTable . 'concours_data` (
56                                `id` smallint(5) NOT NULL,
57                                `id_concours` smallint(5) NOT NULL,
58                                `user_id` smallint(5) NOT NULL,
59                                `create_date` datetime NOT NULL,
60                                `img_id` smallint(5) NOT NULL,
61                                `datas` longtext default NULL,
62                                `comment` longtext default NULL,                               
63                                `ipguest` longtext default NULL,
64                                PRIMARY KEY  (`id`)
65                                ) DEFAULT CHARSET=utf8;';
66                pwg_query($q);
67               
68        // Concours result (synthesis)
69                $q = 'CREATE TABLE IF NOT EXISTS  `' . $prefixeTable . 'concours_result` (
70                                `id_concours` smallint(5) NOT NULL,
71                                `img_id` smallint(5) NOT NULL,
72                                `date` datetime NOT NULL,
73                                `note` float default 0,
74                                `datas` longtext default NULL,
75                                `file_name` longtext default NULL,
76                                `moyenne` float default 0,
77                                `moderation1` float default 0,
78                                `moderation2` float default 0,
79                                `nbvotant` smallint(5) default 0,
80                               
81                                PRIMARY KEY  (`img_id`, `id_concours`),
82                                FOREIGN KEY (`id_concours`) REFERENCES ' . $prefixeTable . 'concours(id)                               
83                                ) DEFAULT CHARSET=utf8;';
84                pwg_query($q);
85               
86        // Default values  insertion
87                $result = pwg_query('select 1 FROM `'.$prefixeTable . 'concours`'.' WHERE id = 0;');
88                if (!pwg_db_num_rows($result))
89                {
90                        $q = "INSERT INTO `" . $prefixeTable . "concours`
91                                                ( `id`,
92                                                `create_date`,
93                                                `name`,
94                                                `descr`,
95                                                `begin_date`,
96                                                `end_date`,
97                                                `category`,
98                                                `groups`)
99                                        VALUES (0, now(), 'Default', 'default values', now(), now(), NULL, NULL);";
100                        pwg_query($q);
101                }
102                // Default values for criterias (concours_id=0)
103                $result = pwg_query('select 1 FROM `'.$prefixeTable . 'concours_detail`'.' WHERE id_concours = 0;');
104                if (!pwg_db_num_rows($result))
105                {
106                        $q = "INSERT INTO `" . $prefixeTable . "concours_detail`
107                                                (`id`,
108                                                `id_concours` ,
109                                                `criteria_id` ,
110                                                `name`,
111                                                `descr`,
112                                                `min_value`,
113                                                `max_value`,
114                                                `ponderation` ,
115                                                `uppercriteria`)
116                                        VALUES (1, 0, 1, 'Artistique', 'Artistique', 0, 10, 1, NULL),
117                                         (2, 0, 2, 'Respect du sujet', 'Sujet en rapport avec le theme', 0, 1, 1, 1),
118                                         (3, 0, 3, 'Sujet bien identifié', 'Sans ambiguite', 0, 2, 1, 1),
119                                         (4, 0, 4, 'Traitement du sujet', 'Expression/Attitude/mouvement', 0, 2, 1, 1),
120                                         (5, 0, 5, 'Mise en valeur du sujet', 'Cadrage/Harmonie de la composition/Esthetique de l\'image/Choix de l\'eclairage', 0, 5, 1, 1),
121
122                                         (6, 0, 6, 'Technique', 'Technique', 0, 6, 1, NULL),
123                                         (7, 0, 7, 'Nettete de l\'image', 'Etagement des plans/Pique de l\'image', 0, 3, 1, 6),
124                                         (8, 0, 8, 'Rendu des couleurs (ou gris)', 'Teintes/Staurations', 0, 1, 1, 6),
125                                         (9, 0, 9, 'Exposition', 'Equilibre hautes/basses lumieres', 0, 2, 1, 6),
126
127                                         (10, 0, 10, 'Coup de coeur', 'coup de coeur', 0, 4, 1, NULL),
128                                         (11, 0, 11, 'Emotion spontanee', 'emotion spontanee', 0, 2, 1, 10),
129                                         (12, 0, 12, 'Adhesion au choix artistique', 'Adhesion au choix artistique', 0, 2, 1, 10);";
130                                 
131                        pwg_query($q);
132                }
133        }
134       
135        // new column on concours on piwigo 2.0.0
136        $result = pwg_query('SHOW COLUMNS FROM `'.$prefixeTable.'concours` LIKE "guest";');
137//              echo "SHOW COLUMNS FROM ."$prefixeTable."concours LIKE 'guest';";
138        if (!pwg_db_num_rows($result))
139          upgrade_concours_from_100();
140        // new column on concours on piwigo 2.9.1
141        $result = pwg_query('SHOW COLUMNS FROM `'.$prefixeTable.'concours` LIKE "admin";');
142        if (!pwg_db_num_rows($result))
143          upgrade_concours_from_290();
144
145        // new column on concours on piwigo 11.0.2
146        $result = pwg_query('SHOW COLUMNS FROM `'.$prefixeTable.'concours` LIKE "Podium_onCat";');
147        if (!pwg_db_num_rows($result))
148          upgrade_concours_from_1102();
149
150        // new column on concours_result on piwigo 2.0.0
151        $result = pwg_query('SHOW COLUMNS FROM `'.$prefixeTable.'concours_result` LIKE "moyenne";');
152        if (!pwg_db_num_rows($result))
153          upgrade_concoursresult_from_100();
154        // new column on concours_result on piwigo 2.9.0
155        $result = pwg_query('SHOW COLUMNS FROM `'.$prefixeTable.'concours_result` LIKE "moderation1";');
156        if (!pwg_db_num_rows($result))
157          upgrade_concoursresult_from_200();
158 
159
160
161        $result = pwg_query('select 1 FROM `'.$prefixeTable . 'config`'.' WHERE param = "concoursphoto";');
162//              echo "SHOW COLUMNS FROM ."$prefixeTable."concours LIKE 'guest';";
163        if (!pwg_db_num_rows($result))
164        {
165                $q = '
166                INSERT INTO '.CONFIG_TABLE.' (param,value,comment)
167                VALUES ("concoursphoto","","Configuration Concours Photo")
168                ;';
169                pwg_query($q);
170        }
171        $this->installed = true;
172}
173
174
175function plugin_activate() 
176{
177  global $prefixeTable;
178
179
180        $query = 'SHOW TABLES LIKE "' . $prefixeTable . 'concours"';
181        $result = pwg_query($query);
182        if (!pwg_db_fetch_row($result))
183        {
184          $this->plugin_install();
185        }
186
187        // new column on concours on piwigo 2.0.0
188        $result = pwg_query('SHOW COLUMNS FROM `'.$prefixeTable.'concours` LIKE "guest";');
189        if (!pwg_db_num_rows($result))
190          upgrade_concours_from_100();
191        // new column on concours on piwigo 2.9.1
192        $result = pwg_query('SHOW COLUMNS FROM `'.$prefixeTable.'concours` LIKE "admin";');
193        if (!pwg_db_num_rows($result))
194          upgrade_concours_from_290();
195        // new column on concours on piwigo 11.0.2
196        $result = pwg_query('SHOW COLUMNS FROM `'.$prefixeTable.'concours` LIKE "Podium_onCat";');
197        if (!pwg_db_num_rows($result))
198          upgrade_concours_from_1102();
199
200        // new column on concours_result on piwigo 2.0.0
201        $result = pwg_query('SHOW COLUMNS FROM `'.$prefixeTable.'concours_result` LIKE "moyenne";');
202        if (!pwg_db_num_rows($result))
203          upgrade_concoursresult_from_100();
204        // new column on concours_result on piwigo 2.9.0
205        $result = pwg_query('SHOW COLUMNS FROM `'.$prefixeTable.'concours_result` LIKE "moderation1";');
206        if (!pwg_db_num_rows($result))
207          upgrade_concoursresult_from_200();
208 
209}
210
211  function plugin_update()
212  {
213        $this->plugin_install();
214  }
215 
216
217function plugin_uninstall() 
218{
219        global $prefixeTable;
220
221        $q = 'DROP TABLE ' . $prefixeTable . 'concours_result,
222        ' . $prefixeTable . 'concours_detail,
223        ' . $prefixeTable . 'concours_data,
224        ' . $prefixeTable . 'concours   ;';
225        pwg_query($q);
226
227        $q = '
228          DELETE FROM '.CONFIG_TABLE.'
229          WHERE param="concoursphoto" LIMIT 1
230        ;';
231        pwg_query($q);
232
233}
234
235
236
237
238       
239
240// Add new parameter in database in version 1.0.1:
241// - moy : moyenne of global note with all participant
242// - nbvotant : nb of vote for an image
243// - method = type of rank calculation (1-> total; 2-> moyenne)
244function upgrade_concoursresult_from_100()
245{
246        global $prefixeTable;
247        // Add new parameters
248        $query = 'ALTER TABLE ' . $prefixeTable . 'concours_result
249        ADD `moyenne` float default 0 AFTER `note`,
250        ADD `nbvotant` smallint(5) default 0 AFTER `moyenne`
251        ;';
252
253        pwg_query($query);
254       
255        // TODO : Recalcul the moyenne and the nb of participation if the table still exist for the selected concours
256
257        $query = 'ALTER TABLE ' . $prefixeTable . 'concours
258        ADD     `method` smallint(5) default 1 NOT NULL
259        ;';
260
261        pwg_query($query);
262 
263}
264
265// Add new parameter in database in version 2.9.0:
266// - moderation1 : global result with method moderation 1
267// - moderation2 : global result with method moderation 1
268function upgrade_concoursresult_from_200()
269{
270        global $prefixeTable;
271        // Add new parameters
272        $query = 'ALTER TABLE ' . $prefixeTable . 'concours_result
273        ADD `moderation1` float default 0 AFTER `moyenne`,
274        ADD `moderation2` float default 0 AFTER `moderation1`
275        ;';
276
277        pwg_query($query); 
278}
279
280
281
282// Add new parameter in database in version 2.0.0:
283// - guest : boolean to allow guest to use this function (concours)
284function upgrade_concours_from_100()
285{
286        global $prefixeTable;
287        // Add new parameters
288        $query = 'ALTER TABLE ' . $prefixeTable . 'concours
289        ADD `guest` boolean default FALSE AFTER `method`
290        ;';
291
292        pwg_query($query);
293        // Add new parameters
294        $query = 'ALTER TABLE ' . $prefixeTable . 'concours_data
295        ADD `ipguest` longtext default NULL AFTER `comment`
296        ;';
297
298        pwg_query($query);
299 
300}
301// Add new parameter in database in version 2.9.1:
302// - admin : boolean to allow admin  to access to contest( even if he's not in a contest)
303function upgrade_concours_from_290()
304{
305        global $prefixeTable;
306        // Add new parameters
307        $query = 'ALTER TABLE ' . $prefixeTable . 'concours
308        ADD `admin` boolean default FALSE AFTER `guest`
309        ;';
310
311        pwg_query($query);
312}
313
314
315// Add new parameter in database in version 11.0.3:
316// - Podium_onCat : Add Podium on category page (after result)
317function upgrade_concours_from_1102()
318{
319        global $prefixeTable;
320        // Add new parameters
321        $query = 'ALTER TABLE ' . $prefixeTable . 'concours
322        ADD `Podium_onCat` boolean default FALSE AFTER `admin`
323        ;';
324
325        pwg_query($query); 
326}
327
328
329?>
Note: See TracBrowser for help on using the repository browser.