]> git.wh0rd.org Git - tt-rss.git/commitdiff
add new-style schema versions and updater
authorAndrew Dolgov <fox@bah.spb.su>
Sat, 24 Feb 2007 16:46:39 +0000 (17:46 +0100)
committerAndrew Dolgov <fox@bah.spb.su>
Sat, 24 Feb 2007 16:46:39 +0000 (17:46 +0100)
24 files changed:
schema/versions/mysql/10.sql [new file with mode: 0644]
schema/versions/mysql/11.sql [new file with mode: 0644]
schema/versions/mysql/12.sql [new file with mode: 0644]
schema/versions/mysql/13.sql [new file with mode: 0644]
schema/versions/mysql/3.sql [new file with mode: 0644]
schema/versions/mysql/4.sql [new file with mode: 0644]
schema/versions/mysql/5.sql [new file with mode: 0644]
schema/versions/mysql/6.sql [new file with mode: 0644]
schema/versions/mysql/7.sql [new file with mode: 0644]
schema/versions/mysql/8.sql [new file with mode: 0644]
schema/versions/mysql/9.sql [new file with mode: 0644]
schema/versions/pgsql/10.sql [new file with mode: 0644]
schema/versions/pgsql/11.sql [new file with mode: 0644]
schema/versions/pgsql/12.sql [new file with mode: 0644]
schema/versions/pgsql/13.sql [new file with mode: 0644]
schema/versions/pgsql/3.sql [new file with mode: 0644]
schema/versions/pgsql/4.sql [new file with mode: 0644]
schema/versions/pgsql/5.sql [new file with mode: 0644]
schema/versions/pgsql/6.sql [new file with mode: 0644]
schema/versions/pgsql/7.sql [new file with mode: 0644]
schema/versions/pgsql/8.sql [new file with mode: 0644]
schema/versions/pgsql/9.sql [new file with mode: 0644]
update.css [new file with mode: 0644]
update.php [new file with mode: 0644]

