Merge pull request #1276 from Alkarex/PostgreSQL-multiuser

PostgreSQL multiuser bug
pull/1279/head
Alexandre Alapetite 8 years ago committed by GitHub
commit d59e9eff40
  1. 5
      app/Models/UserDAO.php
  2. 12
      app/SQL/install.sql.pgsql.php
  3. 32
      app/SQL/install.sql.sqlite.php

@ -8,8 +8,9 @@ class FreshRSS_UserDAO extends Minz_ModelPdo {
$userPDO = new Minz_ModelPdo($username); $userPDO = new Minz_ModelPdo($username);
$ok = false; $ok = false;
$bd_prefix_user = $db['prefix'] . $username . '_';
if (defined('SQL_CREATE_TABLES')) { //E.g. MySQL if (defined('SQL_CREATE_TABLES')) { //E.g. MySQL
$sql = sprintf(SQL_CREATE_TABLES, $db['prefix'] . $username . '_', _t('gen.short.default_category')); $sql = sprintf(SQL_CREATE_TABLES, $bd_prefix_user, _t('gen.short.default_category'));
$stm = $userPDO->bd->prepare($sql); $stm = $userPDO->bd->prepare($sql);
$ok = $stm && $stm->execute(); $ok = $stm && $stm->execute();
} else { //E.g. SQLite } else { //E.g. SQLite
@ -17,7 +18,7 @@ class FreshRSS_UserDAO extends Minz_ModelPdo {
if (is_array($SQL_CREATE_TABLES)) { if (is_array($SQL_CREATE_TABLES)) {
$ok = true; $ok = true;
foreach ($SQL_CREATE_TABLES as $instruction) { foreach ($SQL_CREATE_TABLES as $instruction) {
$sql = sprintf($instruction, '', _t('gen.short.default_category')); $sql = sprintf($instruction, $bd_prefix_user, _t('gen.short.default_category'));
$stm = $userPDO->bd->prepare($sql); $stm = $userPDO->bd->prepare($sql);
$ok &= ($stm && $stm->execute()); $ok &= ($stm && $stm->execute());
} }

@ -26,9 +26,9 @@ $SQL_CREATE_TABLES = array(
"cache_nbUnreads" INT DEFAULT 0, "cache_nbUnreads" INT DEFAULT 0,
FOREIGN KEY ("category") REFERENCES "%1$scategory" ("id") ON DELETE SET NULL ON UPDATE CASCADE FOREIGN KEY ("category") REFERENCES "%1$scategory" ("id") ON DELETE SET NULL ON UPDATE CASCADE
);', );',
'CREATE INDEX name_index ON "%1$sfeed" ("name");', 'CREATE INDEX %1$sname_index ON "%1$sfeed" ("name");',
'CREATE INDEX priority_index ON "%1$sfeed" ("priority");', 'CREATE INDEX %1$spriority_index ON "%1$sfeed" ("priority");',
'CREATE INDEX keep_history_index ON "%1$sfeed" ("keep_history");', 'CREATE INDEX %1$skeep_history_index ON "%1$sfeed" ("keep_history");',
'CREATE TABLE IF NOT EXISTS "%1$sentry" ( 'CREATE TABLE IF NOT EXISTS "%1$sentry" (
"id" BIGINT NOT NULL PRIMARY KEY, "id" BIGINT NOT NULL PRIMARY KEY,
@ -47,9 +47,9 @@ $SQL_CREATE_TABLES = array(
FOREIGN KEY ("id_feed") REFERENCES "%1$sfeed" ("id") ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY ("id_feed") REFERENCES "%1$sfeed" ("id") ON DELETE CASCADE ON UPDATE CASCADE,
UNIQUE ("id_feed","guid") UNIQUE ("id_feed","guid")
);', );',
'CREATE INDEX is_favorite_index ON "%1$sentry" ("is_favorite");', 'CREATE INDEX %1$sis_favorite_index ON "%1$sentry" ("is_favorite");',
'CREATE INDEX is_read_index ON "%1$sentry" ("is_read");', 'CREATE INDEX %1$sis_read_index ON "%1$sentry" ("is_read");',
'CREATE INDEX entry_lastSeen_index ON "%1$sentry" ("lastSeen");', 'CREATE INDEX %1$sentry_lastSeen_index ON "%1$sentry" ("lastSeen");',
'INSERT INTO "%1$scategory" (id, name) VALUES(1, \'%2$s\');', 'INSERT INTO "%1$scategory" (id, name) VALUES(1, \'%2$s\');',
'INSERT INTO "%1$sfeed" (url, category, name, website, description, ttl) VALUES(\'http://freshrss.org/feeds/all.atom.xml\', 1, \'FreshRSS.org\', \'http://freshrss.org/\', \'FreshRSS, a free, self-hostable aggregator…\', 86400);', 'INSERT INTO "%1$sfeed" (url, category, name, website, description, ttl) VALUES(\'http://freshrss.org/feeds/all.atom.xml\', 1, \'FreshRSS.org\', \'http://freshrss.org/\', \'FreshRSS, a free, self-hostable aggregator…\', 86400);',

@ -1,16 +1,16 @@
<?php <?php
global $SQL_CREATE_TABLES; global $SQL_CREATE_TABLES;
$SQL_CREATE_TABLES = array( $SQL_CREATE_TABLES = array(
'CREATE TABLE IF NOT EXISTS `%1$scategory` ( 'CREATE TABLE IF NOT EXISTS `category` (
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
`name` varchar(255) NOT NULL, `name` varchar(255) NOT NULL,
UNIQUE (`name`) UNIQUE (`name`)
);', );',
'CREATE TABLE IF NOT EXISTS `%1$sfeed` ( 'CREATE TABLE IF NOT EXISTS `feed` (
`id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, `id` INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL,
`url` varchar(511) NOT NULL, `url` varchar(511) NOT NULL,
`%1$scategory` SMALLINT DEFAULT 0, `category` SMALLINT DEFAULT 0,
`name` varchar(255) NOT NULL, `name` varchar(255) NOT NULL,
`website` varchar(255), `website` varchar(255),
`description` text, `description` text,
@ -23,15 +23,15 @@ $SQL_CREATE_TABLES = array(
`ttl` INT NOT NULL DEFAULT -2, `ttl` INT NOT NULL DEFAULT -2,
`cache_nbEntries` int DEFAULT 0, `cache_nbEntries` int DEFAULT 0,
`cache_nbUnreads` int DEFAULT 0, `cache_nbUnreads` int DEFAULT 0,
FOREIGN KEY (`%1$scategory`) REFERENCES `%1$scategory`(`id`) ON DELETE SET NULL ON UPDATE CASCADE, FOREIGN KEY (`category`) REFERENCES `category`(`id`) ON DELETE SET NULL ON UPDATE CASCADE,
UNIQUE (`url`) UNIQUE (`url`)
);', );',
'CREATE INDEX IF NOT EXISTS feed_name_index ON `%1$sfeed`(`name`);', 'CREATE INDEX IF NOT EXISTS feed_name_index ON `feed`(`name`);',
'CREATE INDEX IF NOT EXISTS feed_priority_index ON `%1$sfeed`(`priority`);', 'CREATE INDEX IF NOT EXISTS feed_priority_index ON `feed`(`priority`);',
'CREATE INDEX IF NOT EXISTS feed_keep_history_index ON `%1$sfeed`(`keep_history`);', 'CREATE INDEX IF NOT EXISTS feed_keep_history_index ON `feed`(`keep_history`);',
'CREATE TABLE IF NOT EXISTS `%1$sentry` ( 'CREATE TABLE IF NOT EXISTS `entry` (
`id` bigint NOT NULL, `id` bigint NOT NULL,
`guid` varchar(760) NOT NULL, `guid` varchar(760) NOT NULL,
`title` varchar(255) NOT NULL, `title` varchar(255) NOT NULL,
@ -46,17 +46,17 @@ $SQL_CREATE_TABLES = array(
`id_feed` SMALLINT, `id_feed` SMALLINT,
`tags` varchar(1023), `tags` varchar(1023),
PRIMARY KEY (`id`), PRIMARY KEY (`id`),
FOREIGN KEY (`id_feed`) REFERENCES `%1$sfeed`(`id`) ON DELETE CASCADE ON UPDATE CASCADE, FOREIGN KEY (`id_feed`) REFERENCES `feed`(`id`) ON DELETE CASCADE ON UPDATE CASCADE,
UNIQUE (`id_feed`,`guid`) UNIQUE (`id_feed`,`guid`)
);', );',
'CREATE INDEX IF NOT EXISTS entry_is_favorite_index ON `%1$sentry`(`is_favorite`);', 'CREATE INDEX IF NOT EXISTS entry_is_favorite_index ON `entry`(`is_favorite`);',
'CREATE INDEX IF NOT EXISTS entry_is_read_index ON `%1$sentry`(`is_read`);', 'CREATE INDEX IF NOT EXISTS entry_is_read_index ON `entry`(`is_read`);',
'CREATE INDEX IF NOT EXISTS entry_lastSeen_index ON `%1$sentry`(`lastSeen`);', //v1.1.1 'CREATE INDEX IF NOT EXISTS entry_lastSeen_index ON `entry`(`lastSeen`);', //v1.1.1
'INSERT OR IGNORE INTO `%1$scategory` (id, name) VALUES(1, "%2$s");', 'INSERT OR IGNORE INTO `category` (id, name) VALUES(1, "%2$s");',
'INSERT OR IGNORE INTO `%1$sfeed` (url, category, name, website, description, ttl) VALUES("http://freshrss.org/feeds/all.atom.xml", 1, "FreshRSS.org", "http://freshrss.org/", "FreshRSS, a free, self-hostable aggregator…", 86400);', 'INSERT OR IGNORE INTO `feed` (url, category, name, website, description, ttl) VALUES("http://freshrss.org/feeds/all.atom.xml", 1, "FreshRSS.org", "http://freshrss.org/", "FreshRSS, a free, self-hostable aggregator…", 86400);',
'INSERT OR IGNORE INTO `%1$sfeed` (url, category, name, website, description, ttl) VALUES("https://github.com/FreshRSS/FreshRSS/releases.atom", 1, "FreshRSS releases", "https://github.com/FreshRSS/FreshRSS/", "FreshRSS releases @ GitHub", 86400);', 'INSERT OR IGNORE INTO `feed` (url, category, name, website, description, ttl) VALUES("https://github.com/FreshRSS/FreshRSS/releases.atom", 1, "FreshRSS releases", "https://github.com/FreshRSS/FreshRSS/", "FreshRSS releases @ GitHub", 86400);',
); );
define('SQL_DROP_TABLES', 'DROP TABLES %1$sentry, %1$sfeed, %1$scategory'); define('SQL_DROP_TABLES', 'DROP TABLES entry, feed, category');

Loading…
Cancel
Save