source: extensions/ConcoursPhoto/maintain.inc.php

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

Correct maintain file

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}
172
173
174function plugin_activate() 
175{
176  global $prefixeTable;
177
178
179        $query = 'SHOW TABLES LIKE "' . $prefixeTable . 'concours"';
180        $result = pwg_query($query);
181        if (!pwg_db_fetch_row($result))
182        {
183          $this->plugin_install();
184        }
185
186        // new column on concours on piwigo 2.0.0
187        $result = pwg_query('SHOW COLUMNS FROM `'.$prefixeTable.'concours` LIKE "guest";');
188        if (!pwg_db_num_rows($result))
189          upgrade_concours_from_100();
190        // new column on concours on piwigo 2.9.1
191        $result = pwg_query('SHOW COLUMNS FROM `'.$prefixeTable.'concours` LIKE "admin";');
192        if (!pwg_db_num_rows($result))
193          upgrade_concours_from_290();
194        // new column on concours on piwigo 11.0.2
195        $result = pwg_query('SHOW COLUMNS FROM `'.$prefixeTable.'concours` LIKE "Podium_onCat";');
196        if (!pwg_db_num_rows($result))
197          upgrade_concours_from_1102();
198
199        // new column on concours_result on piwigo 2.0.0
200        $result = pwg_query('SHOW COLUMNS FROM `'.$prefixeTable.'concours_result` LIKE "moyenne";');
201        if (!pwg_db_num_rows($result))
202          upgrade_concoursresult_from_100();
203        // new column on concours_result on piwigo 2.9.0
204        $result = pwg_query('SHOW COLUMNS FROM `'.$prefixeTable.'concours_result` LIKE "moderation1";');
205        if (!pwg_db_num_rows($result))
206          upgrade_concoursresult_from_200();
207 
208}
209
210  function plugin_update()
211  {
212        $this->plugin_install();
213  }
214 
215
216function plugin_uninstall() 
217{
218        global $prefixeTable;
219
220        $q = 'DROP TABLE ' . $prefixeTable . 'concours_result,
221        ' . $prefixeTable . 'concours_detail,
222        ' . $prefixeTable . 'concours_data,
223        ' . $prefixeTable . 'concours   ;';
224        pwg_query($q);
225
226        $q = '
227          DELETE FROM '.CONFIG_TABLE.'
228          WHERE param="concoursphoto" LIMIT 1
229        ;';
230        pwg_query($q);
231
232}
233
234
235
236
237       
238
239// Add new parameter in database in version 1.0.1:
240// - moy : moyenne of global note with all participant
241// - nbvotant : nb of vote for an image
242// - method = type of rank calculation (1-> total; 2-> moyenne)
243function upgrade_concoursresult_from_100()
244{
245        global $prefixeTable;
246        // Add new parameters
247        $query = 'ALTER TABLE ' . $prefixeTable . 'concours_result
248        ADD `moyenne` float default 0 AFTER `note`,
249        ADD `nbvotant` smallint(5) default 0 AFTER `moyenne`
250        ;';
251
252        pwg_query($query);
253       
254        // TODO : Recalcul the moyenne and the nb of participation if the table still exist for the selected concours
255
256        $query = 'ALTER TABLE ' . $prefixeTable . 'concours
257        ADD     `method` smallint(5) default 1 NOT NULL
258        ;';
259
260        pwg_query($query);
261 
262}
263
264// Add new parameter in database in version 2.9.0:
265// - moderation1 : global result with method moderation 1
266// - moderation2 : global result with method moderation 1
267function upgrade_concoursresult_from_200()
268{
269        global $prefixeTable;
270        // Add new parameters
271        $query = 'ALTER TABLE ' . $prefixeTable . 'concours_result
272        ADD `moderation1` float default 0 AFTER `moyenne`,
273        ADD `moderation2` float default 0 AFTER `moderation1`
274        ;';
275
276        pwg_query($query); 
277}
278
279
280
281// Add new parameter in database in version 2.0.0:
282// - guest : boolean to allow guest to use this function (concours)
283function upgrade_concours_from_100()
284{
285        global $prefixeTable;
286        // Add new parameters
287        $query = 'ALTER TABLE ' . $prefixeTable . 'concours
288        ADD `guest` boolean default FALSE AFTER `method`
289        ;';
290
291        pwg_query($query);
292        // Add new parameters
293        $query = 'ALTER TABLE ' . $prefixeTable . 'concours_data
294        ADD `ipguest` longtext default NULL AFTER `comment`
295        ;';
296
297        pwg_query($query);
298 
299}
300// Add new parameter in database in version 2.9.1:
301// - admin : boolean to allow admin  to access to contest( even if he's not in a contest)
302function upgrade_concours_from_290()
303{
304        global $prefixeTable;
305        // Add new parameters
306        $query = 'ALTER TABLE ' . $prefixeTable . 'concours
307        ADD `admin` boolean default FALSE AFTER `guest`
308        ;';
309
310        pwg_query($query);
311}
312
313
314// Add new parameter in database in version 11.0.3:
315// - Podium_onCat : Add Podium on category page (after result)
316function upgrade_concours_from_1102()
317{
318        global $prefixeTable;
319        // Add new parameters
320        $query = 'ALTER TABLE ' . $prefixeTable . 'concours
321        ADD `Podium_onCat` boolean default FALSE AFTER `admin`
322        ;';
323
324        pwg_query($query); 
325}
326
327
328?>
Note: See TracBrowser for help on using the repository browser.