Browse Source

New installer

Iñigo Valentin 8 năm trước cách đây
mục cha
commit
0a75412c51
9 tập tin đã thay đổi với 909 bổ sung1227 xóa
  1. 7 7
      .gitignore
  2. 5 0
      sql/00_INSTALL.sql
  3. 810 0
      sql/01_STRUCTURE.sql
  4. 3 0
      sql/02_SECURITY.sql
  5. 34 0
      sql/03_SETTINGS.sql
  6. 10 0
      sql/04_INTERNAL.sql
  7. 40 0
      sql/05_PUBLIC.sql
  8. 0 370
      sql/V2toV3.sql
  9. 0 850
      sql/setup.sql

+ 7 - 7
.gitignore

@@ -19,17 +19,17 @@ copy
 remotecopy
 remoteadmin
 www-admin/redirect_s.php
+.project
+.settings/
+bkp/
 
 #SQL data
-sql/dbusers.sql
-sql/rows-test.sql
-sql/rows.sql
-sql/*201*
+sql/*__PRIVATE.sql
+sql/*__PRE.sql
 
 #Passwords file
-www/.htpasswd
-www-admin/.htpasswd
-www/.htaccess_local
+www/.ht*
+www-admin/.ht*
 
 #Photos and unnecessary images
 www/img/actividades/script

+ 5 - 0
sql/00_INSTALL.sql

@@ -0,0 +1,5 @@
+SOURCE 01_STRUCTURE.sql;
+SOURCE 02_SECURITY.sql;
+SOURCE 03_SETTINGS.sql;
+SOURCE 04_INTERNAL.sql;
+SOURCE 05_PUBLIC.sql;

+ 810 - 0
sql/01_STRUCTURE.sql

@@ -0,0 +1,810 @@
+CREATE DATABASE gm CHARACTER SET utf8 COLLATE utf8_bin;
+
+SET NAMES utf8;
+
+CONNECT gm;
+
+DROP TABLE IF EXISTS user;
+CREATE TABLE user (
+  id       INT          AUTO_INCREMENT PRIMARY KEY,
+  username VARCHAR(64)  NOT NULL,
+  email    VARCHAR(128) NOT NULL,
+  password CHAR(128)    NOT NULL,
+  salt     CHAR(128)    NOT NULL,
+  fname    VARCHAR(64),
+  lname    VARCHAR(64),
+  picture  VARCHAR(100),
+  phone    VARCHAR(16),
+  cp       VARCHAR(6),
+  admin    BOOLEAN      NOT NULL DEFAULT 0,
+  active   BOOLEAN      NOT NULL DEFAULT 0
+);
+
+DROP TABLE IF EXISTS login_attempts;
+CREATE TABLE login_attempts (
+  user  INT         NOT NULL references user.id,
+  dtime VARCHAR(30) NOT NULL
+);
+
+DROP TABLE IF EXISTS permissions;
+CREATE TABLE permissions(
+  user     INT     PRIMARY KEY references user.id,
+  access   BOOLEAN NOT NULL DEFAULT 1,
+  post     BOOLEAN NOT NULL DEFAULT 1,
+  settings BOOLEAN NOT NULL DEFAULT 1,
+  money_r  BOOLEAN NOT NULL DEFAULT 0,
+  money_w  BOOLEAN NOT NULL DEFAULT 0,
+  manager  BOOLEAN NOT NULL DEFAULT 0
+);
+
+DROP TABLE IF EXISTS post;
+CREATE TABLE post (
+  id        INT           AUTO_INCREMENT PRIMARY KEY,
+  permalink VARCHAR(300)  NOT NULL,
+  title_es  VARCHAR(300)  NOT NULL,
+  title_en  VARCHAR(300),
+  title_eu  VARCHAR(300),
+  text_es   VARCHAR(5000) NOT NULL,
+  text_en   VARCHAR(5000),
+  text_eu   VARCHAR(5000),
+  user      INT           NOT NULL DEFAULT 1 REFERENCES user.id,
+  dtime     TIMESTAMP     NOT NULL DEFAULT now(),
+  visible   BOOLEAN       NOT NULL DEFAULT 1,
+  comments  BOOLEAN       NOT NULL DEFAULT 1
+);
+
+DROP TABLE IF EXISTS post_tag;
+CREATE TABLE post_tag (
+  post INT         NOT NULL REFERENCES post.id,
+  tag  VARCHAR(64) NOT NULL,
+  PRIMARY KEY (post, tag)
+);
+
+DROP TABLE IF EXISTS post_image;
+CREATE TABLE post_image (
+  id    INT          AUTO_INCREMENT PRIMARY KEY,
+  post  INT          NOT NULL REFERENCES post.id,
+  image VARCHAR(300) NOT NULL,
+  idx   INT          NOT NULL
+);
+
+DROP TABLE IF EXISTS post_comment;
+CREATE TABLE post_comment (
+  id       INT           AUTO_INCREMENT PRIMARY KEY,
+  post     INT           NOT NULL REFERENCES post(id),
+  text     VARCHAR(5000) NOT NULL,
+  dtime    TIMESTAMP     NOT NULL DEFAULT now(),
+  user     INT           REFERENCES user.id,
+  username VARCHAR(200),
+  lang     VARCHAR(10),
+  approved BOOLEAN       NOT NULL DEFAULT 1,
+  visit    INT           REFERENCES stat_visit.id,
+  app      VARCHAR(24),
+  app_user VARCHAR(64)
+);
+
+DROP TABLE IF EXISTS place;
+CREATE TABLE place (
+  id         INT          AUTO_INCREMENT PRIMARY KEY,
+  name_es    VARCHAR(100) NOT NULL,
+  name_en    VARCHAR(100),
+  name_eu    VARCHAR(100),
+  address_es VARCHAR(200) NOT NULL,
+  address_en VARCHAR(200),
+  address_eu VARCHAR(200),
+  cp         VARCHAR(10),
+  lat        DOUBLE,
+  lon        DOUBLE
+);
+
+DROP TABLE IF EXISTS route;
+CREATE TABLE route (
+  id    INT         AUTO_INCREMENT PRIMARY KEY,
+  name  VARCHAR(32),
+  mins  INT,
+  c_lat DOUBLE      NOT NULL,
+  c_lon DOUBLE      NOT NULL,
+  zoom  INT         DEFAULT 16
+);
+
+DROP TABLE IF EXISTS route_point;
+CREATE TABLE route_point (
+  id      INT     AUTO_INCREMENT PRIMARY KEY,
+  route   INT     NOT NULL DEFAULT 0,
+  part    INT     NOT NULL,
+  lat_o   DOUBLE,
+  lon_o   DOUBLE,
+  lat_d   DOUBLE,
+  lon_d   DOUBLE,
+  mins    INT,
+  visible BOOLEAN NOT NULL DEFAULT 1
+);
+
+DROP TABLE IF EXISTS sponsor;
+CREATE TABLE sponsor (
+  id           INT           NOT NULL AUTO_INCREMENT PRIMARY KEY,
+  name_es      VARCHAR(100)  NOT NULL,
+  name_en      VARCHAR(100),
+  name_eu      VARCHAR(100),
+  text_es      VARCHAR(1000),
+  text_en      VARCHAR(1000),
+  text_eu      VARCHAR(1000),
+  image        VARCHAR(100),
+  local        BOOLEAN       NOT NULL DEFAULT 1,
+  address_es   VARCHAR(200),
+  address_en   VARCHAR(200),
+  address_eu   VARCHAR(200),
+  link         VARCHAR(300),
+  lat          DOUBLE,
+  lon          DOUBLE,
+  ammount      INT,
+  print        INT           NOT NULL DEFAULT 0,
+  print_static INT           NOT NULL DEFAULT 0,
+  click        INT           NOT NULL DEFAULT 0
+);
+
+DROP TABLE IF EXISTS stat_visit;
+CREATE TABLE stat_visit (
+  id      INT          NOT NULL AUTO_INCREMENT PRIMARY KEY,
+  ip      VARCHAR(50),
+  uagent  VARCHAR(400),
+  os      VARCHAR(150),
+  browser VARCHAR(150)
+);
+
+DROP TABLE IF EXISTS stat_view;
+CREATE TABLE stat_view (
+  id       INT         NOT NULL AUTO_INCREMENT PRIMARY KEY,
+  visit   INT          NOT NULL REFERENCES stat_visit.id,
+  section VARCHAR(80)  NOT NULL,
+  entry   VARCHAR(100) NOT NULL,
+  dtime   TIMESTAMP    NOT NULL DEFAULT now()
+);
+CREATE INDEX visit_dtime ON stat_view(visit, dtime);
+
+DROP TABLE IF EXISTS sync;
+CREATE TABLE sync (
+  id     INT         NOT NULL AUTO_INCREMENT PRIMARY KEY,
+  dtime  TIMESTAMP   NOT NULL DEFAULT now(),
+  client VARCHAR(64),
+  user   VARCHAR(64),
+  fg     INT         NOT NULL DEFAULT 0,
+  synced BOOLEAN     NOT NULL DEFAULT 0,
+  error  VARCHAR(256),
+  ip     VARCHAR(128),
+  os     VARCHAR(128),
+  uagent VARCHAR(256)
+);
+
+DROP TABLE IF EXISTS stat_sync;
+CREATE TABLE stat_sync (
+  id     INT         NOT NULL AUTO_INCREMENT PRIMARY KEY,
+  dtime  TIMESTAMP   NOT NULL DEFAULT now(),
+  user   VARCHAR(64) NOT NULL,
+  fg     INT         NOT NULL DEFAULT 1,
+  os     VARCHAR(64) NOT NULL,
+  ip     VARCHAR(50) NOT NULL,
+  synced INT         NOT NULL DEFAULT 0
+);
+
+DROP TABLE IF EXISTS photo;
+CREATE TABLE photo (
+  id             INT           NOT NULL AUTO_INCREMENT PRIMARY KEY,
+  file           VARCHAR(100)  NOT NULL UNIQUE,
+  permalink      VARCHAR(100)  NOT NULL UNIQUE,
+  title_es       VARCHAR(100),
+  title_en       VARCHAR(100),
+  title_eu       VARCHAR(100),
+  description_es VARCHAR(1000),
+  description_en VARCHAR(1000),
+  description_eu VARCHAR(1000),
+  dtime          DATETIME,
+  uploaded       TIMESTAMP     NOT NULL DEFAULT now(),
+  place          INT           REFERENCES place.id,
+  width          INT,
+  height         INT,
+  size           BIGINT,
+  approved       BOOLEAN       NOT NULL DEFAULT 1,
+  user           INT           NOT NULL DEFAULT 1 REFERENCES user.id,
+  username       VARCHAR(64)
+);
+
+DROP TABLE IF EXISTS album;
+CREATE TABLE album (
+  id             INT          NOT NULL AUTO_INCREMENT PRIMARY KEY,
+  permalink      VARCHAR(100) NOT NULL,
+  title_es       VARCHAR(100) NOT NULL,
+  title_en       VARCHAR(100),
+  title_eu       VARCHAR(100),
+  description_es VARCHAR(1000),
+  description_en VARCHAR(1000),
+  description_eu VARCHAR(1000),
+  user           INT          NOT NULL DEFAULT 1 REFERENCES user.id,
+  open           BOOLEAN      NOT NULL DEFAULT 1,
+  dtime          TIMESTAMP    NOT NULL DEFAULT now()
+);
+
+DROP TABLE IF EXISTS photo_album;
+CREATE TABLE photo_album (
+  photo INT NOT NULL REFERENCES photo.id,
+  album INT NOT NULL REFERENCES album.id,
+  PRIMARY KEY (photo, album)
+);
+
+DROP TABLE IF EXISTS photo_comment;
+CREATE TABLE photo_comment (
+  id       INT           AUTO_INCREMENT PRIMARY KEY,
+  photo    INT           NOT NULL  REFERENCES photo(id),
+  text     VARCHAR(5000) NOT NULL,
+  dtime    TIMESTAMP     NOT NULL DEFAULT now(),
+  user     INT           REFERENCES user.id,
+  username VARCHAR(200),
+  lang     VARCHAR(10),
+  approved BOOLEAN       NOT NULL DEFAULT 1,
+  visit    INT           REFERENCES stat_visit.id,
+  app      VARCHAR(24),
+  app_user VARCHAR(64)
+);
+
+DROP TABLE IF EXISTS activity;
+CREATE TABLE activity (
+  id          INT          AUTO_INCREMENT PRIMARY KEY,
+  permalink   VARCHAR(100) NOT NULL,
+  date        DATE         NOT NULL,
+  city        VARCHAR(100) NOT NULL DEFAULT "Vitoria-Gasteiz",
+  title_es    VARCHAR(300) NOT NULL,
+  title_en    VARCHAR(300),
+  title_eu    VARCHAR(300),
+  text_es     TEXT         NOT NULL,
+  text_en     TEXT,
+  text_eu     TEXT,
+  after_es    VARCHAR(2000),
+  after_en    VARCHAR(2000),
+  after_eu    VARCHAR(2000),
+  price       FLOAT         NOT NULL,
+  inscription BOOLEAN       NOT NULL  DEFAULT 1,
+  people      INT           DEFAULT 0,
+  max_people  INT,
+  album       INT           REFERENCES album.id,
+  user        INT           NOT NULL DEFAULT 1 REFERENCES user.id,
+  dtime       TIMESTAMP     NOT NULL DEFAULT now(),
+  visible     BOOLEAN       NOT NULL DEFAULT 1,
+  comments    BOOLEAN       NOT NULL DEFAULT 1
+);
+
+DROP TABLE IF EXISTS activity_tag;
+CREATE TABLE activity_tag (
+  activity INT         NOT NULL REFERENCES activity.id,
+  tag      VARCHAR(64) NOT NULL,
+  PRIMARY KEY (activity, tag)
+);
+
+DROP TABLE IF EXISTS activity_image;
+CREATE TABLE activity_image (
+  id       INT         AUTO_INCREMENT PRIMARY KEY,
+  activity INT         NOT NULL REFERENCES activity.id,
+  image    VARCHAR(64) NOT NULL,
+  idx      INT         NOT NULL
+);
+
+DROP TABLE IF EXISTS activity_itinerary;
+CREATE TABLE activity_itinerary (
+  id             INT           AUTO_INCREMENT PRIMARY KEY,
+  activity       INT           NOT NULL REFERENCES activity.id,
+  name_es        VARCHAR(64)   NOT NULL,
+  name_en        VARCHAR(64),
+  name_eu        VARCHAR(64),
+  description_es VARCHAR(1000),
+  description_en VARCHAR(1000),
+  description_eu VARCHAR(1000),
+  start          DATETIME      NOT NULL,
+  end            DATETIME,
+  place          INT            REFERENCES place.id,
+  route          INT            REFERENCES route.id
+);
+
+DROP TABLE IF EXISTS activity_comment;
+CREATE TABLE activity_comment (
+  id        INT           AUTO_INCREMENT PRIMARY KEY,
+  activity  INT           NOT NULL  REFERENCES post(id),
+  text      VARCHAR(5000) NOT NULL,
+  dtime     TIMESTAMP     NOT NULL DEFAULT now(),
+  user      INT           REFERENCES user.id,
+  username  VARCHAR(200),
+  lang      VARCHAR(10),
+  approved  BOOLEAN        NOT NULL DEFAULT 1,
+  visit     INT            REFERENCES stat_visit.id,
+  app       VARCHAR(24),
+  app_user  VARCHAR(64)
+);
+
+DROP TABLE IF EXISTS festival;
+CREATE TABLE festival (
+  id         INT           AUTO_INCREMENT PRIMARY KEY,
+  year       INT           UNIQUE,
+  text_es    VARCHAR(3000) NOT NULL,
+  text_en    VARCHAR(3000),
+  text_eu    VARCHAR(3000),
+  summary_es VARCHAR(3000),
+  summary_en VARCHAR(3000),
+  summary_eu VARCHAR(3000),
+  img        VARCHAR(2000)
+);
+
+DROP TABLE IF EXISTS festival_day;
+CREATE TABLE festival_day (
+  id         INT         AUTO_INCREMENT PRIMARY KEY,
+  date       DATE        NOT NULL,
+  name_es    VARCHAR(60) NOT NULL,
+  name_en    VARCHAR(60),
+  name_eu    VARCHAR(60),
+  price      INT         NOT NULL,
+  people     INT         NOT NULL DEFAULT 0,
+  max_people INT         NOT NULL DEFAULT 0
+);
+
+DROP TABLE IF EXISTS festival_offer;
+CREATE TABLE festival_offer (
+  id             INT          AUTO_INCREMENT PRIMARY KEY,
+  year           INT,
+  name_es        VARCHAR(60)  NOT NULL,
+  name_en        VARCHAR(60),
+  name_eu        VARCHAR(60),
+  description_es VARCHAR(500),
+  description_en VARCHAR(500),
+  description_eu VARCHAR(500),
+  days           INT          NOT NULL,
+  price          INT          NOT NULL
+);
+
+DROP TABLE IF EXISTS location;
+CREATE TABLE location (
+  id     INT        AUTO_INCREMENT PRIMARY KEY,
+  action VARCHAR(1) NOT NULL,
+  dtime  TIMESTAMP  NOT NULL  DEFAULT now(),
+  lat    DOUBLE,
+  lon    DOUBLE,
+  start  INT,
+  user   INT        NOT NULL REFERENCES user.id
+);
+
+DROP TABLE IF EXISTS notification;
+CREATE TABLE notification (
+  id       INT           AUTO_INCREMENT PRIMARY KEY,
+  user     INT           NOT NULL REFERENCES user.id,
+  dtime    TIMESTAMP     NOT NULL DEFAULT now(),
+  duration INT           NOT NULL DEFAULT 60,
+  action   VARCHAR(20)   NOT NULL DEFAULT 'message',
+  title_es VARCHAR(100)  NOT NULL,
+  title_en VARCHAR(100),
+  title_eu VARCHAR(100),
+  text_es  VARCHAR(1000),
+  text_en  VARCHAR(1000),
+  text_eu  VARCHAR(1000),
+  internal BOOLEAN       NOT NULL DEFAULT 0
+);
+
+DROP TABLE IF EXISTS people;
+CREATE TABLE people (
+  id      INT          AUTO_INCREMENT PRIMARY KEY,
+  name_es VARCHAR(100) NOT NULL,
+  name_en VARCHAR(100),
+  name_eu VARCHAR(100),
+  link    VARCHAR(300)
+);
+
+DROP TABLE IF EXISTS festival_event;
+CREATE TABLE festival_event (
+  id             INT           AUTO_INCREMENT PRIMARY KEY,
+  gm             BOOLEAN       DEFAULT 0,
+  title_es       VARCHAR(200)  NOT NULL,
+  title_en       VARCHAR(200),
+  title_eu       VARCHAR(200),
+  description_es VARCHAR(5000),
+  description_en VARCHAR(5000),
+  description_eu VARCHAR(5000),
+  host           INT           REFERENCES people.id,
+  sponsor        INT           REFERENCES people.id,
+  place          INT           REFERENCES place.id,
+  route          INT           REFERENCES route.id,
+  start          DATETIME      NOT NULL,
+  end            DATETIME,
+  interest       INT           NOT NULL DEFAULT 2
+);
+
+DROP TABLE IF EXISTS festival_event_image;
+CREATE TABLE festival_event_image (
+  id    INT         AUTO_INCREMENT PRIMARY KEY,
+  event INT         NOT NULL REFERENCES activity.id,
+  image VARCHAR(64) NOT NULL,
+  idx   INT         NOT NULL
+);
+
+DROP TABLE IF EXISTS settings;
+CREATE TABLE settings (
+  name    VARCHAR(64) PRIMARY KEY,
+  value   VARCHAR(64) NOT NULL,
+  user    INT         REFERENCES user.id,
+  changed TIMESTAMP   NOT NULL  DEFAULT now()
+);
+
+DROP TABLE IF EXISTS version;
+CREATE TABLE version (
+  section VARCHAR(128) PRIMARY KEY,
+  version INT          NOT NULL DEFAULT 1
+);
+
+DROP TABLE IF EXISTS member;
+CREATE TABLE member (
+  id         INT           AUTO_INCREMENT PRIMARY KEY,
+  name       VARCHAR(64)   NOT NULL,
+  lname      VARCHAR(128)  NOT NULL,
+  lname2     VARCHAR(128),
+  alias      VARCHAR(32),
+  dni        VARCHAR(16),
+  bdate      DATE,
+  phone      VARCHAR(32),
+  mail       VARCHAR(128),
+  address    VARCHAR(512),
+  jdate      DATE,
+  joined     VARCHAR(16),
+  board      BOOLEAN       NOT NULL DEFAULT 0,
+  facebook   VARCHAR(1024),
+  twitter    VARCHAR(1024),
+  googleplus VARCHAR(1024)
+);
+
+DROP TABLE IF EXISTS member_activity;
+CREATE TABLE member_activity(
+  member   INT     REFERENCES member.id,
+  activity INT     REFERENCES activity.id,
+  paid     BOOLEAN NOT NULL DEFAULT 1,
+  PRIMARY KEY(member, activity)
+);
+
+DROP TABLE IF EXISTS intolerance;
+CREATE TABLE intolerance(
+  member  INT          REFERENCES member.id,
+  element VARCHAR(128),
+  PRIMARY KEY(member, element)
+);
+
+DROP TABLE IF EXISTS member_day;
+CREATE TABLE member_day(
+  member INT     REFERENCES member.id,
+  day    INT     REFERENCES festival_day.id,
+  paid   BOOLEAN NOT NULL DEFAULT 1,
+  PRIMARY KEY (member, day)
+);
+
+DROP TABLE IF EXISTS transac_category;
+CREATE TABLE transac_category(
+  id                   INT          AUTO_INCREMENT PRIMARY KEY,
+  title_internal       VARCHAR(510) NOT NULL,
+  title_es             VARCHAR(510) NOT NULL,
+  title_en             VARCHAR(510),
+  title_eu             VARCHAR(510),
+  description_internal VARCHAR(510) NOT NULL,
+  description_es       VARCHAR(510) NOT NULL,
+  description_en       VARCHAR(510),
+  description_eu       VARCHAR(510)
+);
+
+DROP TABLE IF EXISTS transact;
+CREATE TABLE transact(
+  id                INT                AUTO_INCREMENT PRIMARY KEY,
+  dtime            TIMESTAMP        NOT NULL DEFAULT now(),
+  ammount            FLOAT            NOT NULL,
+  user            INT                NOT NULL REFERENCES user.id,
+  concept            VARCHAR(1024),
+  category        INT                NOT NULL REFERENCES transac_category.id
+);
+
+DROP TABLE IF EXISTS translation;
+CREATE TABLE translation(
+  id       INT           AUTO_INCREMENT PRIMARY KEY,
+  dtime    TIMESTAMP     NOT NULL DEFAULT now(),
+  username VARCHAR(255)  NOT NULL DEFAULT 'unknown',
+  tab      VARCHAR(255)  NOT NULL,
+  field    VARCHAR(255)  NOT NULL,
+  eid      INT           NOT NULL,
+  lang     VARCHAR(2)    NOT NULL,
+  text     VARCHAR(9000) NOT NULL,
+  applied  DATETIME
+);
+
+
+# Create views for festival_event
+CREATE OR REPLACE VIEW festival_event_gm AS SELECT id, title_es, title_en, title_eu, description_es, description_en, description_eu, host, sponsor, place, route, start, end, interest FROM festival_event WHERE gm = 1;
+CREATE OR REPLACE VIEW festival_event_city AS SELECT id, title_es, title_en, title_eu, description_es, description_en, description_eu, host, sponsor, place, route, start, end, interest FROM festival_event WHERE gm = 0;
+
+
+# Triggers to update versions
+DELIMITER //
+
+CREATE OR REPLACE PROCEDURE version_up (IN section_name VARCHAR(128))
+  BEGIN
+  UPDATE version SET version = version + 1 WHERE section = section_name;
+  END//
+
+CREATE OR REPLACE TRIGGER version_i_activity AFTER INSERT ON activity FOR EACH ROW
+  BEGIN
+  CALL version_up('activity');
+  END//
+CREATE OR REPLACE TRIGGER version_d_activity AFTER DELETE ON activity FOR EACH ROW
+  BEGIN
+  CALL version_up('activity');
+  END//
+CREATE OR REPLACE TRIGGER version_u_activity AFTER UPDATE ON activity FOR EACH ROW
+  BEGIN
+  CALL version_up('activity');
+  END//
+CREATE OR REPLACE TRIGGER version_i_activity_comment AFTER INSERT ON activity_comment FOR EACH ROW
+  BEGIN
+  CALL version_up('activity_comment');
+  END//
+CREATE OR REPLACE TRIGGER version_d_activity_comment AFTER DELETE ON activity_comment FOR EACH ROW
+  BEGIN
+  CALL version_up('activity_comment');
+  END//
+CREATE OR REPLACE TRIGGER version_u_activity_comment AFTER UPDATE ON activity_comment FOR EACH ROW
+  BEGIN
+  CALL version_up('activity_comment');
+  END//
+CREATE OR REPLACE TRIGGER version_i_activity_image AFTER INSERT ON activity_image FOR EACH ROW
+  BEGIN
+  CALL version_up('activity_image');
+  END//
+CREATE OR REPLACE TRIGGER version_d_activity_image AFTER DELETE ON activity_image FOR EACH ROW
+  BEGIN
+  CALL version_up('activity_image');
+  END//
+CREATE OR REPLACE TRIGGER version_u_activity_image AFTER UPDATE ON activity_image FOR EACH ROW
+  BEGIN
+  CALL version_up('activity_image');
+  END//
+CREATE OR REPLACE TRIGGER version_i_activity_itinerary AFTER INSERT ON activity_itinerary FOR EACH ROW
+  BEGIN
+  CALL version_up('activity_itinerary');
+  END//
+CREATE OR REPLACE TRIGGER version_d_activity_itinerary AFTER DELETE ON activity_itinerary FOR EACH ROW
+  BEGIN
+  CALL version_up('activity_itinerary');
+  END//
+CREATE OR REPLACE TRIGGER version_u_activity_itinerary AFTER UPDATE ON activity_itinerary FOR EACH ROW
+  BEGIN
+  CALL version_up('activity_itinerary');
+  END//
+CREATE OR REPLACE TRIGGER version_i_activity_tag AFTER INSERT ON activity_tag FOR EACH ROW
+  BEGIN
+  CALL version_up('activity_tag');
+  END//
+CREATE OR REPLACE TRIGGER version_d_activity_tag AFTER DELETE ON activity_tag FOR EACH ROW
+  BEGIN
+  CALL version_up('activity_tag');
+  END//
+CREATE OR REPLACE TRIGGER version_u_activity_tag AFTER UPDATE ON activity_tag FOR EACH ROW
+  BEGIN
+  CALL version_up('activity_tag');
+  END//
+CREATE OR REPLACE TRIGGER version_i_album AFTER INSERT ON album FOR EACH ROW
+  BEGIN
+  CALL version_up('album');
+  END//
+CREATE OR REPLACE TRIGGER version_d_album AFTER DELETE ON album FOR EACH ROW
+  BEGIN
+  CALL version_up('album');
+  END//
+CREATE OR REPLACE TRIGGER version_u_album AFTER UPDATE ON album FOR EACH ROW
+  BEGIN
+  CALL version_up('album');
+  END//
+CREATE OR REPLACE TRIGGER version_i_festival AFTER INSERT ON festival FOR EACH ROW
+  BEGIN
+  CALL version_up('festival');
+  END//
+CREATE OR REPLACE TRIGGER version_d_festival AFTER DELETE ON festival FOR EACH ROW
+  BEGIN
+  CALL version_up('festival');
+  END//
+CREATE OR REPLACE TRIGGER version_u_festival AFTER UPDATE ON festival FOR EACH ROW
+  BEGIN
+  CALL version_up('festival');
+  END//
+CREATE OR REPLACE TRIGGER version_i_festival_day AFTER INSERT ON festival_day FOR EACH ROW
+  BEGIN
+  CALL version_up('festival_day');
+  END//
+CREATE OR REPLACE TRIGGER version_d_festival_day AFTER DELETE ON festival_day FOR EACH ROW
+  BEGIN
+  CALL version_up('festival_day');
+  END//
+CREATE OR REPLACE TRIGGER version_u_festival_day AFTER UPDATE ON festival_day FOR EACH ROW
+  BEGIN
+  CALL version_up('festival_day');
+  END//
+CREATE OR REPLACE TRIGGER version_i_festival_event AFTER INSERT ON festival_event FOR EACH ROW
+  BEGIN
+  IF NEW.gm = 0 THEN
+    CALL version_up('festival_event_city');
+  ELSE
+    CALL version_up('festival_event_gm');
+  END IF;
+  END//
+CREATE OR REPLACE TRIGGER version_d_festival_event AFTER DELETE ON festival_event FOR EACH ROW
+  BEGIN
+  IF OLD.gm = 0 THEN
+    CALL version_up('festival_event_city');
+  ELSE
+    CALL version_up('festival_event_gm');
+  END IF;
+  END//
+CREATE OR REPLACE TRIGGER version_u_festival_event AFTER UPDATE ON festival_event FOR EACH ROW
+  BEGIN
+  IF NEW.gm = 0 THEN
+    CALL version_up('festival_event_city');
+  ELSE
+    CALL version_up('festival_event_gm');
+  END IF;
+  END//
+CREATE OR REPLACE TRIGGER version_i_festival_event_image AFTER INSERT ON festival_event_image FOR EACH ROW
+  BEGIN
+  CALL version_up('festival_event_image');
+  END//
+CREATE OR REPLACE TRIGGER version_d_festival_event_image AFTER DELETE ON festival_event_image FOR EACH ROW
+  BEGIN
+  CALL version_up('festival_event_image');
+  END//
+CREATE OR REPLACE TRIGGER version_u_festival_event_image AFTER UPDATE ON festival_event_image FOR EACH ROW
+  BEGIN
+  CALL version_up('festival_event_image');
+  END//
+CREATE OR REPLACE TRIGGER version_i_festival_offer AFTER INSERT ON festival_offer FOR EACH ROW
+  BEGIN
+  CALL version_up('festival_offer');
+  END//
+CREATE OR REPLACE TRIGGER version_d_festival_offer AFTER DELETE ON festival_offer FOR EACH ROW
+  BEGIN
+  CALL version_up('festival_offer');
+  END//
+CREATE OR REPLACE TRIGGER version_u_festival_offer AFTER UPDATE ON festival_offer FOR EACH ROW
+  BEGIN
+  CALL version_up('festival_offer');
+  END//
+CREATE OR REPLACE TRIGGER version_i_people AFTER INSERT ON people FOR EACH ROW
+  BEGIN
+  CALL version_up('people');
+  END//
+CREATE OR REPLACE TRIGGER version_d_people AFTER DELETE ON people FOR EACH ROW
+  BEGIN
+  CALL version_up('people');
+  END//
+CREATE OR REPLACE TRIGGER version_u_people AFTER UPDATE ON people FOR EACH ROW
+  BEGIN
+  CALL version_up('people');
+  END//
+CREATE OR REPLACE TRIGGER version_i_photo AFTER INSERT ON photo FOR EACH ROW
+  BEGIN
+  CALL version_up('photo');
+  END//
+CREATE OR REPLACE TRIGGER version_d_photo AFTER DELETE ON photo FOR EACH ROW
+  BEGIN
+  CALL version_up('photo');
+  END//
+CREATE OR REPLACE TRIGGER version_u_photo AFTER UPDATE ON photo FOR EACH ROW
+  BEGIN
+  CALL version_up('photo');
+  END//
+CREATE OR REPLACE TRIGGER version_i_photo_album AFTER INSERT ON photo_album FOR EACH ROW
+  BEGIN
+  CALL version_up('photo_album');
+  END//
+CREATE OR REPLACE TRIGGER version_d_photo_album AFTER DELETE ON photo_album FOR EACH ROW
+  BEGIN
+  CALL version_up('photo_album');
+  END//
+CREATE OR REPLACE TRIGGER version_u_photo_album AFTER UPDATE ON photo_album FOR EACH ROW
+  BEGIN
+  CALL version_up('photo_album');
+  END//
+CREATE OR REPLACE TRIGGER version_i_photo_comment AFTER INSERT ON photo_comment FOR EACH ROW
+  BEGIN
+  CALL version_up('photo_comment');
+  END//
+CREATE OR REPLACE TRIGGER version_d_photo_comment AFTER DELETE ON photo_comment FOR EACH ROW
+  BEGIN
+  CALL version_up('photo_comment');
+  END//
+CREATE OR REPLACE TRIGGER version_u_photo_comment AFTER UPDATE ON photo_comment FOR EACH ROW
+  BEGIN
+  CALL version_up('photo_comment');
+  END//
+CREATE OR REPLACE TRIGGER version_i_place AFTER INSERT ON place FOR EACH ROW
+  BEGIN
+  CALL version_up('place');
+  END//
+CREATE OR REPLACE TRIGGER version_d_place AFTER DELETE ON place FOR EACH ROW
+  BEGIN
+  CALL version_up('place');
+  END//
+CREATE OR REPLACE TRIGGER version_u_place AFTER UPDATE ON place FOR EACH ROW
+  BEGIN
+  CALL version_up('place');
+  END//
+CREATE OR REPLACE TRIGGER version_i_post AFTER INSERT ON post FOR EACH ROW
+  BEGIN
+  CALL version_up('post');
+  END//
+CREATE OR REPLACE TRIGGER version_d_post AFTER DELETE ON post FOR EACH ROW
+  BEGIN
+  CALL version_up('post');
+  END//
+CREATE OR REPLACE TRIGGER version_u_post AFTER UPDATE ON post FOR EACH ROW
+  BEGIN
+  CALL version_up('post');
+  END//
+CREATE OR REPLACE TRIGGER version_i_post_comment AFTER INSERT ON post_comment FOR EACH ROW
+  BEGIN
+  CALL version_up('post_comment');
+  END//
+CREATE OR REPLACE TRIGGER version_d_post_comment AFTER DELETE ON post_comment FOR EACH ROW
+  BEGIN
+  CALL version_up('post_comment');
+  END//
+CREATE OR REPLACE TRIGGER version_u_post_comment AFTER UPDATE ON post_comment FOR EACH ROW
+  BEGIN
+  CALL version_up('post_comment');
+  END//
+CREATE OR REPLACE TRIGGER version_i_post_image AFTER INSERT ON post_image FOR EACH ROW
+  BEGIN
+  CALL version_up('post_image');
+  END//
+CREATE OR REPLACE TRIGGER version_d_post_image AFTER DELETE ON post_image FOR EACH ROW
+  BEGIN
+  CALL version_up('post_image');
+  END//
+CREATE OR REPLACE TRIGGER version_u_post_image AFTER UPDATE ON post_image FOR EACH ROW
+  BEGIN
+  CALL version_up('post_image');
+  END//
+CREATE OR REPLACE TRIGGER version_i_post_tag AFTER INSERT ON post_tag FOR EACH ROW
+  BEGIN
+  CALL version_up('post_tag');
+  END//
+CREATE OR REPLACE TRIGGER version_d_post_tag AFTER DELETE ON post_tag FOR EACH ROW
+  BEGIN
+  CALL version_up('post_tag');
+  END//
+CREATE OR REPLACE TRIGGER version_u_post_tag AFTER UPDATE ON post_tag FOR EACH ROW
+  BEGIN
+  CALL version_up('post_tag');
+  END//
+CREATE OR REPLACE TRIGGER version_i_settings AFTER INSERT ON settings FOR EACH ROW
+  BEGIN
+  CALL version_up('settings');
+  END//
+CREATE OR REPLACE TRIGGER version_d_settings AFTER DELETE ON settings FOR EACH ROW
+  BEGIN
+  CALL version_up('settings');
+  END//
+CREATE OR REPLACE TRIGGER version_u_settings AFTER UPDATE ON settings FOR EACH ROW
+  BEGIN
+  CALL version_up('settings');
+  END//
+CREATE OR REPLACE TRIGGER version_i_sponsor AFTER INSERT ON sponsor FOR EACH ROW
+  BEGIN
+  CALL version_up('sponsor');
+  END//
+CREATE OR REPLACE TRIGGER version_d_sponsor AFTER DELETE ON sponsor FOR EACH ROW
+  BEGIN
+  CALL version_up('sponsor');
+  END//
+CREATE OR REPLACE TRIGGER version_u_sponsor AFTER UPDATE ON sponsor FOR EACH ROW
+  BEGIN
+  IF (NEW.print = OLD.print AND NEW.print_static = OLD.print_static AND NEW.click = OLD.click AND NEW.ammount = OLD.ammount) THEN
+    CALL version_up('sponsor');
+  END IF;
+  END//
+
+
+DELIMITER ;

+ 3 - 0
sql/02_SECURITY.sql

@@ -0,0 +1,3 @@
+-- Replace 'XXXXXXXXXX' and 'YYYYYYYYYY' with your own passwords.
+GRANT SELECT, SHOW VIEW ON gm.* TO 'gm'@'localhost' IDENTIFIED BY 'XXXXXXXXXX';
+GRANT SELECT, INSERT, DELETE, UPDATE, SHOW VIEW ON gm.* TO 'gm-w'@'localhost' IDENTIFIED BY 'YYYYYYYYYY';

+ 34 - 0
sql/03_SETTINGS.sql

@@ -0,0 +1,34 @@
+-- Settings and version data
+INSERT INTO `settings` VALUES
+  ('comments','1',0,NOW()),
+  ('festivals','1',0,NOW()),
+  ('photos','1',0,NOW()),
+  ('version','1',0,NOW());
+
+INSERT INTO version VALUES
+  ('activity', 1),
+  ('activity_comment', 1),
+  ('activity_image', 1),
+  ('activity_itinerary', 1),
+  ('activity_tag', 1),
+  ('album', 1),
+  ('festival', 1),
+  ('festival_day', 1),
+  ('festival_event_city', 1),
+  ('festival_event_gm', 1),
+  ('festival_event_image', 1),
+  ('festival_offer', 1),
+  ('people', 1),
+  ('photo', 1),
+  ('photo_album', 1),
+  ('photo_comment', 1),
+  ('place', 1),
+  ('post', 1),
+  ('post_comment', 1),
+  ('post_image', 1),
+  ('post_tag', 1),
+  ('route', 1),
+  ('route_point', 1),
+  ('settings', 1),
+  ('sponsor', 1);
+

+ 10 - 0
sql/04_INTERNAL.sql

@@ -0,0 +1,10 @@
+-- Data for the followin tables goes here:
+--  member
+--  membre_activity
+--  member_day
+--  sponsor
+
+INSERT INTO `member` VALUES ...
+INSERT INTO `member_activity` VALUES ...
+INSERT INTO `member_day` VALUES ...
+INSERT INTO `sponsor` VALUES ...

+ 40 - 0
sql/05_PUBLIC.sql

@@ -0,0 +1,40 @@
+-- Data for the following tables goes here:
+--  activity
+--  activity_image
+--  activity_itinerary
+--  activity_tag
+--  album
+--  festival
+--  festival_day
+--  festival_event
+--  festival_offer
+--  location
+--  notification
+--  people
+--  photo
+--  photo_album
+--  place
+--  post
+--  post_comment
+--  post_image
+--  post_tag
+
+INSERT INTO `activity` VALUES ...
+INSERT INTO `activity_image` VALUES ...
+INSERT INTO `activity_itinerary` VALUES ...
+INSERT INTO `activity_tag` VALUES ...
+INSERT INTO `album` VALUES ...
+INSERT INTO `festival` VALUES ...
+INSERT INTO `festival_day` VALUES ...
+INSERT INTO `festival_event` VALUES ...
+INSERT INTO `festival_offer` VALUES ...
+INSERT INTO `location` VALUES ...
+INSERT INTO `notification` VALUES ...
+INSERT INTO `people` VALUES ...
+INSERT INTO `photo` VALUES ...
+INSERT INTO `photo_album` VALUES ...
+INSERT INTO `place` VALUES ...
+INSERT INTO `post` VALUES ...
+INSERT INTO `post_comment` VALUES ...
+INSERT INTO `post_image` VALUES ...
+INSERT INTO `post_tag` VALUES ...

+ 0 - 370
sql/V2toV3.sql

@@ -1,370 +0,0 @@
-DROP TABLE IF EXISTS route;
-CREATE TABLE route (
-  id       INT           AUTO_INCREMENT  PRIMARY KEY,
-  name     VARCHAR(32),
-  mins     INT,
-  c_lat    DOUBLE        NOT NULL,
-  c_lon    DOUBLE        NOT NULL,
-  zoom     INT           DEFAULT 16
-);
-
-DROP TABLE IF EXISTS route_point;
-CREATE TABLE route_point (
-  id       INT      AUTO_INCREMENT        PRIMARY KEY,
-  route    INT      NOT NULL              DEFAULT 0,
-  part     INT      NOT NULL,
-  lat_o    DOUBLE,
-  lon_o    DOUBLE,
-  lat_d    DOUBLE,
-  lon_d    DOUBLE,
-  mins     INT,
-  visible  BOOLEAN  NOT NULL              DEFAULT 1
-);
-
-ALTER TABLE sponsor ADD local BOOLEAN NOT NULL DEFAULT 1;
-UPDATE sponsor SET local = 0 WHERE address_es IS NULL OR address_es = '';
-
-ALTER TABLE activity_itinerary ADD route INT
-ALTER TABLE activity_itinerary MODIFY place INT;
-
-ALTER TABLE festival_day ADD people INT NOT NULL DEFAULT 0;
-ALTER TABLE festival_day ADD max_people INT NOT NULL DEFAULT 0;
-
-CREATE OR REPLACE VIEW festival_event_gm AS SELECT id, title_es, title_en, title_eu, description_es, description_en, description_eu, host, sponsor, place, route, start, end, interest FROM festival_event WHERE gm = 1;
-CREATE OR REPLACE VIEW festival_event_city AS SELECT id, title_es, title_en, title_eu, description_es, description_en, description_eu, host, sponsor, place, route, start, end, interest FROM festival_event WHERE gm = 0;
-
-ALTER TABLE festival_event ADD sponsor INT;
-ALTER TABLE festival_event ADD route INT;
-ALTER TABLE festival_event MODIFY place INT;
-ALTER TABLE festival_event ADD interest INT NOT NULL DEFAULT 2;
-
-ALTER TABLE version MODIFY section VARCHAR(128);
-
-ALTER TABLE sync DROP action;
-ALTER TABLE sync DROP section;
-ALTER TABLE sync DROP version_from;
-ALTER TABLE sync DROP version_to;
-ALTER TABLE sync DROP format;
-ALTER TABLE sync ADD synced BOOLEAN NOT NULL DEFAULT 0;
-
-ALTER TABLE post_comment ADD app_user VARCHAR(64);
-ALTER TABLE activity_comment ADD app_user VARCHAR(64);
-ALTER TABLE photo_comment ADD app_user VARCHAR(64);
-
-# Populate table version
-DELETE FROM version;
-INSERT INTO version VALUES ('activity', 1);
-INSERT INTO version VALUES ('activity_comment', 1);
-INSERT INTO version VALUES ('activity_image', 1);
-INSERT INTO version VALUES ('activity_itinerary', 1);
-INSERT INTO version VALUES ('activity_tag', 1);
-INSERT INTO version VALUES ('album', 1);
-INSERT INTO version VALUES ('festival', 1);
-INSERT INTO version VALUES ('festival_day', 1);
-INSERT INTO version VALUES ('festival_event_city', 1);
-INSERT INTO version VALUES ('festival_event_gm', 1);
-INSERT INTO version VALUES ('festival_event_image', 1);
-INSERT INTO version VALUES ('festival_offer', 1);
-INSERT INTO version VALUES ('people', 1);
-INSERT INTO version VALUES ('photo', 1);
-INSERT INTO version VALUES ('photo_album', 1);
-INSERT INTO version VALUES ('photo_comment', 1);
-INSERT INTO version VALUES ('place', 1);
-INSERT INTO version VALUES ('post', 1);
-INSERT INTO version VALUES ('post_comment', 1);
-INSERT INTO version VALUES ('post_image', 1);
-INSERT INTO version VALUES ('post_tag', 1);
-INSERT INTO version VALUES ('settings', 1);
-INSERT INTO version VALUES ('sponsor', 1);
-
-
-# Triggers to update versions
-DELIMITER //
-
-CREATE OR REPLACE PROCEDURE version_up (IN section_name VARCHAR(128))
-  BEGIN
-    UPDATE version SET version = version + 1 WHERE section = section_name;
-  END//
-
-CREATE OR REPLACE TRIGGER version_i_activity AFTER INSERT ON activity FOR EACH ROW
-  BEGIN
-    CALL version_up('activity');
-  END//
-CREATE OR REPLACE TRIGGER version_d_activity AFTER DELETE ON activity FOR EACH ROW
-  BEGIN
-    CALL version_up('activity');
-  END//
-CREATE OR REPLACE TRIGGER version_u_activity AFTER UPDATE ON activity FOR EACH ROW
-  BEGIN
-    CALL version_up('activity');
-  END//
-CREATE OR REPLACE TRIGGER version_i_activity_comment AFTER INSERT ON activity_comment FOR EACH ROW
-  BEGIN
-    CALL version_up('activity_comment');
-  END//
-CREATE OR REPLACE TRIGGER version_d_activity_comment AFTER DELETE ON activity_comment FOR EACH ROW
-  BEGIN
-    CALL version_up('activity_comment');
-  END//
-CREATE OR REPLACE TRIGGER version_u_activity_comment AFTER UPDATE ON activity_comment FOR EACH ROW
-  BEGIN
-    CALL version_up('activity_comment');
-  END//
-CREATE OR REPLACE TRIGGER version_i_activity_image AFTER INSERT ON activity_image FOR EACH ROW
-  BEGIN
-    CALL version_up('activity_image');
-  END//
-CREATE OR REPLACE TRIGGER version_d_activity_image AFTER DELETE ON activity_image FOR EACH ROW
-  BEGIN
-    CALL version_up('activity_image');
-  END//
-CREATE OR REPLACE TRIGGER version_u_activity_image AFTER UPDATE ON activity_image FOR EACH ROW
-  BEGIN
-    CALL version_up('activity_image');
-  END//
-CREATE OR REPLACE TRIGGER version_i_activity_itinerary AFTER INSERT ON activity_itinerary FOR EACH ROW
-  BEGIN
-    CALL version_up('activity_itinerary');
-  END//
-CREATE OR REPLACE TRIGGER version_d_activity_itinerary AFTER DELETE ON activity_itinerary FOR EACH ROW
-  BEGIN
-    CALL version_up('activity_itinerary');
-  END//
-CREATE OR REPLACE TRIGGER version_u_activity_itinerary AFTER UPDATE ON activity_itinerary FOR EACH ROW
-  BEGIN
-    CALL version_up('activity_itinerary');
-  END//
-CREATE OR REPLACE TRIGGER version_i_activity_tag AFTER INSERT ON activity_tag FOR EACH ROW
-  BEGIN
-    CALL version_up('activity_tag');
-  END//
-CREATE OR REPLACE TRIGGER version_d_activity_tag AFTER DELETE ON activity_tag FOR EACH ROW
-  BEGIN
-    CALL version_up('activity_tag');
-  END//
-CREATE OR REPLACE TRIGGER version_u_activity_tag AFTER UPDATE ON activity_tag FOR EACH ROW
-  BEGIN
-    CALL version_up('activity_tag');
-  END//
-CREATE OR REPLACE TRIGGER version_i_album AFTER INSERT ON album FOR EACH ROW
-  BEGIN
-    CALL version_up('album');
-  END//
-CREATE OR REPLACE TRIGGER version_d_album AFTER DELETE ON album FOR EACH ROW
-  BEGIN
-    CALL version_up('album');
-  END//
-CREATE OR REPLACE TRIGGER version_u_album AFTER UPDATE ON album FOR EACH ROW
-  BEGIN
-    CALL version_up('album');
-  END//
-CREATE OR REPLACE TRIGGER version_i_festival AFTER INSERT ON festival FOR EACH ROW
-  BEGIN
-    CALL version_up('festival');
-  END//
-CREATE OR REPLACE TRIGGER version_d_festival AFTER DELETE ON festival FOR EACH ROW
-  BEGIN
-    CALL version_up('festival');
-  END//
-CREATE OR REPLACE TRIGGER version_u_festival AFTER UPDATE ON festival FOR EACH ROW
-  BEGIN
-    CALL version_up('festival');
-  END//
-CREATE OR REPLACE TRIGGER version_i_festival_day AFTER INSERT ON festival_day FOR EACH ROW
-  BEGIN
-    CALL version_up('festival_day');
-  END//
-CREATE OR REPLACE TRIGGER version_d_festival_day AFTER DELETE ON festival_day FOR EACH ROW
-  BEGIN
-    CALL version_up('festival_day');
-  END//
-CREATE OR REPLACE TRIGGER version_u_festival_day AFTER UPDATE ON festival_day FOR EACH ROW
-  BEGIN
-    CALL version_up('festival_day');
-  END//
-CREATE OR REPLACE TRIGGER version_i_festival_event AFTER INSERT ON festival_event FOR EACH ROW
-  BEGIN
-    IF NEW.gm = 0 THEN
-      CALL version_up('festival_event_city');
-    ELSE
-      CALL version_up('festival_event_gm');
-    END IF;
-  END//
-CREATE OR REPLACE TRIGGER version_d_festival_event AFTER DELETE ON festival_event FOR EACH ROW
-  BEGIN
-    IF OLD.gm = 0 THEN
-      CALL version_up('festival_event_city');
-    ELSE
-      CALL version_up('festival_event_gm');
-    END IF;
-  END//
-CREATE OR REPLACE TRIGGER version_u_festival_event AFTER UPDATE ON festival_event FOR EACH ROW
-  BEGIN
-    IF NEW.gm = 0 THEN
-      CALL version_up('festival_event_city');
-    ELSE
-      CALL version_up('festival_event_gm');
-    END IF;
-  END//
-CREATE OR REPLACE TRIGGER version_i_festival_event_image AFTER INSERT ON festival_event_image FOR EACH ROW
-  BEGIN
-    CALL version_up('festival_event_image');
-  END//
-CREATE OR REPLACE TRIGGER version_d_festival_event_image AFTER DELETE ON festival_event_image FOR EACH ROW
-  BEGIN
-    CALL version_up('festival_event_image');
-  END//
-CREATE OR REPLACE TRIGGER version_u_festival_event_image AFTER UPDATE ON festival_event_image FOR EACH ROW
-  BEGIN
-    CALL version_up('festival_event_image');
-  END//
-CREATE OR REPLACE TRIGGER version_i_festival_offer AFTER INSERT ON festival_offer FOR EACH ROW
-  BEGIN
-    CALL version_up('festival_offer');
-  END//
-CREATE OR REPLACE TRIGGER version_d_festival_offer AFTER DELETE ON festival_offer FOR EACH ROW
-  BEGIN
-    CALL version_up('festival_offer');
-  END//
-CREATE OR REPLACE TRIGGER version_u_festival_offer AFTER UPDATE ON festival_offer FOR EACH ROW
-  BEGIN
-    CALL version_up('festival_offer');
-  END//
-CREATE OR REPLACE TRIGGER version_i_people AFTER INSERT ON people FOR EACH ROW
-  BEGIN
-    CALL version_up('people');
-  END//
-CREATE OR REPLACE TRIGGER version_d_people AFTER DELETE ON people FOR EACH ROW
-  BEGIN
-    CALL version_up('people');
-  END//
-CREATE OR REPLACE TRIGGER version_u_people AFTER UPDATE ON people FOR EACH ROW
-  BEGIN
-    CALL version_up('people');
-  END//
-CREATE OR REPLACE TRIGGER version_i_photo AFTER INSERT ON photo FOR EACH ROW
-  BEGIN
-    CALL version_up('photo');
-  END//
-CREATE OR REPLACE TRIGGER version_d_photo AFTER DELETE ON photo FOR EACH ROW
-  BEGIN
-    CALL version_up('photo');
-  END//
-CREATE OR REPLACE TRIGGER version_u_photo AFTER UPDATE ON photo FOR EACH ROW
-  BEGIN
-    CALL version_up('photo');
-  END//
-CREATE OR REPLACE TRIGGER version_i_photo_album AFTER INSERT ON photo_album FOR EACH ROW
-  BEGIN
-    CALL version_up('photo_album');
-  END//
-CREATE OR REPLACE TRIGGER version_d_photo_album AFTER DELETE ON photo_album FOR EACH ROW
-  BEGIN
-    CALL version_up('photo_album');
-  END//
-CREATE OR REPLACE TRIGGER version_u_photo_album AFTER UPDATE ON photo_album FOR EACH ROW
-  BEGIN
-    CALL version_up('photo_album');
-  END//
-CREATE OR REPLACE TRIGGER version_i_photo_comment AFTER INSERT ON photo_comment FOR EACH ROW
-  BEGIN
-    CALL version_up('photo_comment');
-  END//
-CREATE OR REPLACE TRIGGER version_d_photo_comment AFTER DELETE ON photo_comment FOR EACH ROW
-  BEGIN
-    CALL version_up('photo_comment');
-  END//
-CREATE OR REPLACE TRIGGER version_u_photo_comment AFTER UPDATE ON photo_comment FOR EACH ROW
-  BEGIN
-    CALL version_up('photo_comment');
-  END//
-CREATE OR REPLACE TRIGGER version_i_place AFTER INSERT ON place FOR EACH ROW
-  BEGIN
-    CALL version_up('place');
-  END//
-CREATE OR REPLACE TRIGGER version_d_place AFTER DELETE ON place FOR EACH ROW
-  BEGIN
-    CALL version_up('place');
-  END//
-CREATE OR REPLACE TRIGGER version_u_place AFTER UPDATE ON place FOR EACH ROW
-  BEGIN
-    CALL version_up('place');
-  END//
-CREATE OR REPLACE TRIGGER version_i_post AFTER INSERT ON post FOR EACH ROW
-  BEGIN
-    CALL version_up('post');
-  END//
-CREATE OR REPLACE TRIGGER version_d_post AFTER DELETE ON post FOR EACH ROW
-  BEGIN
-    CALL version_up('post');
-  END//
-CREATE OR REPLACE TRIGGER version_u_post AFTER UPDATE ON post FOR EACH ROW
-  BEGIN
-    CALL version_up('post');
-  END//
-CREATE OR REPLACE TRIGGER version_i_post_comment AFTER INSERT ON post_comment FOR EACH ROW
-  BEGIN
-    CALL version_up('post_comment');
-  END//
-CREATE OR REPLACE TRIGGER version_d_post_comment AFTER DELETE ON post_comment FOR EACH ROW
-  BEGIN
-    CALL version_up('post_comment');
-  END//
-CREATE OR REPLACE TRIGGER version_u_post_comment AFTER UPDATE ON post_comment FOR EACH ROW
-  BEGIN
-    CALL version_up('post_comment');
-  END//
-CREATE OR REPLACE TRIGGER version_i_post_image AFTER INSERT ON post_image FOR EACH ROW
-  BEGIN
-    CALL version_up('post_image');
-  END//
-CREATE OR REPLACE TRIGGER version_d_post_image AFTER DELETE ON post_image FOR EACH ROW
-  BEGIN
-    CALL version_up('post_image');
-  END//
-CREATE OR REPLACE TRIGGER version_u_post_image AFTER UPDATE ON post_image FOR EACH ROW
-  BEGIN
-    CALL version_up('post_image');
-  END//
-CREATE OR REPLACE TRIGGER version_i_post_tag AFTER INSERT ON post_tag FOR EACH ROW
-  BEGIN
-    CALL version_up('post_tag');
-  END//
-CREATE OR REPLACE TRIGGER version_d_post_tag AFTER DELETE ON post_tag FOR EACH ROW
-  BEGIN
-    CALL version_up('post_tag');
-  END//
-CREATE OR REPLACE TRIGGER version_u_post_tag AFTER UPDATE ON post_tag FOR EACH ROW
-  BEGIN
-    CALL version_up('post_tag');
-  END//
-CREATE OR REPLACE TRIGGER version_i_settings AFTER INSERT ON settings FOR EACH ROW
-  BEGIN
-    CALL version_up('settings');
-  END//
-CREATE OR REPLACE TRIGGER version_d_settings AFTER DELETE ON settings FOR EACH ROW
-  BEGIN
-    CALL version_up('settings');
-  END//
-CREATE OR REPLACE TRIGGER version_u_settings AFTER UPDATE ON settings FOR EACH ROW
-  BEGIN
-    CALL version_up('settings');
-  END//
-CREATE OR REPLACE TRIGGER version_i_sponsor AFTER INSERT ON sponsor FOR EACH ROW
-  BEGIN
-    CALL version_up('sponsor');
-  END//
-CREATE OR REPLACE TRIGGER version_d_sponsor AFTER DELETE ON sponsor FOR EACH ROW
-  BEGIN
-    CALL version_up('sponsor');
-  END//
-CREATE OR REPLACE TRIGGER version_u_sponsor AFTER UPDATE ON sponsor FOR EACH ROW
-  BEGIN
-    IF (NEW.print = OLD.print AND NEW.print_static = OLD.print_static AND NEW.click = OLD.click AND NEW.ammount = OLD.ammount) THEN
-      CALL version_up('sponsor');
-    END IF;
-  END//
-
-
-DELIMITER ;
-

+ 0 - 850
sql/setup.sql

@@ -1,850 +0,0 @@
-CREATE DATABASE gm CHARACTER SET utf8 COLLATE utf8_bin;
-
-SET NAMES utf8;
-
-CONNECT gm;
-
-DROP TABLE IF EXISTS user;
-CREATE TABLE user (
-    id            INT                AUTO_INCREMENT    PRIMARY KEY,
-    username    VARCHAR(64)        NOT NULL,
-    email        VARCHAR(128)    NOT NULL,
-    password    CHAR(128)        NOT NULL,
-    salt        CHAR(128)        NOT NULL,
-    fname        VARCHAR(64),
-    lname        VARCHAR(64),
-    picture        VARCHAR(100),
-    phone        VARCHAR(16),
-    cp            VARCHAR(6),
-    admin        BOOLEAN            NOT NULL        DEFAULT 0,
-    active        BOOLEAN            NOT NULL        DEFAULT 0
-);
-
-DROP TABLE IF EXISTS login_attempts;
-CREATE TABLE login_attempts (
-    user    INT            NOT NULL    references user.id,
-    dtime    VARCHAR(30)    NOT NULL
-);
-
-DROP TABLE IF EXISTS permissions;
-CREATE TABLE permissions(
-    user        INT            PRIMARY KEY references user.id,
-    access        BOOLEAN        NOT NULL    DEFAULT 1,
-    post        BOOLEAN        NOT NULL    DEFAULT 1,
-    settings    BOOLEAN        NOT NULL    DEFAULT 1,
-    money_r        BOOLEAN        NOT NULL    DEFAULT 0,
-    money_w        BOOLEAN        NOT NULL    DEFAULT 0,
-    manager        BOOLEAN        NOT NULL    DEFAULT 0
-);
-
-DROP TABLE IF EXISTS post;
-CREATE TABLE post (
-    id            INT                AUTO_INCREMENT    PRIMARY KEY,
-    permalink    VARCHAR(300)    NOT NULL,
-    title_es    VARCHAR(300)    NOT NULL,
-    title_en    VARCHAR(300),
-    title_eu    VARCHAR(300),
-    text_es        VARCHAR(5000)    NOT NULL,
-    text_en        VARCHAR(5000),
-    text_eu        VARCHAR(5000),
-    user        INT                NOT NULL        DEFAULT 1    REFERENCES user.id,
-    dtime        TIMESTAMP        NOT NULL        DEFAULT now(),
-    visible        BOOLEAN            NOT NULL        DEFAULT    1,
-    comments    BOOLEAN            NOT NULL        DEFAULT 1
-);
-
-DROP TABLE IF EXISTS post_tag;
-CREATE TABLE post_tag (
-    post    INT            NOT NULL    REFERENCES post.id,
-    tag        VARCHAR(64)    NOT NULL,
-    PRIMARY KEY (post, tag)
-);
-
-DROP TABLE IF EXISTS post_image;
-CREATE TABLE post_image (
-    id        INT                AUTO_INCREMENT    PRIMARY KEY,
-    post    INT                NOT NULL    REFERENCES post.id,
-    image    VARCHAR(300)    NOT NULL,
-    idx        INT                NOT NULL
-);
-
-DROP TABLE IF EXISTS post_comment;
-CREATE TABLE post_comment (
-  id        INT            AUTO_INCREMENT             PRIMARY KEY,
-  post      INT            NOT NULL                   REFERENCES post(id),
-  text      VARCHAR(5000)  NOT NULL,
-  dtime     TIMESTAMP      NOT NULL                   DEFAULT now(),
-  user      INT            REFERENCES user.id,
-  username  VARCHAR(200),
-  lang      VARCHAR(10),
-  approved  BOOLEAN        NOT NULL                   DEFAULT 1,
-  visit     INT            REFERENCES stat_visit.id,
-  app       VARCHAR(24),
-  app_user  VARCHAR(64)
-);
-
-DROP TABLE IF EXISTS place;
-CREATE TABLE place (
-    id            INT                AUTO_INCREMENT  PRIMARY KEY,
-    name_es        VARCHAR(100)    NOT NULL,
-    name_en        VARCHAR(100),
-    name_eu        VARCHAR(100),
-    address_es    VARCHAR(200)    NOT NULL,
-    address_en    VARCHAR(200),
-    address_eu    VARCHAR(200),
-    cp            VARCHAR(10),
-    lat            DOUBLE,
-    lon            DOUBLE
-);
-
-DROP TABLE IF EXISTS route;
-CREATE TABLE route (
-  id       INT           AUTO_INCREMENT PRIMARY KEY,
-  name     VARCHAR(32),
-  mins     INT,
-  c_lat    DOUBLE        NOT NULL,
-  c_lon    DOUBLE        NOT NULL,
-  zoom     INT           DEFAULT 16
-);
-
-DROP TABLE IF EXISTS route_point;
-CREATE TABLE route_point (
-  id       INT      AUTO_INCREMENT        PRIMARY KEY,
-  route    INT      NOT NULL              DEFAULT 0,
-  part     INT      NOT NULL,
-  lat_o    DOUBLE,
-  lon_o    DOUBLE,
-  lat_d    DOUBLE,
-  lon_d    DOUBLE,
-  mins     INT,
-  visible  BOOLEAN  NOT NULL              DEFAULT 1
-);
-
-DROP TABLE IF EXISTS sponsor;
-CREATE TABLE sponsor (
-  id            INT             NOT NULL  AUTO_INCREMENT  PRIMARY KEY,
-  name_es       VARCHAR(100)    NOT NULL,
-  name_en       VARCHAR(100),
-  name_eu       VARCHAR(100),
-  text_es       VARCHAR(1000),
-  text_en       VARCHAR(1000),
-  text_eu       VARCHAR(1000),
-  image         VARCHAR(100),
-  local         BOOLEAN         NOT NULL  DEFAULT 1,
-  address_es    VARCHAR(200),
-  address_en    VARCHAR(200),
-  address_eu    VARCHAR(200),
-  link          VARCHAR(300),
-  lat           DOUBLE,
-  lon           DOUBLE,
-  ammount       INT,
-  print         INT             NOT NULL  DEFAULT 0,
-  print_static  INT             NOT NULL  DEFAULT 0,
-  click         INT             NOT NULL  DEFAULT 0
-);
-
-DROP TABLE IF EXISTS stat_visit;
-CREATE TABLE stat_visit (
-    id        INT                NOT NULL    AUTO_INCREMENT    PRIMARY KEY,
-    ip        VARCHAR(50),
-    uagent    VARCHAR(400),
-    os        VARCHAR(150),
-    browser    VARCHAR(150)
-);
-
-DROP TABLE IF EXISTS stat_view;
-CREATE TABLE stat_view (
-    id        INT                NOT NULL    AUTO_INCREMENT    PRIMARY KEY,
-    visit    INT                NOT NULL    REFERENCES stat_visit.id,
-    section    VARCHAR(80)        NOT NULL,
-    entry    VARCHAR(100)    NOT NULL,
-    dtime    TIMESTAMP        NOT NULL    DEFAULT now()
-);
-CREATE INDEX visit_dtime ON stat_view(visit, dtime);
-
-DROP TABLE IF EXISTS sync;
-CREATE TABLE sync (
-  id      INT            NOT NULL  AUTO_INCREMENT  PRIMARY KEY,
-  dtime   TIMESTAMP      NOT NULL  DEFAULT now(),
-  client  VARCHAR(64),
-  user    VARCHAR(64),
-  fg      INT            NOT NULL  DEFAULT 0,
-  synced  BOOLEAN        NOT NULL  DEFAULT 0,
-  error   VARCHAR(256),
-  ip      VARCHAR(128),
-  os      VARCHAR(128),
-  uagent  VARCHAR(256)
-);
-
-DROP TABLE IF EXISTS stat_sync;
-CREATE TABLE stat_sync (
-    id        INT            NOT NULL    AUTO_INCREMENT    PRIMARY KEY,
-    dtime    TIMESTAMP    NOT NULL    DEFAULT now(),
-    user    VARCHAR(64)    NOT NULL,
-    fg        INT            NOT NULL    DEFAULT 1,
-    os        VARCHAR(64)    NOT NULL,
-    ip        VARCHAR(50)    NOT NULL,
-    synced    INT            NOT NULL    DEFAULT 0
-);
-
-DROP TABLE IF EXISTS photo;
-CREATE TABLE photo (
-    id                INT                NOT NULL    AUTO_INCREMENT    PRIMARY KEY,
-    file            VARCHAR(100)    NOT NULL    UNIQUE,
-    permalink        VARCHAR(100)    NOT NULL    UNIQUE,
-    title_es        VARCHAR(100),
-    title_en        VARCHAR(100),
-    title_eu        VARCHAR(100),
-    description_es    VARCHAR(1000),
-    description_en    VARCHAR(1000),
-    description_eu    VARCHAR(1000),
-    dtime            DATETIME,
-    uploaded        TIMESTAMP        NOT NULL    DEFAULT now(),
-    place            INT                REFERENCES place.id,
-    width            INT,
-    height            INT,
-    size            BIGINT,
-    approved        BOOLEAN            NOT NULL    DEFAULT 1,
-    user            INT                NOT NULL    DEFAULT 1    REFERENCES user.id,
-    username        VARCHAR(64)
-);
-
-DROP TABLE IF EXISTS album;
-CREATE TABLE album (
-    id                INT                NOT NULL    AUTO_INCREMENT    PRIMARY KEY,
-    permalink        VARCHAR(100)    NOT NULL,
-    title_es        VARCHAR(100)    NOT NULL,
-    title_en        VARCHAR(100),
-    title_eu        VARCHAR(100),
-    description_es    VARCHAR(1000),
-    description_en    VARCHAR(1000),
-    description_eu    VARCHAR(1000),
-    user            INT                NOT NULL    DEFAULT 1    REFERENCES user.id,
-    open            BOOLEAN            NOT NULL    DEFAULT 1,
-    dtime            TIMESTAMP        NOT NULL    DEFAULT now()
-);
-
-DROP TABLE IF EXISTS photo_album;
-CREATE TABLE photo_album (
-    photo    INT    NOT NULL    REFERENCES photo.id,
-    album    INT    NOT NULL    REFERENCES album.id,
-    PRIMARY KEY (photo, album)
-);
-
-DROP TABLE IF EXISTS photo_comment;
-CREATE TABLE photo_comment (
-  id        INT            AUTO_INCREMENT             PRIMARY KEY,
-  photo     INT            NOT NULL                   REFERENCES photo(id),
-  text      VARCHAR(5000)  NOT NULL,
-  dtime     TIMESTAMP      NOT NULL                   DEFAULT now(),
-  user      INT            REFERENCES user.id,
-  username  VARCHAR(200),
-  lang      VARCHAR(10),
-  approved  BOOLEAN        NOT NULL                   DEFAULT 1,
-  visit     INT            REFERENCES stat_visit.id,
-  app       VARCHAR(24),
-  app_user  VARCHAR(64)
-);
-
-DROP TABLE IF EXISTS activity;
-CREATE TABLE activity (
-    id            INT                AUTO_INCREMENT    PRIMARY KEY,
-    permalink    VARCHAR(100)    NOT NULL,
-    date        DATE            NOT NULL,
-    city        VARCHAR(100)    NOT NULL    DEFAULT "Vitoria-Gasteiz",
-    title_es    VARCHAR(300)    NOT NULL,
-    title_en    VARCHAR(300),
-    title_eu    VARCHAR(300),
-    text_es        TEXT            NOT NULL,
-    text_en        TEXT,
-    text_eu        TEXT,
-    after_es    VARCHAR(2000),
-    after_en    VARCHAR(2000),
-    after_eu    VARCHAR(2000),
-    price        FLOAT            NOT NULL,
-    inscription    BOOLEAN            NOT NULL        DEFAULT 1,
-    people        INT                DEFAULT 0,
-    max_people    INT,
-    album        INT                REFERENCES album.id,
-    user        INT                NOT NULL        DEFAULT 1    REFERENCES user.id,
-    dtime        TIMESTAMP        NOT NULL        DEFAULT now(),
-    visible        BOOLEAN            NOT NULL        DEFAULT    1,
-    comments    BOOLEAN            NOT NULL        DEFAULT 1
-);
-
-DROP TABLE IF EXISTS activity_tag;
-CREATE TABLE activity_tag (
-    activity    INT            NOT NULL    REFERENCES activity.id,
-    tag            VARCHAR(64)    NOT NULL,
-    PRIMARY KEY (activity, tag)
-);
-
-DROP TABLE IF EXISTS activity_image;
-CREATE TABLE activity_image (
-    id            INT            AUTO_INCREMENT    PRIMARY KEY,
-    activity    INT            NOT NULL    REFERENCES activity.id,
-    image        VARCHAR(64)    NOT NULL,
-    idx            INT            NOT NULL
-);
-
-DROP TABLE IF EXISTS activity_itinerary;
-CREATE TABLE activity_itinerary (
-  id              INT             AUTO_INCREMENT        PRIMARY KEY,
-  activity        INT             NOT NULL              REFERENCES activity.id,
-  name_es         VARCHAR(64)     NOT NULL,
-  name_en         VARCHAR(64),
-  name_eu         VARCHAR(64),
-  description_es  VARCHAR(1000),
-  description_en  VARCHAR(1000),
-  description_eu  VARCHAR(1000),
-  start           DATETIME        NOT NULL,
-  end             DATETIME,
-  place           INT             REFERENCES place.id,
-  route           INT             REFERENCES route.id
-);
-
-DROP TABLE IF EXISTS activity_comment;
-CREATE TABLE activity_comment (
-  id        INT            AUTO_INCREMENT             PRIMARY KEY,
-  activity  INT            NOT NULL                   REFERENCES post(id),
-  text      VARCHAR(5000)  NOT NULL,
-  dtime     TIMESTAMP      NOT NULL                   DEFAULT now(),
-  user      INT            REFERENCES user.id,
-  username  VARCHAR(200),
-  lang      VARCHAR(10),
-  approved  BOOLEAN        NOT NULL                   DEFAULT 1,
-  visit     INT            REFERENCES stat_visit.id,
-  app       VARCHAR(24),
-  app_user  VARCHAR(64)
-);
-
-DROP TABLE IF EXISTS festival;
-CREATE TABLE festival (
-    id            INT                AUTO_INCREMENT    PRIMARY KEY,
-    year        INT                UNIQUE,
-    text_es        VARCHAR(3000)    NOT NULL,
-    text_en        VARCHAR(3000),
-    text_eu        VARCHAR(3000),
-    summary_es    VARCHAR(3000),
-    summary_en    VARCHAR(3000),
-    summary_eu    VARCHAR(3000),
-    img            VARCHAR(2000)
-);
-
-DROP TABLE IF EXISTS festival_day;
-CREATE TABLE festival_day (
-    id         INT          AUTO_INCREMENT PRIMARY KEY,
-    date       DATE         NOT NULL,
-    name_es    VARCHAR(60)  NOT NULL,
-    name_en    VARCHAR(60),
-    name_eu    VARCHAR(60),
-    price      INT          NOT NULL,
-    people     INT          NOT NULL       DEFAULT 0,
-    max_people INT          NOT NULL       DEFAULT 0
-);
-
-DROP TABLE IF EXISTS festival_offer;
-CREATE TABLE festival_offer (
-    id             INT           AUTO_INCREMENT PRIMARY KEY,
-    year           INT,
-    name_es        VARCHAR(60)   NOT NULL,
-    name_en        VARCHAR(60),
-    name_eu        VARCHAR(60),
-    description_es VARCHAR(500),
-    description_en VARCHAR(500),
-    description_eu VARCHAR(500),
-    days           INT           NOT NULL,
-    price          INT           NOT NULL
-);
-
-DROP TABLE IF EXISTS location;
-CREATE TABLE location (
-    id        INT            AUTO_INCREMENT     PRIMARY KEY,
-    action    VARCHAR(1)    NOT NULL,
-    dtime    TIMESTAMP    NOT NULL        DEFAULT now(),
-    lat        DOUBLE,
-    lon        DOUBLE,
-    start    INT,
-    user    INT            NOT NULL        REFERENCES user.id
-);
-
-DROP TABLE IF EXISTS notification;
-CREATE TABLE notification (
-    id            INT                AUTO_INCREMENT     PRIMARY KEY,
-    user        INT                NOT NULL        REFERENCES user.id,
-    dtime        TIMESTAMP        NOT NULL        DEFAULT now(),
-    duration    INT                NOT NULL        DEFAULT 60,
-    action        VARCHAR(20)        NOT NULL        DEFAULT 'message',
-    title_es    VARCHAR(100)    NOT NULL,
-    title_en    VARCHAR(100),
-    title_eu    VARCHAR(100),
-    text_es        VARCHAR(1000),
-    text_en        VARCHAR(1000),
-    text_eu        VARCHAR(1000),
-    internal    BOOLEAN            NOT NULL        DEFAULT 0
-);
-
-DROP TABLE IF EXISTS people;
-CREATE TABLE people (
-    id        INT                AUTO_INCREMENT    PRIMARY KEY,
-    name_es    VARCHAR(100)    NOT NULL,
-    name_en    VARCHAR(100),
-    name_eu    VARCHAR(100),
-    link    VARCHAR(300)
-);
-
-DROP TABLE IF EXISTS festival_event;
-CREATE TABLE festival_event (
-  id              INT             AUTO_INCREMENT         PRIMARY KEY,
-  gm              BOOLEAN         DEFAULT 0,
-  title_es        VARCHAR(200)    NOT NULL,
-  title_en        VARCHAR(200),
-  title_eu        VARCHAR(200),
-  description_es  VARCHAR(5000),
-  description_en  VARCHAR(5000),
-  description_eu  VARCHAR(5000),
-  host            INT             REFERENCES people.id,
-  sponsor         INT             REFERENCES people.id,
-  place           INT             REFERENCES place.id,
-  route           INT             REFERENCES route.id,
-  start           DATETIME        NOT NULL,
-  end             DATETIME,
-  interest        INT             NOT NULL              DEFAULT 2
-);
-
-DROP TABLE IF EXISTS festival_event_image;
-CREATE TABLE festival_event_image (
-    id            INT            AUTO_INCREMENT    PRIMARY KEY,
-    event        INT            NOT NULL    REFERENCES activity.id,
-    image        VARCHAR(64)    NOT NULL,
-    idx            INT            NOT NULL
-);
-
-DROP TABLE IF EXISTS settings;
-CREATE TABLE settings (
-    name        VARCHAR(64)    PRIMARY KEY,
-    value        VARCHAR(64)    NOT NULL,
-    user        INT            REFERENCES user.id,
-    changed        TIMESTAMP    NOT NULL        DEFAULT now()
-);
-
-DROP TABLE IF EXISTS version;
-CREATE TABLE version (
-  section  VARCHAR(128)  PRIMARY KEY,
-  version  INT          NOT NULL      DEFAULT 1
-);
-
-DROP TABLE IF EXISTS member;
-CREATE TABLE member (
-    id            INT                AUTO_INCREMENT    PRIMARY KEY,
-    name        VARCHAR(64)        NOT NULL,
-    lname        VARCHAR(128)    NOT NULL,
-    lname2        VARCHAR(128),
-    alias        VARCHAR(32),
-    dni            VARCHAR(16),
-    bdate        DATE,
-    phone        VARCHAR(32),
-    mail        VARCHAR(128),
-    address        VARCHAR(512),
-    jdate        DATE,
-    joined        VARCHAR(16),
-    board        BOOLEAN            NOT NULL    DEFAULT 0,
-    facebook    VARCHAR(1024),
-    twitter        VARCHAR(1024),
-    googleplus    VARCHAR(1024)
-);
-
-DROP TABLE IF EXISTS member_activity;
-CREATE TABLE member_activity(
-    member        INT        REFERENCES member.id,
-    activity    INT        REFERENCES activity.id,
-    paid        BOOLEAN    NOT NULL    DEFAULT 1,
-    PRIMARY KEY(member, activity)
-);
-
-DROP TABLE IF EXISTS intolerance;
-CREATE TABLE intolerance(
-    member    INT                REFERENCES member.id,
-    element    VARCHAR(128),
-    PRIMARY KEY(member, element)
-);
-
-DROP TABLE IF EXISTS member_day;
-CREATE TABLE member_day(
-    member    INT        REFERENCES member.id,
-    day        INT        REFERENCES festival_day.id,
-    paid    BOOLEAN    NOT NULL    DEFAULT 1,
-    PRIMARY KEY (member, day)
-);
-
-DROP TABLE IF EXISTS transac_category;
-CREATE TABLE transac_category(
-    id                        INT                AUTO_INCREMENT PRIMARY KEY,
-    title_internal            VARCHAR(510)    NOT NULL,
-    title_es                VARCHAR(510)    NOT NULL,
-    title_en                VARCHAR(510),
-    title_eu                VARCHAR(510),
-    description_internal    VARCHAR(510)    NOT NULL,
-    description_es            VARCHAR(510)    NOT NULL,
-    description_en            VARCHAR(510),
-    description_eu            VARCHAR(510)
-);
-
-DROP TABLE IF EXISTS transact;
-CREATE TABLE transact(
-    id                INT                AUTO_INCREMENT PRIMARY KEY,
-    dtime            TIMESTAMP        NOT NULL    DEFAULT now(),
-    ammount            FLOAT            NOT NULL,
-    user            INT                NOT NULL    REFERENCES user.id,
-    concept            VARCHAR(1024),
-    category        INT                NOT NULL    REFERENCES transac_category.id
-);
-
-DROP TABLE IF EXISTS translation;
-CREATE TABLE translation(
-    id                INT                AUTO_INCREMENT PRIMARY KEY,
-    dtime            TIMESTAMP        NOT NULL    DEFAULT now(),
-    username        VARCHAR(255)    NOT NULL    DEFAULT 'unknown',
-    tab                VARCHAR(255)    NOT NULL,
-    field            VARCHAR(255)    NOT NULL,
-    eid                INT                NOT NULL,
-    lang            VARCHAR(2)        NOT NULL,
-    text            VARCHAR(9000)    NOT NULL,
-    applied            DATETIME
-);
-
-
-# Create views for festival_event
-CREATE OR REPLACE VIEW festival_event_gm AS SELECT id, title_es, title_en, title_eu, description_es, description_en, description_eu, host, sponsor, place, route, start, end, interest FROM festival_event WHERE gm = 1;
-CREATE OR REPLACE VIEW festival_event_city AS SELECT id, title_es, title_en, title_eu, description_es, description_en, description_eu, host, sponsor, place, route, start, end, interest FROM festival_event WHERE gm = 0;
-
-
-# Populate table version
-DELETE FROM version;
-INSERT INTO version VALUES ('activity', 1);
-INSERT INTO version VALUES ('activity_comment', 1);
-INSERT INTO version VALUES ('activity_image', 1);
-INSERT INTO version VALUES ('activity_itinerary', 1);
-INSERT INTO version VALUES ('activity_tag', 1);
-INSERT INTO version VALUES ('album', 1);
-INSERT INTO version VALUES ('festival', 1);
-INSERT INTO version VALUES ('festival_day', 1);
-INSERT INTO version VALUES ('festival_event_city', 1);
-INSERT INTO version VALUES ('festival_event_gm', 1);
-INSERT INTO version VALUES ('festival_event_image', 1);
-INSERT INTO version VALUES ('festival_offer', 1);
-INSERT INTO version VALUES ('people', 1);
-INSERT INTO version VALUES ('photo', 1);
-INSERT INTO version VALUES ('photo_album', 1);
-INSERT INTO version VALUES ('photo_comment', 1);
-INSERT INTO version VALUES ('place', 1);
-INSERT INTO version VALUES ('post', 1);
-INSERT INTO version VALUES ('post_comment', 1);
-INSERT INTO version VALUES ('post_image', 1);
-INSERT INTO version VALUES ('post_tag', 1);
-INSERT INTO version VALUES ('route', 1);
-INSERT INTO version VALUES ('route_point', 1);
-INSERT INTO version VALUES ('settings', 1);
-INSERT INTO version VALUES ('sponsor', 1);
-
-
-# Triggers to update versions
-DELIMITER //
-
-CREATE OR REPLACE PROCEDURE version_up (IN section_name VARCHAR(128))
-  BEGIN
-    UPDATE version SET version = version + 1 WHERE section = section_name;
-  END//
-
-CREATE OR REPLACE TRIGGER version_i_activity AFTER INSERT ON activity FOR EACH ROW
-  BEGIN
-    CALL version_up('activity');
-  END//
-CREATE OR REPLACE TRIGGER version_d_activity AFTER DELETE ON activity FOR EACH ROW
-  BEGIN
-    CALL version_up('activity');
-  END//
-CREATE OR REPLACE TRIGGER version_u_activity AFTER UPDATE ON activity FOR EACH ROW
-  BEGIN
-    CALL version_up('activity');
-  END//
-CREATE OR REPLACE TRIGGER version_i_activity_comment AFTER INSERT ON activity_comment FOR EACH ROW
-  BEGIN
-    CALL version_up('activity_comment');
-  END//
-CREATE OR REPLACE TRIGGER version_d_activity_comment AFTER DELETE ON activity_comment FOR EACH ROW
-  BEGIN
-    CALL version_up('activity_comment');
-  END//
-CREATE OR REPLACE TRIGGER version_u_activity_comment AFTER UPDATE ON activity_comment FOR EACH ROW
-  BEGIN
-    CALL version_up('activity_comment');
-  END//
-CREATE OR REPLACE TRIGGER version_i_activity_image AFTER INSERT ON activity_image FOR EACH ROW
-  BEGIN
-    CALL version_up('activity_image');
-  END//
-CREATE OR REPLACE TRIGGER version_d_activity_image AFTER DELETE ON activity_image FOR EACH ROW
-  BEGIN
-    CALL version_up('activity_image');
-  END//
-CREATE OR REPLACE TRIGGER version_u_activity_image AFTER UPDATE ON activity_image FOR EACH ROW
-  BEGIN
-    CALL version_up('activity_image');
-  END//
-CREATE OR REPLACE TRIGGER version_i_activity_itinerary AFTER INSERT ON activity_itinerary FOR EACH ROW
-  BEGIN
-    CALL version_up('activity_itinerary');
-  END//
-CREATE OR REPLACE TRIGGER version_d_activity_itinerary AFTER DELETE ON activity_itinerary FOR EACH ROW
-  BEGIN
-    CALL version_up('activity_itinerary');
-  END//
-CREATE OR REPLACE TRIGGER version_u_activity_itinerary AFTER UPDATE ON activity_itinerary FOR EACH ROW
-  BEGIN
-    CALL version_up('activity_itinerary');
-  END//
-CREATE OR REPLACE TRIGGER version_i_activity_tag AFTER INSERT ON activity_tag FOR EACH ROW
-  BEGIN
-    CALL version_up('activity_tag');
-  END//
-CREATE OR REPLACE TRIGGER version_d_activity_tag AFTER DELETE ON activity_tag FOR EACH ROW
-  BEGIN
-    CALL version_up('activity_tag');
-  END//
-CREATE OR REPLACE TRIGGER version_u_activity_tag AFTER UPDATE ON activity_tag FOR EACH ROW
-  BEGIN
-    CALL version_up('activity_tag');
-  END//
-CREATE OR REPLACE TRIGGER version_i_album AFTER INSERT ON album FOR EACH ROW
-  BEGIN
-    CALL version_up('album');
-  END//
-CREATE OR REPLACE TRIGGER version_d_album AFTER DELETE ON album FOR EACH ROW
-  BEGIN
-    CALL version_up('album');
-  END//
-CREATE OR REPLACE TRIGGER version_u_album AFTER UPDATE ON album FOR EACH ROW
-  BEGIN
-    CALL version_up('album');
-  END//
-CREATE OR REPLACE TRIGGER version_i_festival AFTER INSERT ON festival FOR EACH ROW
-  BEGIN
-    CALL version_up('festival');
-  END//
-CREATE OR REPLACE TRIGGER version_d_festival AFTER DELETE ON festival FOR EACH ROW
-  BEGIN
-    CALL version_up('festival');
-  END//
-CREATE OR REPLACE TRIGGER version_u_festival AFTER UPDATE ON festival FOR EACH ROW
-  BEGIN
-    CALL version_up('festival');
-  END//
-CREATE OR REPLACE TRIGGER version_i_festival_day AFTER INSERT ON festival_day FOR EACH ROW
-  BEGIN
-    CALL version_up('festival_day');
-  END//
-CREATE OR REPLACE TRIGGER version_d_festival_day AFTER DELETE ON festival_day FOR EACH ROW
-  BEGIN
-    CALL version_up('festival_day');
-  END//
-CREATE OR REPLACE TRIGGER version_u_festival_day AFTER UPDATE ON festival_day FOR EACH ROW
-  BEGIN
-    CALL version_up('festival_day');
-  END//
-CREATE OR REPLACE TRIGGER version_i_festival_event AFTER INSERT ON festival_event FOR EACH ROW
-  BEGIN
-    IF NEW.gm = 0 THEN
-      CALL version_up('festival_event_city');
-    ELSE
-      CALL version_up('festival_event_gm');
-    END IF;
-  END//
-CREATE OR REPLACE TRIGGER version_d_festival_event AFTER DELETE ON festival_event FOR EACH ROW
-  BEGIN
-    IF OLD.gm = 0 THEN
-      CALL version_up('festival_event_city');
-    ELSE
-      CALL version_up('festival_event_gm');
-    END IF;
-  END//
-CREATE OR REPLACE TRIGGER version_u_festival_event AFTER UPDATE ON festival_event FOR EACH ROW
-  BEGIN
-    IF NEW.gm = 0 THEN
-      CALL version_up('festival_event_city');
-    ELSE
-      CALL version_up('festival_event_gm');
-    END IF;
-  END//
-CREATE OR REPLACE TRIGGER version_i_festival_event_image AFTER INSERT ON festival_event_image FOR EACH ROW
-  BEGIN
-    CALL version_up('festival_event_image');
-  END//
-CREATE OR REPLACE TRIGGER version_d_festival_event_image AFTER DELETE ON festival_event_image FOR EACH ROW
-  BEGIN
-    CALL version_up('festival_event_image');
-  END//
-CREATE OR REPLACE TRIGGER version_u_festival_event_image AFTER UPDATE ON festival_event_image FOR EACH ROW
-  BEGIN
-    CALL version_up('festival_event_image');
-  END//
-CREATE OR REPLACE TRIGGER version_i_festival_offer AFTER INSERT ON festival_offer FOR EACH ROW
-  BEGIN
-    CALL version_up('festival_offer');
-  END//
-CREATE OR REPLACE TRIGGER version_d_festival_offer AFTER DELETE ON festival_offer FOR EACH ROW
-  BEGIN
-    CALL version_up('festival_offer');
-  END//
-CREATE OR REPLACE TRIGGER version_u_festival_offer AFTER UPDATE ON festival_offer FOR EACH ROW
-  BEGIN
-    CALL version_up('festival_offer');
-  END//
-CREATE OR REPLACE TRIGGER version_i_people AFTER INSERT ON people FOR EACH ROW
-  BEGIN
-    CALL version_up('people');
-  END//
-CREATE OR REPLACE TRIGGER version_d_people AFTER DELETE ON people FOR EACH ROW
-  BEGIN
-    CALL version_up('people');
-  END//
-CREATE OR REPLACE TRIGGER version_u_people AFTER UPDATE ON people FOR EACH ROW
-  BEGIN
-    CALL version_up('people');
-  END//
-CREATE OR REPLACE TRIGGER version_i_photo AFTER INSERT ON photo FOR EACH ROW
-  BEGIN
-    CALL version_up('photo');
-  END//
-CREATE OR REPLACE TRIGGER version_d_photo AFTER DELETE ON photo FOR EACH ROW
-  BEGIN
-    CALL version_up('photo');
-  END//
-CREATE OR REPLACE TRIGGER version_u_photo AFTER UPDATE ON photo FOR EACH ROW
-  BEGIN
-    CALL version_up('photo');
-  END//
-CREATE OR REPLACE TRIGGER version_i_photo_album AFTER INSERT ON photo_album FOR EACH ROW
-  BEGIN
-    CALL version_up('photo_album');
-  END//
-CREATE OR REPLACE TRIGGER version_d_photo_album AFTER DELETE ON photo_album FOR EACH ROW
-  BEGIN
-    CALL version_up('photo_album');
-  END//
-CREATE OR REPLACE TRIGGER version_u_photo_album AFTER UPDATE ON photo_album FOR EACH ROW
-  BEGIN
-    CALL version_up('photo_album');
-  END//
-CREATE OR REPLACE TRIGGER version_i_photo_comment AFTER INSERT ON photo_comment FOR EACH ROW
-  BEGIN
-    CALL version_up('photo_comment');
-  END//
-CREATE OR REPLACE TRIGGER version_d_photo_comment AFTER DELETE ON photo_comment FOR EACH ROW
-  BEGIN
-    CALL version_up('photo_comment');
-  END//
-CREATE OR REPLACE TRIGGER version_u_photo_comment AFTER UPDATE ON photo_comment FOR EACH ROW
-  BEGIN
-    CALL version_up('photo_comment');
-  END//
-CREATE OR REPLACE TRIGGER version_i_place AFTER INSERT ON place FOR EACH ROW
-  BEGIN
-    CALL version_up('place');
-  END//
-CREATE OR REPLACE TRIGGER version_d_place AFTER DELETE ON place FOR EACH ROW
-  BEGIN
-    CALL version_up('place');
-  END//
-CREATE OR REPLACE TRIGGER version_u_place AFTER UPDATE ON place FOR EACH ROW
-  BEGIN
-    CALL version_up('place');
-  END//
-CREATE OR REPLACE TRIGGER version_i_post AFTER INSERT ON post FOR EACH ROW
-  BEGIN
-    CALL version_up('post');
-  END//
-CREATE OR REPLACE TRIGGER version_d_post AFTER DELETE ON post FOR EACH ROW
-  BEGIN
-    CALL version_up('post');
-  END//
-CREATE OR REPLACE TRIGGER version_u_post AFTER UPDATE ON post FOR EACH ROW
-  BEGIN
-    CALL version_up('post');
-  END//
-CREATE OR REPLACE TRIGGER version_i_post_comment AFTER INSERT ON post_comment FOR EACH ROW
-  BEGIN
-    CALL version_up('post_comment');
-  END//
-CREATE OR REPLACE TRIGGER version_d_post_comment AFTER DELETE ON post_comment FOR EACH ROW
-  BEGIN
-    CALL version_up('post_comment');
-  END//
-CREATE OR REPLACE TRIGGER version_u_post_comment AFTER UPDATE ON post_comment FOR EACH ROW
-  BEGIN
-    CALL version_up('post_comment');
-  END//
-CREATE OR REPLACE TRIGGER version_i_post_image AFTER INSERT ON post_image FOR EACH ROW
-  BEGIN
-    CALL version_up('post_image');
-  END//
-CREATE OR REPLACE TRIGGER version_d_post_image AFTER DELETE ON post_image FOR EACH ROW
-  BEGIN
-    CALL version_up('post_image');
-  END//
-CREATE OR REPLACE TRIGGER version_u_post_image AFTER UPDATE ON post_image FOR EACH ROW
-  BEGIN
-    CALL version_up('post_image');
-  END//
-CREATE OR REPLACE TRIGGER version_i_post_tag AFTER INSERT ON post_tag FOR EACH ROW
-  BEGIN
-    CALL version_up('post_tag');
-  END//
-CREATE OR REPLACE TRIGGER version_d_post_tag AFTER DELETE ON post_tag FOR EACH ROW
-  BEGIN
-    CALL version_up('post_tag');
-  END//
-CREATE OR REPLACE TRIGGER version_u_post_tag AFTER UPDATE ON post_tag FOR EACH ROW
-  BEGIN
-    CALL version_up('post_tag');
-  END//
-CREATE OR REPLACE TRIGGER version_i_settings AFTER INSERT ON settings FOR EACH ROW
-  BEGIN
-    CALL version_up('settings');
-  END//
-CREATE OR REPLACE TRIGGER version_d_settings AFTER DELETE ON settings FOR EACH ROW
-  BEGIN
-    CALL version_up('settings');
-  END//
-CREATE OR REPLACE TRIGGER version_u_settings AFTER UPDATE ON settings FOR EACH ROW
-  BEGIN
-    CALL version_up('settings');
-  END//
-CREATE OR REPLACE TRIGGER version_i_sponsor AFTER INSERT ON sponsor FOR EACH ROW
-  BEGIN
-    CALL version_up('sponsor');
-  END//
-CREATE OR REPLACE TRIGGER version_d_sponsor AFTER DELETE ON sponsor FOR EACH ROW
-  BEGIN
-    CALL version_up('sponsor');
-  END//
-CREATE OR REPLACE TRIGGER version_u_sponsor AFTER UPDATE ON sponsor FOR EACH ROW
-  BEGIN
-    IF (NEW.print = OLD.print AND NEW.print_static = OLD.print_static AND NEW.click = OLD.click AND NEW.ammount = OLD.ammount) THEN
-      CALL version_up('sponsor');
-    END IF;
-  END//
-
-
-DELIMITER ;
-
-
-
-
-
-
-
-# Set up two users for database. File dbusers.sql contains:
-# GRANT SELECT ON gm.* TO 'XXXX'@'XXXX' IDENTIFIED BY 'XXXX'; GRANT SELECT, INSERT, DELETE, UPDATE ON gm.* TO 'XXXX'@'XXXX' IDENTIFIED BY 'XXXX';
-SOURCE dbusers.sql;
-