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

Revision 4368, 7.4 KB checked in by tiico, 10 years ago (diff)

[ConcoursPhoto] Correct some bug, update database and add audit page (Need to be completed)

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