piwigo/install/piwigo_structure-pgsql.sql
plegall 2de0f01dce feature 2027 implemented: the "lost password" feature was rewritten.
The algorithm is highly inspired from WordPress :

1) in a single field, you give a username or an email
2) Piwigo sends an email with the activation key
3) the user clicks on the link in the email (with the activation key) and is able to set a new password

The "lost password" feature is no longer limited to "classic" users:
administrators and webmasters can use it too (no need to tell webmasters
that they can only change their password in the database)


git-svn-id: http://piwigo.org/svn/trunk@11992 68402e56-0260-453c-a942-63ccdbb3a9ee
2011-08-24 20:03:53 +00:00

656 lines
19 KiB
SQL

-----------------------------------------------------------------------------
-- piwigo_caddie
-----------------------------------------------------------------------------
DROP TABLE IF EXISTS piwigo_caddie;
CREATE TABLE "piwigo_caddie"
(
"user_id" INTEGER default 0 NOT NULL,
"element_id" INTEGER default 0 NOT NULL,
PRIMARY KEY ("user_id","element_id")
);
COMMENT ON TABLE "piwigo_caddie" IS '';
SET search_path TO public;
-----------------------------------------------------------------------------
-- piwigo_categories
-----------------------------------------------------------------------------
DROP TYPE IF EXISTS CATEGORIES_STATUS;
CREATE TYPE CATEGORIES_STATUS AS ENUM('public', 'private');
DROP TABLE IF EXISTS "piwigo_categories" CASCADE;
CREATE TABLE "piwigo_categories"
(
"id" serial NOT NULL,
"name" VARCHAR(255) default '' NOT NULL,
"id_uppercat" INTEGER,
"comment" TEXT,
"dir" VARCHAR(255),
"rank" INTEGER,
"status" CATEGORIES_STATUS default 'public'::CATEGORIES_STATUS,
"site_id" INTEGER default 1,
"visible" BOOLEAN default true,
"representative_picture_id" INTEGER,
"uppercats" TEXT,
"commentable" BOOLEAN default true,
"global_rank" VARCHAR(255),
"image_order" VARCHAR(128),
"permalink" VARCHAR(64),
PRIMARY KEY ("id"),
CONSTRAINT "categories_i3" UNIQUE ("permalink")
);
COMMENT ON TABLE "piwigo_categories" IS '';
SET search_path TO public;
CREATE INDEX "categories_i2" ON "piwigo_categories" ("id_uppercat");
-----------------------------------------------------------------------------
-- piwigo_config
-----------------------------------------------------------------------------
DROP TABLE IF EXISTS "piwigo_config" CASCADE;
CREATE TABLE "piwigo_config"
(
"param" VARCHAR(40) default '' NOT NULL,
"value" TEXT,
"comment" VARCHAR(255),
PRIMARY KEY ("param")
);
COMMENT ON TABLE "piwigo_config" IS '';
SET search_path TO public;
-----------------------------------------------------------------------------
-- piwigo_favorites
-----------------------------------------------------------------------------
DROP TABLE IF EXISTS "piwigo_favorites" CASCADE;
CREATE TABLE "piwigo_favorites"
(
"user_id" INTEGER default 0 NOT NULL,
"image_id" INTEGER default 0 NOT NULL,
PRIMARY KEY ("user_id","image_id")
);
COMMENT ON TABLE "piwigo_favorites" IS '';
SET search_path TO public;
-----------------------------------------------------------------------------
-- piwigo_group_access
-----------------------------------------------------------------------------
DROP TABLE IF EXISTS "piwigo_group_access" CASCADE;
CREATE TABLE "piwigo_group_access"
(
"group_id" INTEGER default 0 NOT NULL,
"cat_id" INTEGER default 0 NOT NULL,
PRIMARY KEY ("group_id","cat_id")
);
COMMENT ON TABLE "piwigo_group_access" IS '';
SET search_path TO public;
-----------------------------------------------------------------------------
-- piwigo_groups
-----------------------------------------------------------------------------
DROP TABLE IF EXISTS "piwigo_groups" CASCADE;
CREATE TABLE "piwigo_groups"
(
"id" serial NOT NULL,
"name" VARCHAR(255) default '' NOT NULL,
"is_default" BOOLEAN default false,
PRIMARY KEY ("id"),
CONSTRAINT "groups_ui1" UNIQUE ("name")
);
COMMENT ON TABLE "piwigo_groups" IS '';
SET search_path TO public;
-----------------------------------------------------------------------------
-- piwigo_history
-----------------------------------------------------------------------------
DROP TYPE IF EXISTS HISTORY_SECTION;
CREATE TYPE HISTORY_SECTION AS ENUM('categories','tags','search','list','favorites','most_visited','best_rated','recent_pics','recent_cats');
DROP TYPE IF EXISTS HISTORY_IMAGE_TYPE;
CREATE TYPE HISTORY_IMAGE_TYPE AS ENUM('picture','high','other');
DROP TABLE IF EXISTS "piwigo_history" CASCADE;
CREATE TABLE "piwigo_history"
(
"id" serial NOT NULL,
"date" DATE NOT NULL,
"time" TIME NOT NULL,
"user_id" INTEGER default 0 NOT NULL,
"ip" VARCHAR(15) default '' NOT NULL,
"section" HISTORY_SECTION default NULL,
"category_id" INTEGER,
"tag_ids" VARCHAR(50),
"image_id" INTEGER,
"summarized" BOOLEAN default false,
"image_type" HISTORY_IMAGE_TYPE default NULL,
PRIMARY KEY ("id")
);
COMMENT ON TABLE "piwigo_history" IS '';
SET search_path TO public;
CREATE INDEX "history_i1" ON "piwigo_history" ("summarized");
-----------------------------------------------------------------------------
-- piwigo_history_summary
-----------------------------------------------------------------------------
DROP TABLE IF EXISTS "piwigo_history_summary" CASCADE;
CREATE TABLE "piwigo_history_summary"
(
"year" INTEGER default 0 NOT NULL,
"month" INTEGER,
"day" INTEGER,
"hour" INTEGER,
"nb_pages" INTEGER,
"id" serial NOT NULL,
PRIMARY KEY ("id"),
CONSTRAINT "history_summary_ymdh" UNIQUE ("year","month","day","hour")
);
COMMENT ON TABLE "piwigo_history_summary" IS '';
SET search_path TO public;
-----------------------------------------------------------------------------
-- piwigo_image_category
-----------------------------------------------------------------------------
DROP TABLE IF EXISTS "piwigo_image_category" CASCADE;
CREATE TABLE "piwigo_image_category"
(
"image_id" INTEGER default 0 NOT NULL,
"category_id" INTEGER default 0 NOT NULL,
"rank" INTEGER,
PRIMARY KEY ("image_id","category_id")
);
COMMENT ON TABLE "piwigo_image_category" IS '';
SET search_path TO public;
CREATE INDEX "image_category_i1" ON "piwigo_image_category" ("category_id");
-----------------------------------------------------------------------------
-- piwigo_image_tag
-----------------------------------------------------------------------------
DROP TABLE IF EXISTS "piwigo_image_tag" CASCADE;
CREATE TABLE "piwigo_image_tag"
(
"image_id" INTEGER default 0 NOT NULL,
"tag_id" INTEGER default 0 NOT NULL,
PRIMARY KEY ("image_id","tag_id")
);
COMMENT ON TABLE "piwigo_image_tag" IS '';
SET search_path TO public;
CREATE INDEX "image_tag_i1" ON "piwigo_image_tag" ("tag_id");
-----------------------------------------------------------------------------
-- piwigo_images
-----------------------------------------------------------------------------
DROP TABLE IF EXISTS "piwigo_images" CASCADE;
CREATE TABLE "piwigo_images"
(
"id" serial NOT NULL,
"file" VARCHAR(255) default '' NOT NULL,
"date_available" TIMESTAMP NOT NULL,
"date_creation" TIMESTAMP,
"tn_ext" VARCHAR(4) default '',
"name" VARCHAR(255),
"comment" TEXT,
"author" VARCHAR(255),
"hit" INTEGER default 0 NOT NULL,
"filesize" INTEGER,
"width" INTEGER,
"height" INTEGER,
"representative_ext" VARCHAR(4),
"date_metadata_update" DATE,
"rating_score" FLOAT,
"has_high" BOOLEAN default false,
"path" VARCHAR(255) default '' NOT NULL,
"storage_category_id" INTEGER,
"high_filesize" INTEGER,
"high_width" INTEGER,
"high_height" INTEGER,
"level" INTEGER default 0 NOT NULL,
"md5sum" CHAR(32),
"added_by" INTEGER default 0 NOT NULL,
PRIMARY KEY ("id")
);
COMMENT ON TABLE "piwigo_images" IS '';
SET search_path TO public;
CREATE INDEX "images_i2" ON "piwigo_images" ("date_available");
CREATE INDEX "images_i3" ON "piwigo_images" ("rating_score");
CREATE INDEX "images_i4" ON "piwigo_images" ("hit");
CREATE INDEX "images_i5" ON "piwigo_images" ("date_creation");
CREATE INDEX "images_i1" ON "piwigo_images" ("storage_category_id");
-----------------------------------------------------------------------------
-- Table structure for table `piwigo_languages`
-----------------------------------------------------------------------------
DROP TABLE IF EXISTS "piwigo_languages";
CREATE TABLE "piwigo_languages" (
"id" varchar(64) NOT NULL default '',
"version" varchar(64) NOT NULL default '0',
"name" varchar(64) default NULL,
PRIMARY KEY ("id")
);
COMMENT ON TABLE "piwigo_languages" IS '';
-----------------------------------------------------------------------------
-- piwigo_old_permalinks
-----------------------------------------------------------------------------
DROP TABLE IF EXISTS "piwigo_old_permalinks" CASCADE;
CREATE TABLE "piwigo_old_permalinks"
(
"cat_id" INTEGER default 0 NOT NULL,
"permalink" VARCHAR(64) default '' NOT NULL,
"date_deleted" TIMESTAMP NOT NULL,
"last_hit" TIMESTAMP,
"hit" INTEGER default 0 NOT NULL,
PRIMARY KEY ("permalink")
);
COMMENT ON TABLE "piwigo_old_permalinks" IS '';
SET search_path TO public;
-----------------------------------------------------------------------------
-- piwigo_plugins
-----------------------------------------------------------------------------
DROP TYPE IF EXISTS PLUGINS_STATE;
CREATE TYPE PLUGINS_STATE AS ENUM('active', 'inactive');
DROP TABLE IF EXISTS "piwigo_plugins" CASCADE;
CREATE TABLE "piwigo_plugins"
(
"id" VARCHAR(64) default '' NOT NULL,
"state" PLUGINS_STATE default 'inactive'::PLUGINS_STATE,
"version" VARCHAR(64) default '0' NOT NULL,
PRIMARY KEY ("id")
);
COMMENT ON TABLE "piwigo_plugins" IS '';
SET search_path TO public;
-----------------------------------------------------------------------------
-- piwigo_rate
-----------------------------------------------------------------------------
DROP TABLE IF EXISTS "piwigo_rate" CASCADE;
CREATE TABLE "piwigo_rate"
(
"user_id" INTEGER default 0 NOT NULL,
"element_id" INTEGER default 0 NOT NULL,
"anonymous_id" VARCHAR(45) default '' NOT NULL,
"rate" INTEGER default 0 NOT NULL,
"date" DATE NOT NULL,
PRIMARY KEY ("user_id","element_id","anonymous_id")
);
COMMENT ON TABLE "piwigo_rate" IS '';
SET search_path TO public;
-----------------------------------------------------------------------------
-- piwigo_search
-----------------------------------------------------------------------------
DROP TABLE IF EXISTS "piwigo_search" CASCADE;
CREATE TABLE "piwigo_search"
(
"id" serial NOT NULL,
"last_seen" DATE,
"rules" TEXT,
PRIMARY KEY ("id")
);
COMMENT ON TABLE "piwigo_search" IS '';
SET search_path TO public;
-----------------------------------------------------------------------------
-- piwigo_sessions
-----------------------------------------------------------------------------
DROP TABLE IF EXISTS "piwigo_sessions" CASCADE;
CREATE TABLE "piwigo_sessions"
(
"id" VARCHAR(255) default '' NOT NULL,
"data" TEXT NOT NULL,
"expiration" TIMESTAMP NOT NULL,
PRIMARY KEY ("id")
);
COMMENT ON TABLE "piwigo_sessions" IS '';
SET search_path TO public;
-----------------------------------------------------------------------------
-- piwigo_sites
-----------------------------------------------------------------------------
DROP TABLE IF EXISTS "piwigo_sites" CASCADE;
CREATE TABLE "piwigo_sites"
(
"id" serial NOT NULL,
"galleries_url" VARCHAR(255) default '' NOT NULL,
PRIMARY KEY ("id"),
CONSTRAINT "sites_ui1" UNIQUE ("galleries_url")
);
COMMENT ON TABLE "piwigo_sites" IS '';
SET search_path TO public;
-----------------------------------------------------------------------------
-- piwigo_stuffs
-----------------------------------------------------------------------------
DROP TABLE IF EXISTS "piwigo_stuffs" CASCADE;
CREATE TABLE "piwigo_stuffs"
(
"id" INTEGER NOT NULL,
"pos" INTEGER NOT NULL,
"name" TEXT NOT NULL,
"descr" VARCHAR(255),
"type" VARCHAR(255) NOT NULL,
"datas" TEXT,
"users" VARCHAR(255),
"groups" VARCHAR(255),
"show_title" CHAR NOT NULL,
"on_home" CHAR NOT NULL,
"on_cats" CHAR NOT NULL,
"on_picture" CHAR NOT NULL,
"id_line" VARCHAR(1),
"width" INTEGER,
PRIMARY KEY ("id")
);
COMMENT ON TABLE "piwigo_stuffs" IS '';
SET search_path TO public;
CREATE INDEX "on_home" ON "piwigo_stuffs" ("on_home");
CREATE INDEX "on_cats" ON "piwigo_stuffs" ("on_cats");
CREATE INDEX "on_picture" ON "piwigo_stuffs" ("on_picture");
-----------------------------------------------------------------------------
-- piwigo_tags
-----------------------------------------------------------------------------
DROP TABLE IF EXISTS "piwigo_tags" CASCADE;
CREATE TABLE "piwigo_tags"
(
"id" serial NOT NULL,
"name" VARCHAR(255) default '' NOT NULL,
"url_name" VARCHAR(255) default '' NOT NULL,
PRIMARY KEY ("id")
);
COMMENT ON TABLE "piwigo_tags" IS '';
SET search_path TO public;
CREATE INDEX "tags_i1" ON "piwigo_tags" ("url_name");
-----------------------------------------------------------------------------
-- piwigo_themes
-----------------------------------------------------------------------------
DROP TABLE IF EXISTS "piwigo_themes" CASCADE;
CREATE TABLE "piwigo_themes"
(
"id" varchar(64) default '' NOT NULL,
"version" varchar(64) NOT NULL default '0',
"name" varchar(64) default NULL,
PRIMARY KEY ("id")
);
COMMENT ON TABLE "piwigo_themes" IS '';
-----------------------------------------------------------------------------
-- piwigo_upgrade
-----------------------------------------------------------------------------
DROP TABLE IF EXISTS "piwigo_upgrade" CASCADE;
CREATE TABLE "piwigo_upgrade"
(
"id" VARCHAR(20) default '' NOT NULL,
"applied" TIMESTAMP NOT NULL,
"description" VARCHAR(255),
PRIMARY KEY ("id")
);
COMMENT ON TABLE "piwigo_upgrade" IS '';
SET search_path TO public;
-----------------------------------------------------------------------------
-- piwigo_user_access
-----------------------------------------------------------------------------
DROP TABLE IF EXISTS "piwigo_user_access" CASCADE;
CREATE TABLE "piwigo_user_access"
(
"user_id" INTEGER default 0 NOT NULL,
"cat_id" INTEGER default 0 NOT NULL,
PRIMARY KEY ("user_id","cat_id")
);
COMMENT ON TABLE "piwigo_user_access" IS '';
SET search_path TO public;
-----------------------------------------------------------------------------
-- piwigo_user_cache
-----------------------------------------------------------------------------
DROP TYPE IF EXISTS USER_CACHE_IMAGE_ACCESS_TYPE;
CREATE TYPE USER_CACHE_IMAGE_ACCESS_TYPE AS ENUM('NOT IN','IN');
DROP TABLE IF EXISTS "piwigo_user_cache" CASCADE;
CREATE TABLE "piwigo_user_cache"
(
"user_id" INTEGER default 0 NOT NULL,
"need_update" BOOLEAN default true,
"cache_update_time" INTEGER default 0 NOT NULL,
"forbidden_categories" TEXT,
"nb_total_images" INTEGER,
"image_access_type" USER_CACHE_IMAGE_ACCESS_TYPE default 'NOT IN'::USER_CACHE_IMAGE_ACCESS_TYPE,
"image_access_list" TEXT,
PRIMARY KEY ("user_id")
);
COMMENT ON TABLE "piwigo_user_cache" IS '';
SET search_path TO public;
-----------------------------------------------------------------------------
-- piwigo_user_cache_categories
-----------------------------------------------------------------------------
DROP TABLE IF EXISTS "piwigo_user_cache_categories" CASCADE;
CREATE TABLE "piwigo_user_cache_categories"
(
"user_id" INTEGER default 0 NOT NULL,
"cat_id" INTEGER default 0 NOT NULL,
"date_last" TIMESTAMP,
"max_date_last" TIMESTAMP,
"nb_images" INTEGER default 0 NOT NULL,
"count_images" INTEGER default 0,
"count_categories" INTEGER default 0,
"user_representative_picture_id" INTEGER,
PRIMARY KEY ("user_id","cat_id")
);
COMMENT ON TABLE "piwigo_user_cache_categories" IS '';
SET search_path TO public;
-----------------------------------------------------------------------------
-- piwigo_user_feed
-----------------------------------------------------------------------------
DROP TABLE IF EXISTS "piwigo_user_feed" CASCADE;
CREATE TABLE "piwigo_user_feed"
(
"id" VARCHAR(50) default '' NOT NULL,
"user_id" INTEGER default 0 NOT NULL,
"last_check" TIMESTAMP,
PRIMARY KEY ("id")
);
COMMENT ON TABLE "piwigo_user_feed" IS '';
SET search_path TO public;
-----------------------------------------------------------------------------
-- piwigo_user_group
-----------------------------------------------------------------------------
DROP TABLE IF EXISTS "piwigo_user_group" CASCADE;
CREATE TABLE "piwigo_user_group"
(
"user_id" INTEGER default 0 NOT NULL,
"group_id" INTEGER default 0 NOT NULL,
PRIMARY KEY ("user_id","group_id")
);
COMMENT ON TABLE "piwigo_user_group" IS '';
SET search_path TO public;
-----------------------------------------------------------------------------
-- piwigo_user_infos
-----------------------------------------------------------------------------
DROP TYPE IF EXISTS USER_INFOS_STATUS;
CREATE TYPE USER_INFOS_STATUS AS ENUM('webmaster','admin','normal','generic','guest');
DROP TABLE IF EXISTS "piwigo_user_infos" CASCADE;
CREATE TABLE "piwigo_user_infos"
(
"user_id" INTEGER default 0 NOT NULL,
"nb_image_page" INTEGER default 15 NOT NULL,
"status" USER_INFOS_STATUS default 'guest'::USER_INFOS_STATUS,
"language" VARCHAR(50) default 'en_UK' NOT NULL,
"maxwidth" INTEGER,
"maxheight" INTEGER,
"expand" BOOLEAN default false,
"show_nb_comments" BOOLEAN default false,
"show_nb_hits" BOOLEAN default false,
"recent_period" INTEGER default 7 NOT NULL,
"theme" VARCHAR(255) default 'Sylvia' NOT NULL,
"registration_date" TIMESTAMP NOT NULL,
"enabled_high" BOOLEAN default true,
"level" INTEGER default 0 NOT NULL,
"activation_key" CHAR(20) default NULL,
PRIMARY KEY ("user_id"),
CONSTRAINT "user_infos_ui1" UNIQUE ("user_id")
);
COMMENT ON TABLE "piwigo_user_infos" IS '';
SET search_path TO public;
-----------------------------------------------------------------------------
-- piwigo_user_mail_notification
-----------------------------------------------------------------------------
DROP TABLE IF EXISTS "piwigo_user_mail_notification" CASCADE;
CREATE TABLE "piwigo_user_mail_notification"
(
"user_id" INTEGER default 0 NOT NULL,
"check_key" VARCHAR(16) default '' NOT NULL,
"enabled" BOOLEAN default false,
"last_send" TIMESTAMP,
PRIMARY KEY ("user_id"),
CONSTRAINT "user_mail_notification_ui1" UNIQUE ("check_key")
);
COMMENT ON TABLE "piwigo_user_mail_notification" IS '';
SET search_path TO public;
-----------------------------------------------------------------------------
-- piwigo_users
-----------------------------------------------------------------------------
DROP TABLE IF EXISTS "piwigo_users" CASCADE;
CREATE TABLE "piwigo_users"
(
"id" serial NOT NULL,
"username" VARCHAR(100) default '' NOT NULL,
"password" VARCHAR(32),
"mail_address" VARCHAR(255),
PRIMARY KEY ("id"),
CONSTRAINT "users_ui1" UNIQUE ("username")
);
COMMENT ON TABLE "piwigo_users" IS '';
SET search_path TO public;
-----------------------------------------------------------------------------
-- piwigo_comments
-----------------------------------------------------------------------------
DROP TABLE IF EXISTS "piwigo_comments" CASCADE;
CREATE TABLE "piwigo_comments"
(
"id" serial NOT NULL,
"image_id" INTEGER default 0 NOT NULL,
"date" TIMESTAMP NOT NULL,
"author" VARCHAR(255),
"content" TEXT,
"validated" BOOLEAN default false,
"validation_date" TIMESTAMP,
"author_id" INTEGER REFERENCES "piwigo_users" (id),
PRIMARY KEY ("id")
);
COMMENT ON TABLE "piwigo_comments" IS '';
SET search_path TO public;
CREATE INDEX "comments_i2" ON "piwigo_comments" ("validation_date");
CREATE INDEX "comments_i1" ON "piwigo_comments" ("image_id");