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

Last change on this file since 13616 was 8946, checked in by tiico, 14 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: 8.3 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
9
10function plugin_install()
11{
12        global $prefixeTable, $conf;
13
14        $query = 'SHOW TABLES LIKE "' . $prefixeTable . 'concours"';
15        $result = pwg_query($query);
16        if (!mysql_fetch_row($result))
17        {
18        // Concours description
19                $q = 'CREATE TABLE `' . $prefixeTable . 'concours` (
20                                `id` smallint(5) NOT NULL,
21                                `create_date` datetime NOT NULL,
22                                `name` text NOT NULL,
23                                `descr` varchar(255) default NULL,
24                                `begin_date` datetime NOT NULL,
25                                `end_date` datetime NOT NULL,
26                                `category` smallint(5) default NULL,
27                                `groups` varchar(255) default NULL,
28                                `method` smallint(5) default 1 NOT NULL,
29                                `guest` Boolean default FALSE,
30                               
31                                PRIMARY KEY  (`id`)
32                                ) DEFAULT CHARSET=utf8;';
33                pwg_query($q);
34
35        // Concours description detail (criterias)
36                $q = 'CREATE TABLE `' . $prefixeTable . 'concours_detail` (
37                                `id` smallint(5) NOT NULL,
38                                `id_concours` smallint(5) NOT NULL,
39                                `criteria_id` smallint(5) NOT NULL,
40                                `name` text NOT NULL,
41                                `descr` varchar(255) default NULL,
42                                `min_value` int default 0,
43                                `max_value` int default 0,
44                                `ponderation` int default 1,
45                                `uppercriteria` smallint(5) default NULL,
46                               
47                                PRIMARY KEY  (`id`),
48                                FOREIGN KEY (`id_concours`) REFERENCES ' . $prefixeTable . 'concours(id)
49                                ) DEFAULT CHARSET=utf8;';
50                pwg_query($q);
51
52
53        // Concours notation (by users)
54                $q = 'CREATE TABLE `' . $prefixeTable . 'concours_data` (
55                                `id` smallint(5) NOT NULL,
56                                `id_concours` smallint(5) NOT NULL,
57                                `user_id` smallint(5) NOT NULL,
58                                `create_date` datetime NOT NULL,
59                                `img_id` smallint(5) NOT NULL,
60                                `datas` longtext default NULL,
61                                `comment` longtext default NULL,                               
62                                `ipguest` longtext default NULL,
63                                PRIMARY KEY  (`id`)
64                                ) DEFAULT CHARSET=utf8;';
65                pwg_query($q);
66               
67        // Concours result (synthesis)
68                $q = 'CREATE TABLE `' . $prefixeTable . 'concours_result` (
69                                `id_concours` smallint(5) NOT NULL,
70                                `img_id` smallint(5) NOT NULL,
71                                `date` datetime NOT NULL,
72                                `note` float default 0,
73                                `datas` longtext default NULL,
74                                `file_name` longtext default NULL,
75                                `moyenne` float default 0,
76                                `nbvotant` smallint(5) default 0,
77                               
78                                PRIMARY KEY  (`img_id`, `id_concours`),
79                                FOREIGN KEY (`id_concours`) REFERENCES ' . $prefixeTable . 'concours(id)                               
80                                ) DEFAULT CHARSET=utf8;';
81                pwg_query($q);
82               
83        // Default values  insertion
84    $q = "INSERT INTO `" . $prefixeTable . "concours`
85                                ( `id`,
86                                `create_date`,
87                                `name`,
88                                `descr`,
89                                `begin_date`,
90                                `end_date`,
91                                `category`,
92                                `groups`)
93                        VALUES (0, now(), 'Default', 'default values', now(), now(), NULL, NULL);";
94    pwg_query($q);
95
96    // Default values for criterias (concours_id=0)
97    $q = "INSERT INTO `" . $prefixeTable . "concours_detail`
98                                (`id`,
99                                `id_concours` ,
100                                `criteria_id` ,
101                                `name`,
102                                `descr`,
103                                `min_value`,
104                                `max_value`,
105                                `ponderation` ,
106                                `uppercriteria`)
107                        VALUES (1, 0, 1, 'Artistique', 'Artistique', 0, 10, 1, NULL),
108                         (2, 0, 2, 'Respect du sujet', 'Sujet en rapport avec le theme', 0, 1, 1, 1),
109                         (3, 0, 3, 'Sujet bien identifié', 'Sans ambiguite', 0, 2, 1, 1),
110                         (4, 0, 4, 'Traitement du sujet', 'Expression/Attitude/mouvement', 0, 2, 1, 1),
111                         (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),
112
113                         (6, 0, 6, 'Technique', 'Technique', 0, 6, 1, NULL),
114                         (7, 0, 7, 'Nettete de l\'image', 'Etagement des plans/Pique de l\'image', 0, 3, 1, 6),
115                         (8, 0, 8, 'Rendu des couleurs (ou gris)', 'Teintes/Staurations', 0, 1, 1, 6),
116                         (9, 0, 9, 'Exposition', 'Equilibre hautes/basses lumieres', 0, 2, 1, 6),
117
118                         (10, 0, 10, 'Coup de coeur', 'coup de coeur', 0, 4, 1, NULL),
119                         (11, 0, 11, 'Emotion spontanee', 'emotion spontanee', 0, 2, 1, 10),
120                         (12, 0, 12, 'Adhesion au choix artistique', 'Adhesion au choix artistique', 0, 2, 1, 10);";
121                         
122    pwg_query($q);
123
124    $q = '
125    INSERT INTO '.CONFIG_TABLE.' (param,value,comment)
126    VALUES ("concoursphoto","","Configuration Concours Photo")
127    ;';
128
129    pwg_query($q);
130   
131   
132/*     
133        // TEST INSERTION INTO DB (Goupe test =1)
134    $q = "INSERT INTO `" . $prefixeTable . "concours`
135                                ( `id`,
136                                `create_date`,
137                                `name`,
138                                `descr`,
139                                `begin_date`,
140                                `end_date`,
141                                `category`,
142                                `groups`)
143                        VALUES (1, now(), 'Test', 'Test Concours', now(), '2019-09-02 18:08:00', 2, 1);";
144    pwg_query($q);
145       
146    $q = "INSERT INTO `" . $prefixeTable . "concours_data`
147                                (`id` ,
148                                `id_concours` ,
149                                `user_id` ,
150                                `create_date` ,
151                                `img_id` ,
152                                `datas` )
153                        VALUES (1, 1, 3, now(), 54, \"2=1;3=1;4=2;5=3;7=1;8=0;9=0,5;11=1,5;12=2\");";
154    pwg_query($q);
155    $q = "INSERT INTO `" . $prefixeTable . "concours_detail`
156                                (`id`,
157                                `id_concours` ,
158                                `criteria_id` ,
159                                `name`,
160                                `descr`,
161                                `min_value`,
162                                `max_value`,
163                                `ponderation` ,
164                                `uppercriteria`)
165                        VALUES (13, 1, 1, 'Artistique', 'Artistique', 0, 10, 1, NULL),
166                         (14, 1, 2, 'Respect du sujet', 'Sujet en rapport avec le theme', 0, 1, 1, 1),
167                         (15, 1, 3, 'Sujet bien identifié', 'Sans ambiguite', 0, 2, 1, 1),
168                         (16, 1, 4, 'Traitement du sujet', 'Expression/Attitude/mouvement', 0, 2, 1, 1),
169                         (17, 1, 5, 'Mise en valeur du sujet', 'Cadrage/Harmonie de la composition/Esthetique de l\'image/Choix de l\'eclairage', 0, 5, 1, 1),
170
171                         (18, 1, 6, 'Technique', 'Technique', 0, 6, 1, NULL),
172                         (19, 1, 7, 'Nettete de l\'image', 'Etagement des plans/Pique de l\'image', 0, 3, 1, 6),
173                         (20, 1, 8, 'Rendu des couleurs (ou gris)', 'Teintes/Staurations', 0, 1, 1, 6),
174                         (21, 1, 9, 'Exposition', 'Equilibre hautes/basses lumieres', 0, 2, 1, 6),
175
176                         (22, 1, 10, 'Coup de coeur', 'coup de coeur', 0, 4, 1, NULL),
177                         (23, 1, 11, 'Emotion spontanee', 'emotion spontanee', 0, 2, 1, 10),
178                         (24, 1, 12, 'Adhesion au choix artistique', 'Adhesion au choix artistique', 0, 2, 1, 10);";
179                         
180    pwg_query($q);
181        // END TEST INSERTION
182*/
183       
184        }
185
186}
187
188function plugin_activate()
189{
190  global $prefixeTable;
191
192  // Check if upgrade is needed (from 1.0.0)
193  $query = 'SHOW FULL COLUMNS FROM ' . $prefixeTable . 'concours_result;';
194  $result = array_from_query($query, 'Field');
195  if (count($result) < 7)       // only 6 datas on previous database
196  {
197    upgrade_concoursresult_from_100();
198  }
199  // Check if upgrade is needed (from 1.0.0)
200  $query = 'SHOW FULL COLUMNS FROM ' . $prefixeTable . 'concours;';
201  $result = array_from_query($query, 'Field');
202  if (count($result) < 10)      // only 6 datas on previous database
203  {
204    upgrade_concours_from_100();
205  }
206 
207}
208
209function plugin_uninstall()
210{
211    global $prefixeTable;
212
213        $q = 'DROP TABLE ' . $prefixeTable . 'concours,
214        ' . $prefixeTable . 'concours_detail,
215        ' . $prefixeTable . 'concours_data,
216        ' . $prefixeTable . 'concours_result    ;';
217    pwg_query($q);
218
219    $q = '
220      DELETE FROM '.CONFIG_TABLE.'
221      WHERE param="concoursphoto" LIMIT 1
222    ;';
223    pwg_query($q);
224
225}
226
227// Add new parameter in database in version 1.0.1:
228// - moy : moyenne of global note with all participant
229// - nbvotant : nb of vote for an image
230// - method = type of rank calculation (1-> total; 2-> moyenne)
231function upgrade_concoursresult_from_100()
232{
233        global $prefixeTable;
234        // Add new parameters
235        $query = 'ALTER TABLE ' . $prefixeTable . 'concours_result
236        ADD `moyenne` float default 0 AFTER `note`,
237        ADD `nbvotant` smallint(5) default 0 AFTER `moyenne`
238        ;';
239
240        pwg_query($query);
241       
242        // TODO : Recalcul the moyenne and the nb of participation if the table still exist for the selected concours
243
244        $query = 'ALTER TABLE ' . $prefixeTable . 'concours
245        ADD     `method` smallint(5) default 1 NOT NULL
246        ;';
247
248        pwg_query($query);
249 
250}
251
252// Add new parameter in database in version 2.0.0:
253// - guest : boolean to allow guest to use this function (concours)
254function upgrade_concours_from_100()
255{
256        global $prefixeTable;
257        // Add new parameters
258        $query = 'ALTER TABLE ' . $prefixeTable . 'concours
259        ADD `guest` boolean default FALSE AFTER `method`
260        ;';
261
262        pwg_query($query);
263        // Add new parameters
264        $query = 'ALTER TABLE ' . $prefixeTable . 'concours_data
265        ADD `ipguest` longtext default NULL AFTER `comment`
266        ;';
267
268        pwg_query($query);
269 
270}
271
272?>
Note: See TracBrowser for help on using the repository browser.