source: trunk/install/piwigo_structure-pdo-sqlite.sql @ 8802

Last change on this file since 8802 was 8802, checked in by plg, 13 years ago

bug 937 fixed: makes sure a user won't see the thumbnail of a photo that has a
higher privacy level than user privacy level.

For an acceptable solution at performance level, I have implemented a cache:
for a given user, each album has a representative_picture_id. This cache also
avoids to perform numerous "order by rand()" SQL queries which is the case
when $confallow_random_representative = true;

File size: 15.4 KB
Line 
1-----------------------------------------------------------------------------
2-- piwigo_caddie
3-----------------------------------------------------------------------------
4
5DROP TABLE IF EXISTS piwigo_caddie;
6CREATE TABLE "piwigo_caddie"
7(
8  "user_id" INTEGER default 0 NOT NULL,
9  "element_id" INTEGER default 0 NOT NULL,
10  PRIMARY KEY ("user_id","element_id")
11);
12
13-----------------------------------------------------------------------------
14-- piwigo_categories
15-----------------------------------------------------------------------------
16
17DROP TABLE IF EXISTS piwigo_categories;
18CREATE TABLE "piwigo_categories"
19(
20  "id" INTEGER NOT NULL,
21  "name" VARCHAR(255) default '' NOT NULL,
22  "id_uppercat" INTEGER,
23  "comment" TEXT,
24  "dir" VARCHAR(255),
25  "rank" INTEGER,
26  "status" VARCHAR(50) default 'public',
27  "site_id" INTEGER default 1,
28  "visible" BOOLEAN default true,
29  "representative_picture_id" INTEGER,
30  "uppercats" TEXT,
31  "commentable" BOOLEAN default true,
32  "global_rank" VARCHAR(255),
33  "image_order" VARCHAR(128),
34  "permalink" VARCHAR(64),
35  PRIMARY KEY ("id"),
36  CONSTRAINT "categories_i3" UNIQUE ("permalink")
37);
38
39CREATE INDEX "categories_i2" ON "piwigo_categories" ("id_uppercat");
40
41-----------------------------------------------------------------------------
42-- piwigo_config
43-----------------------------------------------------------------------------
44
45DROP TABLE IF EXISTS piwigo_config;
46CREATE TABLE piwigo_config
47(
48  "param" VARCHAR(40) default '' NOT NULL,
49  "value" TEXT,
50  "comment" VARCHAR(255),
51  PRIMARY KEY ("param")
52);
53
54-----------------------------------------------------------------------------
55-- piwigo_favorites
56-----------------------------------------------------------------------------
57
58DROP TABLE IF EXISTS piwigo_favorites;
59CREATE TABLE piwigo_favorites
60(
61  "user_id" INTEGER default 0 NOT NULL,
62  "image_id" INTEGER default 0 NOT NULL,
63  PRIMARY KEY ("user_id","image_id")
64);
65
66
67-----------------------------------------------------------------------------
68-- piwigo_group_access
69-----------------------------------------------------------------------------
70
71DROP TABLE IF EXISTS piwigo_group_access;
72CREATE TABLE piwigo_group_access
73(
74  "group_id" INTEGER default 0 NOT NULL,
75  "cat_id" INTEGER default 0 NOT NULL,
76  PRIMARY KEY ("group_id","cat_id")
77);
78
79-----------------------------------------------------------------------------
80-- piwigo_groups
81-----------------------------------------------------------------------------
82
83DROP TABLE IF EXISTS piwigo_groups;
84CREATE TABLE piwigo_groups
85(
86  "id" INTEGER NOT NULL,
87  "name" VARCHAR(255) default '' NOT NULL,
88  "is_default" BOOLEAN default false,
89  PRIMARY KEY ("id"),
90  CONSTRAINT "groups_ui1" UNIQUE ("name")
91);
92
93-----------------------------------------------------------------------------
94-- piwigo_history
95-----------------------------------------------------------------------------
96
97DROP TABLE IF EXISTS piwigo_history;
98CREATE TABLE piwigo_history
99(
100  "id" INTEGER NOT NULL,
101  "date" DATE NOT NULL,
102  "time" TIME NOT NULL,
103  "user_id" INTEGER default 0 NOT NULL,
104  "ip" VARCHAR(15) default '' NOT NULL,
105  "section" VARCHAR(50) default NULL,
106  "category_id" INTEGER,
107  "tag_ids" VARCHAR(50),
108  "image_id" INTEGER,
109  "summarized" BOOLEAN default false,
110  "image_type" VARCHAR(50) default NULL,
111  PRIMARY KEY ("id")
112);
113
114
115CREATE INDEX "history_i1" ON "piwigo_history" ("summarized");
116
117-----------------------------------------------------------------------------
118-- piwigo_history_summary
119-----------------------------------------------------------------------------
120
121DROP TABLE IF EXISTS piwigo_history_summary;
122CREATE TABLE piwigo_history_summary
123(
124  "year" INTEGER default 0 NOT NULL,
125  "month" INTEGER,
126  "day" INTEGER,
127  "hour" INTEGER,
128  "nb_pages" INTEGER,
129  "id" INTEGER NOT NULL,
130  PRIMARY KEY ("id"),
131  CONSTRAINT "history_summary_ymdh" UNIQUE ("year","month","day","hour")
132);
133
134-----------------------------------------------------------------------------
135-- piwigo_image_category
136-----------------------------------------------------------------------------
137
138DROP TABLE IF EXISTS piwigo_image_category;
139CREATE TABLE piwigo_image_category
140(
141  "image_id" INTEGER default 0 NOT NULL,
142  "category_id" INTEGER default 0 NOT NULL,
143  "rank" INTEGER,
144  PRIMARY KEY ("image_id","category_id")
145);
146
147
148CREATE INDEX "image_category_i1" ON "piwigo_image_category" ("category_id");
149
150-----------------------------------------------------------------------------
151-- piwigo_image_tag
152-----------------------------------------------------------------------------
153
154DROP TABLE IF EXISTS piwigo_image_tag;
155CREATE TABLE piwigo_image_tag
156(
157  "image_id" INTEGER default 0 NOT NULL,
158  "tag_id" INTEGER default 0 NOT NULL,
159  PRIMARY KEY ("image_id","tag_id")
160);
161
162
163CREATE INDEX "image_tag_i1" ON "piwigo_image_tag" ("tag_id");
164
165-----------------------------------------------------------------------------
166-- piwigo_images
167-----------------------------------------------------------------------------
168
169DROP TABLE IF EXISTS piwigo_images;
170CREATE TABLE piwigo_images
171(
172  "id" INTEGER NOT NULL,
173  "file" VARCHAR(255) default '' NOT NULL,
174  "date_available" TIMESTAMP NOT NULL,
175  "date_creation" TIMESTAMP,
176  "tn_ext" VARCHAR(4) default '',
177  "name" VARCHAR(255),
178  "comment" TEXT,
179  "author" VARCHAR(255),
180  "hit" INTEGER default 0 NOT NULL,
181  "filesize" INTEGER,
182  "width" INTEGER,
183  "height" INTEGER,
184  "representative_ext" VARCHAR(4),
185  "date_metadata_update" DATE,
186  "average_rate" FLOAT,
187  "has_high" BOOLEAN default false,
188  "path" VARCHAR(255) default '' NOT NULL,
189  "storage_category_id" INTEGER,
190  "high_filesize" INTEGER,
191  "level" INTEGER default 0 NOT NULL,
192  "md5sum" CHAR(32),
193  "added_by" INTEGER default 0 NOT NULL,
194  PRIMARY KEY ("id")
195);
196
197
198CREATE INDEX "images_i2" ON "piwigo_images" ("date_available");
199
200CREATE INDEX "images_i3" ON "piwigo_images" ("average_rate");
201
202CREATE INDEX "images_i4" ON "piwigo_images" ("hit");
203
204CREATE INDEX "images_i5" ON "piwigo_images" ("date_creation");
205
206CREATE INDEX "images_i1" ON "piwigo_images" ("storage_category_id");
207
208-----------------------------------------------------------------------------
209-- Table structure for table `piwigo_languages`
210-----------------------------------------------------------------------------
211
212DROP TABLE IF EXISTS piwigo_languages;
213CREATE TABLE piwigo_languages
214(
215  "id" varchar(64) NOT NULL default '',
216  "version" varchar(64) NOT NULL default '0',
217  "name" varchar(64) default NULL,
218  PRIMARY KEY  ("id")
219);
220
221-----------------------------------------------------------------------------
222-- piwigo_old_permalinks
223-----------------------------------------------------------------------------
224
225DROP TABLE IF EXISTS piwigo_old_permalinks;
226CREATE TABLE piwigo_old_permalinks
227(
228  "cat_id" INTEGER default 0 NOT NULL,
229  "permalink" VARCHAR(64) default '' NOT NULL,
230  "date_deleted" TIMESTAMP NOT NULL,
231  "last_hit" TIMESTAMP,
232  "hit" INTEGER default 0 NOT NULL,
233  PRIMARY KEY ("permalink")
234);
235
236
237-----------------------------------------------------------------------------
238-- piwigo_plugins
239-----------------------------------------------------------------------------
240
241DROP TABLE IF EXISTS piwigo_plugins;
242CREATE TABLE piwigo_plugins
243(
244  "id" VARCHAR(64) default '' NOT NULL,
245  "state" VARCHAR(50) default 'inactive',
246  "version" VARCHAR(64) default '0' NOT NULL,
247  PRIMARY KEY ("id")
248);
249
250
251-----------------------------------------------------------------------------
252-- piwigo_rate
253-----------------------------------------------------------------------------
254
255DROP TABLE IF EXISTS piwigo_rate;
256CREATE TABLE piwigo_rate
257(
258  "user_id" INTEGER default 0 NOT NULL,
259  "element_id" INTEGER default 0 NOT NULL,
260  "anonymous_id" VARCHAR(45) default '' NOT NULL,
261  "rate" INTEGER default 0 NOT NULL,
262  "date" DATE  NOT NULL,
263  PRIMARY KEY ("user_id","element_id","anonymous_id")
264);
265
266
267-----------------------------------------------------------------------------
268-- piwigo_search
269-----------------------------------------------------------------------------
270
271DROP TABLE IF EXISTS piwigo_search;
272CREATE TABLE piwigo_search
273(
274  "id" INTEGER NOT NULL,
275  "last_seen" DATE,
276  "rules" TEXT,
277  PRIMARY KEY ("id")
278);
279
280
281-----------------------------------------------------------------------------
282-- piwigo_sessions
283-----------------------------------------------------------------------------
284
285DROP TABLE IF EXISTS piwigo_sessions;
286CREATE TABLE piwigo_sessions
287(
288  "id" VARCHAR(255) default '' NOT NULL,
289  "data" TEXT  NOT NULL,
290  "expiration" TIMESTAMP NOT NULL,
291  PRIMARY KEY ("id")
292);
293
294
295-----------------------------------------------------------------------------
296-- piwigo_sites
297-----------------------------------------------------------------------------
298
299DROP TABLE IF EXISTS piwigo_sites;
300CREATE TABLE piwigo_sites
301(
302  "id" INTEGER NOT NULL,
303  "galleries_url" VARCHAR(255) default '' NOT NULL,
304  PRIMARY KEY ("id"),
305  CONSTRAINT "sites_ui1" UNIQUE ("galleries_url")
306);
307
308
309-----------------------------------------------------------------------------
310-- piwigo_stuffs
311-----------------------------------------------------------------------------
312
313DROP TABLE IF EXISTS piwigo_stuffs;
314CREATE TABLE piwigo_stuffs
315(
316  "id" INTEGER  NOT NULL,
317  "pos" INTEGER  NOT NULL,
318  "name" TEXT  NOT NULL,
319  "descr" VARCHAR(255),
320  "type" VARCHAR(255)  NOT NULL,
321  "datas" TEXT,
322  "users" VARCHAR(255),
323  "groups" VARCHAR(255),
324  "show_title" CHAR  NOT NULL,
325  "on_home" CHAR  NOT NULL,
326  "on_cats" CHAR  NOT NULL,
327  "on_picture" CHAR  NOT NULL,
328  "id_line" VARCHAR(1),
329  "width" INTEGER,
330  PRIMARY KEY ("id")
331);
332
333
334CREATE INDEX "on_home" ON "piwigo_stuffs" ("on_home");
335
336CREATE INDEX "on_cats" ON "piwigo_stuffs" ("on_cats");
337
338CREATE INDEX "on_picture" ON "piwigo_stuffs" ("on_picture");
339
340-----------------------------------------------------------------------------
341-- piwigo_tags
342-----------------------------------------------------------------------------
343
344DROP TABLE IF EXISTS piwigo_tags;
345CREATE TABLE piwigo_tags
346(
347  "id" INTEGER NOT NULL,
348  "name" VARCHAR(255) default '' NOT NULL,
349  "url_name" VARCHAR(255) default '' NOT NULL,
350  PRIMARY KEY ("id")
351);
352
353
354CREATE INDEX "tags_i1" ON "piwigo_tags" ("url_name");
355
356-----------------------------------------------------------------------------
357-- piwigo_themes
358-----------------------------------------------------------------------------
359
360DROP TABLE IF EXISTS "piwigo_themes";
361CREATE TABLE "piwigo_themes"
362(
363  "id" varchar(64) default '' NOT NULL,
364  "version" varchar(64) NOT NULL default '0',
365  "name" varchar(64) default NULL,
366  PRIMARY KEY  ("id")
367);
368
369-----------------------------------------------------------------------------
370-- piwigo_upgrade
371-----------------------------------------------------------------------------
372
373DROP TABLE IF EXISTS piwigo_upgrade;
374CREATE TABLE piwigo_upgrade
375(
376  "id" VARCHAR(20) default '' NOT NULL,
377  "applied" TIMESTAMP NOT NULL,
378  "description" VARCHAR(255),
379  PRIMARY KEY ("id")
380);
381
382
383-----------------------------------------------------------------------------
384-- piwigo_user_access
385-----------------------------------------------------------------------------
386
387DROP TABLE IF EXISTS piwigo_user_access;
388CREATE TABLE piwigo_user_access
389(
390  "user_id" INTEGER default 0 NOT NULL,
391  "cat_id" INTEGER default 0 NOT NULL,
392  PRIMARY KEY ("user_id","cat_id")
393);
394
395
396-----------------------------------------------------------------------------
397-- piwigo_user_cache
398-----------------------------------------------------------------------------
399
400DROP TABLE IF EXISTS piwigo_user_cache;
401CREATE TABLE piwigo_user_cache
402(
403  "user_id" INTEGER default 0 NOT NULL,
404  "need_update" BOOLEAN default true,
405  "cache_update_time" INTEGER default 0 NOT NULL,
406  "forbidden_categories" TEXT,
407  "nb_total_images" INTEGER,
408  "image_access_type" VARCHAR(50) default 'NOT IN',
409  "image_access_list" TEXT,
410  PRIMARY KEY ("user_id")
411);
412
413
414-----------------------------------------------------------------------------
415-- piwigo_user_cache_categories
416-----------------------------------------------------------------------------
417
418DROP TABLE IF EXISTS piwigo_user_cache_categories;
419CREATE TABLE piwigo_user_cache_categories
420(
421  "user_id" INTEGER default 0 NOT NULL,
422  "cat_id" INTEGER default 0 NOT NULL,
423  "date_last" TIMESTAMP,
424  "max_date_last" TIMESTAMP,
425  "nb_images" INTEGER default 0 NOT NULL,
426  "count_images" INTEGER default 0,
427  "count_categories" INTEGER default 0,
428  "user_representative_picture_id" INTEGER,
429  PRIMARY KEY ("user_id","cat_id")
430);
431
432
433-----------------------------------------------------------------------------
434-- piwigo_user_feed
435-----------------------------------------------------------------------------
436
437DROP TABLE IF EXISTS piwigo_user_feed;
438CREATE TABLE piwigo_user_feed
439(
440  "id" VARCHAR(50) default '' NOT NULL,
441  "user_id" INTEGER default 0 NOT NULL,
442  "last_check" TIMESTAMP,
443  PRIMARY KEY ("id")
444);
445
446
447-----------------------------------------------------------------------------
448-- piwigo_user_group
449-----------------------------------------------------------------------------
450
451DROP TABLE IF EXISTS piwigo_user_group;
452CREATE TABLE piwigo_user_group
453(
454  "user_id" INTEGER default 0 NOT NULL,
455  "group_id" INTEGER default 0 NOT NULL,
456  PRIMARY KEY ("user_id","group_id")
457);
458
459
460-----------------------------------------------------------------------------
461-- piwigo_user_infos
462-----------------------------------------------------------------------------
463
464DROP TABLE IF EXISTS piwigo_user_infos;
465CREATE TABLE piwigo_user_infos
466(
467  "user_id" INTEGER default 0 NOT NULL,
468  "nb_image_line" INTEGER default 5 NOT NULL,
469  "nb_line_page" INTEGER default 3 NOT NULL,
470  "status" VARCHAR(50) default 'guest',
471  "language" VARCHAR(50) default 'en_UK' NOT NULL,
472  "maxwidth" INTEGER,
473  "maxheight" INTEGER,
474  "expand" BOOLEAN default false,
475  "show_nb_comments" BOOLEAN default false,
476  "show_nb_hits" BOOLEAN default false,
477  "recent_period" INTEGER default 7 NOT NULL,
478  "theme" VARCHAR(255) default 'Sylvia' NOT NULL,
479  "registration_date" TIMESTAMP NOT NULL,
480  "enabled_high" BOOLEAN default true,
481  "level" INTEGER default 0 NOT NULL,
482  PRIMARY KEY ("user_id"),
483  CONSTRAINT "user_infos_ui1" UNIQUE ("user_id")
484);
485
486
487-----------------------------------------------------------------------------
488-- piwigo_user_mail_notification
489-----------------------------------------------------------------------------
490
491DROP TABLE IF EXISTS piwigo_user_mail_notification;
492CREATE TABLE piwigo_user_mail_notification
493(
494  "user_id" INTEGER default 0 NOT NULL,
495  "check_key" VARCHAR(16) default '' NOT NULL,
496  "enabled" BOOLEAN default false,
497  "last_send" TIMESTAMP,
498  PRIMARY KEY ("user_id"),
499  CONSTRAINT "user_mail_notification_ui1" UNIQUE ("check_key")
500);
501
502
503-----------------------------------------------------------------------------
504-- piwigo_users
505-----------------------------------------------------------------------------
506
507DROP TABLE IF EXISTS piwigo_users;
508CREATE TABLE piwigo_users
509(
510  "id" INTEGER NOT NULL,
511  "username" VARCHAR(100) default '' NOT NULL,
512  "password" VARCHAR(32),
513  "mail_address" VARCHAR(255),
514  PRIMARY KEY ("id"),
515  CONSTRAINT "users_ui1" UNIQUE ("username")
516);
517
518
519-----------------------------------------------------------------------------
520-- piwigo_comments
521-----------------------------------------------------------------------------
522
523DROP TABLE IF EXISTS piwigo_comments;
524CREATE TABLE piwigo_comments
525(
526  "id" INTEGER NOT NULL,
527  "image_id" INTEGER default 0 NOT NULL,
528  "date" TIMESTAMP  NOT NULL,
529  "author" VARCHAR(255),
530  "content" TEXT,
531  "validated" BOOLEAN default false,
532  "validation_date" TIMESTAMP,
533  "author_id" INTEGER REFERENCES "piwigo_users" (id),
534  PRIMARY KEY ("id")
535);
536
537CREATE INDEX "comments_i2" ON "piwigo_comments" ("validation_date");
538CREATE INDEX "comments_i1" ON "piwigo_comments" ("image_id");
539
Note: See TracBrowser for help on using the repository browser.