From fa3317be48f0d255ddba75d5ae45b86c163016cc Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 23 Mar 2010 14:38:58 +0300 Subject: [PATCH] allow filtering by article author (bump schema) --- functions.php | 16 ++++++++++++++-- sanity_check.php | 2 +- schema/ttrss_schema_mysql.sql | 3 ++- schema/ttrss_schema_pgsql.sql | 3 ++- schema/versions/mysql/66.sql | 7 +++++++ schema/versions/pgsql/66.sql | 7 +++++++ 6 files changed, 33 insertions(+), 5 deletions(-) create mode 100644 schema/versions/mysql/66.sql create mode 100644 schema/versions/pgsql/66.sql diff --git a/functions.php b/functions.php index a1aabf9a..28f49b61 100644 --- a/functions.php +++ b/functions.php @@ -1181,7 +1181,7 @@ // error_reporting(0); $article_filters = get_article_filters($filters, $entry_title, - $entry_content, $entry_link, $entry_timestamp); + $entry_content, $entry_link, $entry_timestamp, $entry_author); if (defined('DAEMON_EXTENDED_DEBUG') || $_REQUEST['xdebug']) { _debug("update_rss_feed: article filters: "); @@ -1505,7 +1505,7 @@ print ""; } - function get_article_filters($filters, $title, $content, $link, $timestamp) { + function get_article_filters($filters, $title, $content, $link, $timestamp, $author) { $matches = array(); if ($filters["title"]) { @@ -1590,6 +1590,18 @@ } } + if ($filters["author"]) { + foreach ($filters["author"] as $filter) { + $reg_exp = $filter["reg_exp"]; + $inverse = $filter["inverse"]; + if ((!$inverse && preg_match("/$reg_exp/i", $author)) || + ($inverse && !preg_match("/$reg_exp/i", $author))) { + + array_push($matches, array($filter["action"], $filter["action_param"])); + } + } + } + return $matches; } diff --git a/sanity_check.php b/sanity_check.php index f2370400..d112896e 100644 --- a/sanity_check.php +++ b/sanity_check.php @@ -2,7 +2,7 @@ require_once "functions.php"; define('EXPECTED_CONFIG_VERSION', 18); - define('SCHEMA_VERSION', 65); + define('SCHEMA_VERSION', 66); if (!file_exists("config.php")) { print "Fatal Error: You forgot to copy diff --git a/schema/ttrss_schema_mysql.sql b/schema/ttrss_schema_mysql.sql index b9bb777e..0f4acf90 100644 --- a/schema/ttrss_schema_mysql.sql +++ b/schema/ttrss_schema_mysql.sql @@ -183,6 +183,7 @@ insert into ttrss_filter_types (id,name,description) values (4, 'link', 'Link'); insert into ttrss_filter_types (id,name,description) values (5, 'date', 'Article Date'); +insert into ttrss_filter_types (id,name,description) values (6, 'author', 'Author'); create table ttrss_filter_actions (id integer not null primary key, name varchar(120) unique not null, @@ -239,7 +240,7 @@ create table ttrss_tags (id integer primary key auto_increment, create table ttrss_version (schema_version int not null) TYPE=InnoDB; -insert into ttrss_version values (65); +insert into ttrss_version values (66); create table ttrss_enclosures (id integer primary key auto_increment, content_url text not null, diff --git a/schema/ttrss_schema_pgsql.sql b/schema/ttrss_schema_pgsql.sql index 55b07b6e..7225f10f 100644 --- a/schema/ttrss_schema_pgsql.sql +++ b/schema/ttrss_schema_pgsql.sql @@ -165,6 +165,7 @@ insert into ttrss_filter_types (id,name,description) values (4, 'link', 'Link'); insert into ttrss_filter_types (id,name,description) values (5, 'date', 'Article Date'); +insert into ttrss_filter_types (id,name,description) values (6, 'author', 'Author'); create table ttrss_filter_actions (id integer not null primary key, name varchar(120) unique not null, @@ -211,7 +212,7 @@ create index ttrss_tags_owner_uid_index on ttrss_tags(owner_uid); create table ttrss_version (schema_version int not null); -insert into ttrss_version values (65); +insert into ttrss_version values (66); create table ttrss_enclosures (id serial not null primary key, content_url text not null, diff --git a/schema/versions/mysql/66.sql b/schema/versions/mysql/66.sql new file mode 100644 index 00000000..f90c0a15 --- /dev/null +++ b/schema/versions/mysql/66.sql @@ -0,0 +1,7 @@ +begin; + +insert into ttrss_filter_types (id, name, description) values (6, 'author', 'Author'); + +update ttrss_version set schema_version = 66; + +commit; diff --git a/schema/versions/pgsql/66.sql b/schema/versions/pgsql/66.sql new file mode 100644 index 00000000..f90c0a15 --- /dev/null +++ b/schema/versions/pgsql/66.sql @@ -0,0 +1,7 @@ +begin; + +insert into ttrss_filter_types (id, name, description) values (6, 'author', 'Author'); + +update ttrss_version set schema_version = 66; + +commit;