diff --git a/schema/versions/mysql/10.sql b/schema/versions/mysql/10.sql
new file mode 100644 (file)
index 0000000..e951f48
--- /dev/null
@@ -0,0 +1,12 @@
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('DIGEST_ENABLE', 1, 'false', 'Enable e-mail digest',1,
+'This option enables sending daily digest of new (and unread) headlines on your configured e-mail address');
+
+alter table ttrss_feeds add column include_in_digest bool;
+update ttrss_feeds set include_in_digest = true;
+alter table ttrss_feeds change include_in_digest include_in_digest bool not null;
+alter table ttrss_feeds alter column include_in_digest set default true;
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('CONFIRM_FEED_CATCHUP', 1, 'true', 'Confirm marking feed as read',3);
+
+update ttrss_version set schema_version = 10;
+
diff --git a/schema/versions/mysql/11.sql b/schema/versions/mysql/11.sql
new file mode 100644 (file)
index 0000000..690b978
--- /dev/null
@@ -0,0 +1,18 @@
+begin;
+
+delete FROM ttrss_user_prefs WHERE pref_name = 'DISPLAY_HEADER';
+delete FROM ttrss_user_prefs WHERE pref_name = 'DISPLAY_FOOTER';
+delete FROM ttrss_user_prefs WHERE pref_name = 'ENABLE_SEARCH_TOOLBAR';
+delete FROM ttrss_user_prefs WHERE pref_name = 'USE_COMPACT_STYLESHEET';
+
+delete FROM ttrss_prefs WHERE pref_name = 'DISPLAY_HEADER';
+delete FROM ttrss_prefs WHERE pref_name = 'DISPLAY_FOOTER';
+delete FROM ttrss_prefs WHERE pref_name = 'ENABLE_SEARCH_TOOLBAR';
+delete FROM ttrss_prefs WHERE pref_name = 'USE_COMPACT_STYLESHEET';
+
+insert into ttrss_themes (theme_name, theme_path) values ('Graycube', 'graycube');
+insert into ttrss_themes (theme_name, theme_path) values ('Default (Compact)', 'compact');
+
+update ttrss_version set schema_version = 11;
+
+commit;
diff --git a/schema/versions/mysql/12.sql b/schema/versions/mysql/12.sql
new file mode 100644 (file)
index 0000000..73af4e3
--- /dev/null
@@ -0,0 +1,12 @@
+alter table ttrss_filters add column action_param varchar(200);
+
+update ttrss_filters set action_param = '';
+
+alter table ttrss_filters change action_param action_param varchar(200) not null;
+alter table ttrss_filters alter column action_param set default '';
+
+insert into ttrss_filter_actions (id,name,description) values (4, 'tag', 
+               'Assign tags');
+
+update ttrss_version set schema_version = 12;
+
diff --git a/schema/versions/mysql/13.sql b/schema/versions/mysql/13.sql
new file mode 100644 (file)
index 0000000..ad068c8
--- /dev/null
@@ -0,0 +1,6 @@
+alter table ttrss_filters add column inverse bool;
+update ttrss_filters set inverse = false;
+alter table ttrss_filters change inverse inverse bool not null;
+alter table ttrss_filters alter column inverse set default false;
+
+update ttrss_version set schema_version = 13;
diff --git a/schema/versions/mysql/3.sql b/schema/versions/mysql/3.sql
new file mode 100644 (file)
index 0000000..79860a2
--- /dev/null
@@ -0,0 +1,43 @@
+begin;
+
+alter table ttrss_entries add column num_comments integer;
+
+update ttrss_entries set num_comments = 0;
+
+alter table ttrss_entries change num_comments num_comments integer not null;
+alter table ttrss_entries alter column num_comments set default 0;
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('COMBINED_DISPLAY_MODE', 1, 'false', 'Combined feed display',2,
+       'Display expanded list of feed articles, instead of separate displays for headlines and article content');
+
+alter table ttrss_feed_categories add column collapsed bool;
+
+update ttrss_feed_categories set collapsed = false;
+
+alter table ttrss_feed_categories change collapsed collapsed bool not null;
+alter table ttrss_feed_categories alter column collapsed set default 0;
+
+alter table ttrss_feeds add column auth_login varchar(250);
+alter table ttrss_feeds add column auth_pass varchar(250);
+
+update ttrss_feeds set auth_login = '';
+update ttrss_feeds set auth_pass = '';
+
+alter table ttrss_feeds change auth_login auth_login varchar(250) not null;
+alter table ttrss_feeds alter column auth_login set default '';
+
+alter table ttrss_feeds change auth_pass auth_pass varchar(250) not null;
+alter table ttrss_feeds alter column auth_pass set default '';
+
+alter table ttrss_users add column email varchar(250);
+
+update ttrss_users set email = '';
+
+alter table ttrss_users change email email varchar(250) not null;
+alter table ttrss_users alter column email set default '';
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('ENABLE_SEARCH_TOOLBAR', 1, 'false', 'Enable search toolbar',2);
+
+update ttrss_version set schema_version = 3;
+
+commit;
diff --git a/schema/versions/mysql/4.sql b/schema/versions/mysql/4.sql
new file mode 100644 (file)
index 0000000..6dfc5f8
--- /dev/null
@@ -0,0 +1,17 @@
+begin;
+
+alter table ttrss_feeds add column parent_feed integer;
+alter table ttrss_feeds add foreign key (parent_feed) references ttrss_feeds(id) on delete set null;
+
+alter table ttrss_feeds add column private bool;
+
+update ttrss_feeds set private = false;
+
+alter table ttrss_feeds change private private bool not null;
+alter table ttrss_feeds alter column private set default 0;
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('HIDE_READ_FEEDS', 1, 'false', 'Hide feeds with no unread messages',2);
+
+update ttrss_version set schema_version = 4;
+
+commit;
diff --git a/schema/versions/mysql/5.sql b/schema/versions/mysql/5.sql
new file mode 100644 (file)
index 0000000..e3ddb03
--- /dev/null
@@ -0,0 +1,12 @@
+begin;
+
+create table ttrss_scheduled_updates (id integer not null primary key auto_increment,
+       owner_uid integer not null,
+       feed_id integer default null,
+       entered datetime not null,
+       foreign key (owner_uid) references ttrss_users(id) ON DELETE CASCADE,
+       foreign key (feed_id) references ttrss_feeds(id) ON DELETE CASCADE) TYPE=InnoDB;
+
+update ttrss_version set schema_version = 5;
+
+commit;
diff --git a/schema/versions/mysql/6.sql b/schema/versions/mysql/6.sql
new file mode 100644 (file)
index 0000000..1018bcf
--- /dev/null
@@ -0,0 +1,20 @@
+alter table ttrss_entries add column author varchar(250);
+
+update ttrss_entries set author = '';
+
+alter table ttrss_entries change author author varchar(250) not null;
+alter table ttrss_entries alter column author set default '';
+
+create table ttrss_sessions (id varchar(250) not null primary key,
+       data text,
+       expire integer not null,
+       ip_address varchar(15) not null default '',
+       index (id),
+       index (expire)) TYPE=InnoDB;
+
+delete from ttrss_prefs where pref_name = 'ENABLE_SPLASH';
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('OPEN_LINKS_IN_NEW_WINDOW', 1, 'true', 'Open article links in new browser window',2);
+
+update ttrss_version set schema_version = 6;
+
diff --git a/schema/versions/mysql/7.sql b/schema/versions/mysql/7.sql
new file mode 100644 (file)
index 0000000..bee1359
--- /dev/null
@@ -0,0 +1,19 @@
+alter table ttrss_feeds add column rtl_content bool;
+
+update ttrss_feeds set rtl_content = false;
+
+alter table ttrss_feeds change rtl_content rtl_content bool not null;
+alter table ttrss_feeds alter column rtl_content set default false;
+
+delete from ttrss_user_prefs where pref_name = 'DISPLAY_FEEDLIST_ACTIONS';
+delete from ttrss_prefs where pref_name = 'DISPLAY_FEEDLIST_ACTIONS';
+
+delete from ttrss_user_prefs where pref_name = 'ENABLE_PREFS_CATCHUP_UNCATCHUP';
+delete from ttrss_prefs where pref_name = 'ENABLE_PREFS_CATCHUP_UNCATCHUP';
+
+alter table ttrss_sessions drop column ip_address;
+
+alter table ttrss_filters drop column description;
+update ttrss_version set schema_version = 7;
+
diff --git a/schema/versions/mysql/8.sql b/schema/versions/mysql/8.sql
new file mode 100644 (file)
index 0000000..3910045
--- /dev/null
@@ -0,0 +1,14 @@
+insert into ttrss_themes (theme_name, theme_path) values ('Old-skool', 'compat');
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('ON_CATCHUP_SHOW_NEXT_FEED', 1, 'false', 'On catchup show next feed',2,
+       'When "Mark as read" button is clicked in toolbar, automatically open next feed with unread articles.');
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('FEEDS_SORT_BY_UNREAD', 1, 'false', 'Sort feeds by unread articles count',2);
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('EXTENDED_FEEDLIST', 1, 'false', 'Show additional information in feedlist',2);
+
+insert into ttrss_filter_actions (id,name,description) values (3, 'mark', 
+       'Set starred');
+
+update ttrss_version set schema_version = 8;
+
diff --git a/schema/versions/mysql/9.sql b/schema/versions/mysql/9.sql
new file mode 100644 (file)
index 0000000..546adc2
--- /dev/null
@@ -0,0 +1,29 @@
+alter table ttrss_feeds add column hidden bool;
+update ttrss_feeds set hidden = false;
+alter table ttrss_feeds change hidden hidden bool not null;
+alter table ttrss_feeds alter column hidden set default false;
+
+alter table ttrss_users add column email_digest bool;
+update ttrss_users set email_digest = false;
+alter table ttrss_users change email_digest email_digest bool not null;
+alter table ttrss_users alter column email_digest set default false;
+
+alter table ttrss_users add column last_digest_sent datetime;
+update ttrss_users set last_digest_sent = false;
+alter table ttrss_users alter column last_digest_sent set default null;
+
+alter table ttrss_filters add column enabled bool;
+update ttrss_filters set enabled = true;
+alter table ttrss_filters change enabled enabled bool not null;
+alter table ttrss_filters alter column enabled set default true;
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('MARK_UNREAD_ON_UPDATE', 1, 'false', 'Set articles as unread on update',3);
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('REVERSE_HEADLINES', 1, 'false', 'Reverse headline order (oldest first)',2);
+
+update ttrss_prefs SET section_id = 3 WHERE pref_name = 'ENABLE_SEARCH_TOOLBAR';
+update ttrss_prefs SET section_id = 3 WHERE pref_name = 'ENABLE_FEED_ICONS';
+update ttrss_prefs SET section_id = 3 WHERE pref_name = 'EXTENDED_FEEDLIST';
+
+update ttrss_version set schema_version = 9;
+
diff --git a/schema/versions/pgsql/10.sql b/schema/versions/pgsql/10.sql
new file mode 100644 (file)
index 0000000..764b4b7
--- /dev/null
@@ -0,0 +1,12 @@
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('DIGEST_ENABLE', 1, 'false', 'Enable e-mail digest',1,
+'This option enables sending daily digest of new (and unread) headlines on your configured e-mail address');
+
+alter table ttrss_feeds add column include_in_digest boolean;
+update ttrss_feeds set include_in_digest = true;
+alter table ttrss_feeds alter column include_in_digest set not null;
+alter table ttrss_feeds alter column include_in_digest set default true;
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('CONFIRM_FEED_CATCHUP', 1, 'true', 'Confirm marking feed as read',3);
+
+update ttrss_version set schema_version = 10;
+
diff --git a/schema/versions/pgsql/11.sql b/schema/versions/pgsql/11.sql
new file mode 100644 (file)
index 0000000..690b978
--- /dev/null
@@ -0,0 +1,18 @@
+begin;
+
+delete FROM ttrss_user_prefs WHERE pref_name = 'DISPLAY_HEADER';
+delete FROM ttrss_user_prefs WHERE pref_name = 'DISPLAY_FOOTER';
+delete FROM ttrss_user_prefs WHERE pref_name = 'ENABLE_SEARCH_TOOLBAR';
+delete FROM ttrss_user_prefs WHERE pref_name = 'USE_COMPACT_STYLESHEET';
+
+delete FROM ttrss_prefs WHERE pref_name = 'DISPLAY_HEADER';
+delete FROM ttrss_prefs WHERE pref_name = 'DISPLAY_FOOTER';
+delete FROM ttrss_prefs WHERE pref_name = 'ENABLE_SEARCH_TOOLBAR';
+delete FROM ttrss_prefs WHERE pref_name = 'USE_COMPACT_STYLESHEET';
+
+insert into ttrss_themes (theme_name, theme_path) values ('Graycube', 'graycube');
+insert into ttrss_themes (theme_name, theme_path) values ('Default (Compact)', 'compact');
+
+update ttrss_version set schema_version = 11;
+
+commit;
diff --git a/schema/versions/pgsql/12.sql b/schema/versions/pgsql/12.sql
new file mode 100644 (file)
index 0000000..6de90f1
--- /dev/null
@@ -0,0 +1,15 @@
+begin;
+
+alter table ttrss_filters add column action_param varchar(200);
+
+update ttrss_filters set action_param = '';
+
+alter table ttrss_filters alter column action_param set not null;
+alter table ttrss_filters alter column action_param set default '';
+
+insert into ttrss_filter_actions (id,name,description) values (4, 'tag', 
+               'Assign tags');
+
+update ttrss_version set schema_version = 12;
+
+commit;
diff --git a/schema/versions/pgsql/13.sql b/schema/versions/pgsql/13.sql
new file mode 100644 (file)
index 0000000..bf2a2b4
--- /dev/null
@@ -0,0 +1,10 @@
+begin;
+
+alter table ttrss_filters add column inverse boolean;
+update ttrss_filters set inverse = false;
+alter table ttrss_filters alter column inverse set not null;
+alter table ttrss_filters alter column inverse set default false;
+
+update ttrss_version set schema_version = 13;
+
+commit;
diff --git a/schema/versions/pgsql/3.sql b/schema/versions/pgsql/3.sql
new file mode 100644 (file)
index 0000000..5b23f33
--- /dev/null
@@ -0,0 +1,43 @@
+begin;
+
+alter table ttrss_entries add column num_comments integer;
+
+update ttrss_entries set num_comments = 0;
+
+alter table ttrss_entries alter column num_comments set not null;
+alter table ttrss_entries alter column num_comments set default 0;
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('COMBINED_DISPLAY_MODE', 1, 'false', 'Combined feed display',2,
+       'Display expanded list of feed articles, instead of separate displays for headlines and article content');
+
+alter table ttrss_feed_categories add column collapsed boolean;
+
+update ttrss_feed_categories set collapsed = false;
+
+alter table ttrss_feed_categories alter column collapsed set not null;
+alter table ttrss_feed_categories alter column collapsed set default false;
+
+alter table ttrss_feeds add column auth_login varchar(250);
+alter table ttrss_feeds add column auth_pass varchar(250);
+
+update ttrss_feeds set auth_login = '';
+update ttrss_feeds set auth_pass = '';
+
+alter table ttrss_feeds alter column auth_login set not null;
+alter table ttrss_feeds alter column auth_login set default '';
+
+alter table ttrss_feeds alter column auth_pass set not null;
+alter table ttrss_feeds alter column auth_pass set default '';
+
+alter table ttrss_users add column email varchar(250);
+
+update ttrss_users set email = '';
+
+alter table ttrss_users alter column email set not null;
+alter table ttrss_users alter column email set default '';
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('ENABLE_SEARCH_TOOLBAR', 1, 'false', 'Enable search toolbar',2);
+
+update ttrss_version set schema_version = 3;
+
+commit;
diff --git a/schema/versions/pgsql/4.sql b/schema/versions/pgsql/4.sql
new file mode 100644 (file)
index 0000000..1f926ea
--- /dev/null
@@ -0,0 +1,17 @@
+begin;
+
+alter table ttrss_feeds add column parent_feed integer;
+alter table ttrss_feeds add foreign key (parent_feed) references ttrss_feeds(id) on delete set null;
+
+alter table ttrss_feeds add column private boolean;
+
+update ttrss_feeds set private = false;
+
+alter table ttrss_feeds alter column private set not null;
+alter table ttrss_feeds alter column private set default false;
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('HIDE_READ_FEEDS', 1, 'false', 'Hide feeds with no unread messages',2);
+
+update ttrss_version set schema_version = 4;
+
+commit;
diff --git a/schema/versions/pgsql/5.sql b/schema/versions/pgsql/5.sql
new file mode 100644 (file)
index 0000000..1292daa
--- /dev/null
@@ -0,0 +1,10 @@
+begin;
+
+create table ttrss_scheduled_updates (id serial not null primary key,
+       owner_uid integer not null references ttrss_users(id) ON DELETE CASCADE,
+       feed_id integer default null references ttrss_feeds(id) ON DELETE CASCADE,
+       entered timestamp not null default NOW());
+
+update ttrss_version set schema_version = 5;
+
+commit;
diff --git a/schema/versions/pgsql/6.sql b/schema/versions/pgsql/6.sql
new file mode 100644 (file)
index 0000000..6c40649
--- /dev/null
@@ -0,0 +1,24 @@
+begin;
+
+alter table ttrss_entries add column author varchar(250);
+
+update ttrss_entries set author = '';
+
+alter table ttrss_entries alter column author set not null;
+alter table ttrss_entries alter column author set default '';
+
+create table ttrss_sessions (id varchar(250) unique not null primary key,
+       data text,
+       expire integer not null,
+       ip_address varchar(15) not null default '');
+
+create index ttrss_sessions_id_index on ttrss_sessions(id);
+create index ttrss_sessions_expire_index on ttrss_sessions(expire);
+
+delete from ttrss_prefs where pref_name = 'ENABLE_SPLASH';
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('OPEN_LINKS_IN_NEW_WINDOW', 1, 'true', 'Open article links in new browser window',2);
+
+update ttrss_version set schema_version = 6;
+
+commit;
diff --git a/schema/versions/pgsql/7.sql b/schema/versions/pgsql/7.sql
new file mode 100644 (file)
index 0000000..51437e4
--- /dev/null
@@ -0,0 +1,22 @@
+begin;
+
+alter table ttrss_feeds add column rtl_content boolean;
+
+update ttrss_feeds set rtl_content = false;
+
+alter table ttrss_feeds alter column rtl_content set not null;
+alter table ttrss_feeds alter column rtl_content set default false;
+
+alter table ttrss_sessions drop column ip_address;
+
+delete from ttrss_user_prefs where pref_name = 'DISPLAY_FEEDLIST_ACTIONS';
+delete from ttrss_prefs where pref_name = 'DISPLAY_FEEDLIST_ACTIONS';
+
+delete from ttrss_user_prefs where pref_name = 'ENABLE_PREFS_CATCHUP_UNCATCHUP';
+delete from ttrss_prefs where pref_name = 'ENABLE_PREFS_CATCHUP_UNCATCHUP';
+
+alter table ttrss_filters drop column description;
+
+update ttrss_version set schema_version = 7;
+
+commit;
diff --git a/schema/versions/pgsql/8.sql b/schema/versions/pgsql/8.sql
new file mode 100644 (file)
index 0000000..ab7a7df
--- /dev/null
@@ -0,0 +1,17 @@
+begin;
+
+insert into ttrss_themes (theme_name, theme_path) values ('Old-skool', 'compat');
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id,help_text) values('ON_CATCHUP_SHOW_NEXT_FEED', 1, 'false', 'On catchup show next feed',2,
+       'When "Mark as read" button is clicked in toolbar, automatically open next feed with unread articles.');
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('FEEDS_SORT_BY_UNREAD', 1, 'false', 'Sort feeds by unread articles count',2);
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('EXTENDED_FEEDLIST', 1, 'false', 'Show additional information in feedlist',2);
+
+insert into ttrss_filter_actions (id,name,description) values (3, 'mark', 
+       'Set starred');
+
+update ttrss_version set schema_version = 8;
+
+commit;
diff --git a/schema/versions/pgsql/9.sql b/schema/versions/pgsql/9.sql
new file mode 100644 (file)
index 0000000..9624403
--- /dev/null
@@ -0,0 +1,33 @@
+begin;
+
+alter table ttrss_feeds add column hidden boolean;
+update ttrss_feeds set hidden = false;
+alter table ttrss_feeds alter column hidden set not null;
+alter table ttrss_feeds alter column hidden set default false;
+
+alter table ttrss_users add column email_digest boolean;
+update ttrss_users set email_digest = false;
+alter table ttrss_users alter column email_digest set not null;
+alter table ttrss_users alter column email_digest set default false;
+
+alter table ttrss_users add column last_digest_sent timestamp;
+update ttrss_users set last_digest_sent = NULL;
+alter table ttrss_users alter column last_digest_sent set default NULL;
+
+alter table ttrss_filters add column enabled boolean;
+update ttrss_filters set enabled = true;
+alter table ttrss_filters alter column enabled set not null;
+alter table ttrss_filters alter column enabled set default true;
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('MARK_UNREAD_ON_UPDATE', 1, 'false', 'Set articles as unread on update',3);
+
+insert into ttrss_prefs (pref_name,type_id,def_value,short_desc,section_id) values('REVERSE_HEADLINES', 1, 'false', 'Reverse headline order (oldest first)',2);
+
+update ttrss_prefs SET section_id = 3 WHERE pref_name = 'ENABLE_SEARCH_TOOLBAR';
+update ttrss_prefs SET section_id = 3 WHERE pref_name = 'ENABLE_FEED_ICONS';
+update ttrss_prefs SET section_id = 3 WHERE pref_name = 'EXTENDED_FEEDLIST';
+
+update ttrss_version set schema_version = 9;
+
+commit;
+
diff --git a/update.css b/update.css
new file mode 100644 (file)
index 0000000..d3c2890
--- /dev/null
@@ -0,0 +1,7 @@
+p.warning {
+       color : red;
+}
+
+p.query {
+       color : green;
+}
diff --git a/update.php b/update.php
new file mode 100644 (file)
index 0000000..964626d
--- /dev/null
@@ -0,0 +1,142 @@
+<?php
+       require_once "sessions.php";
+
+       require_once "sanity_check.php";
+       require_once "functions.php";
+       require_once "config.php";
+       require_once "db.php";
+
+       $link = db_connect(DB_HOST, DB_USER, DB_PASS, DB_NAME); 
+
+       if (DB_TYPE == "pgsql") {
+               pg_query($link, "set client_encoding = 'utf-8'");
+               pg_set_client_encoding("UNICODE");
+       }
+
+       login_sequence($link);
+
+       $owner_uid = $_SESSION["uid"];
+
+       if ($_SESSION["access_level"] < 10) { 
+               header("Location: login.php"); die;
+       }
+
+       define('SCHEMA_VERSION', 13);
+
+?>
+
+<html>
+<head>
+       <title>Database Updater</title>
+       <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+       <link rel="stylesheet" type="text/css" href="update.css">
+</head>
+
+<body>
+
+<h1>Database Updater</h1>
+
+<?php
+       function getline($fp, $delim) {
+          $result = "";
+          while(!feof($fp)) {
+                       $tmp = fgetc($fp);
+
+                       if($tmp == $delim) {
+                               return $result;
+                       }
+                       $result .= $tmp;
+               }
+               return $result;
+       }
+
+       $op = $_REQUEST["op"];
+       
+       $result = db_query($link, "SELECT schema_version FROM ttrss_version");
+       $version = db_fetch_result($result, 0, "schema_version");
+
+       $update_files = glob("schema/versions/".DB_TYPE."/*sql");
+       $update_versions = array();
+
+       foreach ($update_files as $f) {
+               $m = array();
+               preg_match_all("/schema\/versions\/".DB_TYPE."\/(\d*)\.sql/", $f, $m,
+                       PREG_PATTERN_ORDER);
+
+               if ($m[1][0]) {
+                       $update_versions[$m[1][0]] = $f;
+               }
+       }
+
+       ksort($update_versions, SORT_NUMERIC);
+
+       $latest_version = max(array_keys($update_versions));
+
+       if ($version == $latest_version) {
+               print "Database schema is up to date (version $version).";
+               return;
+       }
+
+       if (!$op) {
+               print "<p class='warning'><b>Warning:</b> Please backup your database before proceeding.</p>";
+
+               print "<p>Your database schema version is $version. Latest version is ".
+                       "$latest_version.</p>";
+
+               print "<p>Available incremental updates:";
+
+               foreach (array_keys($update_versions) as $v) {
+                       if ($v > $version) {
+                               print " <a href='$update_versions[$v]'>$v</a>";
+                       }
+               }
+
+               print "</p>";
+               print "<a href='update.php?op=do'>Click here to perform updates.</a>";
+
+       } else if ($op == "do") {
+
+               print "<p>Performing updates (version: $version)...</p>";
+
+               $num_updates = 0;
+
+               foreach (array_keys($update_versions) as $v) {
+                       if ($v == $version + 1) {
+                               print "<p>Updating to version $v...</p>";
+                               $fp = fopen($update_versions[$v], "r");
+                               if ($fp) {
+                                       while (!feof($fp)) {
+                                               $query = trim(getline($fp, ";"));
+                                               if ($query != "") {
+                                                       print "<p class='query'><b>QUERY:</b> $query</p>";
+                                                       db_query($link, $query);
+                                               }
+                                       }
+                               }
+                               fclose($fp);
+
+                               print "<p>Checking version... ";
+
+                               $result = db_query($link, "SELECT schema_version FROM ttrss_version");
+                               $version = db_fetch_result($result, 0, "schema_version");
+
+                               if ($version == $v) {
+                                       print "OK!";
+                               } else {
+                                       print "<b>ERROR!</b>";
+                                       return;
+                               }
+
+                               $num_updates++;
+                       }
+               }
+
+               print "<p>Finished. Performed $num_updates updates up to schema
+                       version $version.</p>";
+       }
+?>
+
+
+</body>
+</html>
+