From 87d7e8507a4a41c4e0d7a4f2d54fe48f3a6f72cb Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Tue, 22 Jan 2013 22:32:17 +0400 Subject: split some more functions from functions.php --- include/functions.php | 648 +------------------------------------------------- 1 file changed, 3 insertions(+), 645 deletions(-) (limited to 'include/functions.php') diff --git a/include/functions.php b/include/functions.php index 0f8f1ccb8..5ff0dd49f 100644 --- a/include/functions.php +++ b/include/functions.php @@ -63,6 +63,7 @@ require_once "lib/accept-to-gettext.php"; require_once "lib/gettext/gettext.inc"; + function startup_gettext() { # Get locale from Accept-Language header @@ -101,6 +102,8 @@ require_once 'db-prefs.php'; require_once 'version.php'; + require_once 'ccache.php'; + require_once 'labels.php'; ini_set('user_agent', SELF_USER_AGENT); @@ -2733,66 +2736,6 @@ return false; } - function markArticlesById($link, $ids, $cmode) { - - $tmp_ids = array(); - - foreach ($ids as $id) { - array_push($tmp_ids, "ref_id = '$id'"); - } - - $ids_qpart = join(" OR ", $tmp_ids); - - if ($cmode == 0) { - db_query($link, "UPDATE ttrss_user_entries SET - marked = false,last_read = NOW() - WHERE ($ids_qpart) AND owner_uid = " . $_SESSION["uid"]); - } else if ($cmode == 1) { - db_query($link, "UPDATE ttrss_user_entries SET - marked = true - WHERE ($ids_qpart) AND owner_uid = " . $_SESSION["uid"]); - } else { - db_query($link, "UPDATE ttrss_user_entries SET - marked = NOT marked,last_read = NOW() - WHERE ($ids_qpart) AND owner_uid = " . $_SESSION["uid"]); - } - } - - function publishArticlesById($link, $ids, $cmode) { - - $tmp_ids = array(); - - foreach ($ids as $id) { - array_push($tmp_ids, "ref_id = '$id'"); - } - - $ids_qpart = join(" OR ", $tmp_ids); - - if ($cmode == 0) { - db_query($link, "UPDATE ttrss_user_entries SET - published = false,last_read = NOW() - WHERE ($ids_qpart) AND owner_uid = " . $_SESSION["uid"]); - } else if ($cmode == 1) { - db_query($link, "UPDATE ttrss_user_entries SET - published = true,last_read = NOW() - WHERE ($ids_qpart) AND owner_uid = " . $_SESSION["uid"]); - } else { - db_query($link, "UPDATE ttrss_user_entries SET - published = NOT published,last_read = NOW() - WHERE ($ids_qpart) AND owner_uid = " . $_SESSION["uid"]); - } - - if (PUBSUBHUBBUB_HUB) { - $rss_link = get_self_url_prefix() . - "/public.php?op=rss&id=-2&key=" . - get_feed_access_key($link, -2, false); - - $p = new Publisher(PUBSUBHUBBUB_HUB); - - $pubsub_result = $p->publish_update($rss_link); - } - } - function catchupArticlesById($link, $ids, $cmode, $owner_uid = false) { if (!$owner_uid) $owner_uid = $_SESSION["uid"]; @@ -2830,31 +2773,6 @@ } } - function catchupArticleById($link, $id, $cmode) { - - if ($cmode == 0) { - db_query($link, "UPDATE ttrss_user_entries SET - unread = false,last_read = NOW() - WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]); - } else if ($cmode == 1) { - db_query($link, "UPDATE ttrss_user_entries SET - unread = true - WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]); - } else { - db_query($link, "UPDATE ttrss_user_entries SET - unread = NOT unread,last_read = NOW() - WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]); - } - - $feed_id = getArticleFeed($link, $id); - ccache_update($link, $feed_id, $_SESSION["uid"]); - } - - function make_guid_from_title($title) { - return preg_replace("/[ \"\',.:;]/", "-", - mb_strtolower(strip_tags($title), 'utf-8')); - } - function get_article_tags($link, $id, $owner_uid = 0, $tag_cache = false) { $a_id = db_escape_string($id); @@ -3341,29 +3259,6 @@ return $url_path; } - /** - * Purge a feed contents, marked articles excepted. - * - * @param mixed $link The database connection. - * @param integer $id The id of the feed to purge. - * @return void - */ - function clear_feed_articles($link, $id) { - - if ($id != 0) { - $result = db_query($link, "DELETE FROM ttrss_user_entries - WHERE feed_id = '$id' AND marked = false AND owner_uid = " . $_SESSION["uid"]); - } else { - $result = db_query($link, "DELETE FROM ttrss_user_entries - WHERE feed_id IS NULL AND marked = false AND owner_uid = " . $_SESSION["uid"]); - } - - $result = db_query($link, "DELETE FROM ttrss_entries WHERE - (SELECT COUNT(int_id) FROM ttrss_user_entries WHERE ref_id = id) = 0"); - - ccache_update($link, $id, $_SESSION['uid']); - } // function clear_feed_articles - /** * Compute the Mozilla Firefox feed adding URL from server HOST and REQUEST_URI. * @@ -3500,432 +3395,6 @@ } } - /* function ccache_zero($link, $feed_id, $owner_uid) { - db_query($link, "UPDATE ttrss_counters_cache SET - value = 0, updated = NOW() WHERE - feed_id = '$feed_id' AND owner_uid = '$owner_uid'"); - } */ - - function ccache_zero_all($link, $owner_uid) { - db_query($link, "UPDATE ttrss_counters_cache SET - value = 0 WHERE owner_uid = '$owner_uid'"); - - db_query($link, "UPDATE ttrss_cat_counters_cache SET - value = 0 WHERE owner_uid = '$owner_uid'"); - } - - function ccache_remove($link, $feed_id, $owner_uid, $is_cat = false) { - - if (!$is_cat) { - $table = "ttrss_counters_cache"; - } else { - $table = "ttrss_cat_counters_cache"; - } - - db_query($link, "DELETE FROM $table WHERE - feed_id = '$feed_id' AND owner_uid = '$owner_uid'"); - - } - - function ccache_update_all($link, $owner_uid) { - - if (get_pref($link, 'ENABLE_FEED_CATS', $owner_uid)) { - - $result = db_query($link, "SELECT feed_id FROM ttrss_cat_counters_cache - WHERE feed_id > 0 AND owner_uid = '$owner_uid'"); - - while ($line = db_fetch_assoc($result)) { - ccache_update($link, $line["feed_id"], $owner_uid, true); - } - - /* We have to manually include category 0 */ - - ccache_update($link, 0, $owner_uid, true); - - } else { - $result = db_query($link, "SELECT feed_id FROM ttrss_counters_cache - WHERE feed_id > 0 AND owner_uid = '$owner_uid'"); - - while ($line = db_fetch_assoc($result)) { - print ccache_update($link, $line["feed_id"], $owner_uid); - - } - - } - } - - function ccache_find($link, $feed_id, $owner_uid, $is_cat = false, - $no_update = false) { - - if (!is_numeric($feed_id)) return; - - if (!$is_cat) { - $table = "ttrss_counters_cache"; - if ($feed_id > 0) { - $tmp_result = db_query($link, "SELECT owner_uid FROM ttrss_feeds - WHERE id = '$feed_id'"); - $owner_uid = db_fetch_result($tmp_result, 0, "owner_uid"); - } - } else { - $table = "ttrss_cat_counters_cache"; - } - - if (DB_TYPE == "pgsql") { - $date_qpart = "updated > NOW() - INTERVAL '15 minutes'"; - } else if (DB_TYPE == "mysql") { - $date_qpart = "updated > DATE_SUB(NOW(), INTERVAL 15 MINUTE)"; - } - - $result = db_query($link, "SELECT value FROM $table - WHERE owner_uid = '$owner_uid' AND feed_id = '$feed_id' - LIMIT 1"); - - if (db_num_rows($result) == 1) { - return db_fetch_result($result, 0, "value"); - } else { - if ($no_update) { - return -1; - } else { - return ccache_update($link, $feed_id, $owner_uid, $is_cat); - } - } - - } - - function ccache_update($link, $feed_id, $owner_uid, $is_cat = false, - $update_pcat = true) { - - if (!is_numeric($feed_id)) return; - - if (!$is_cat && $feed_id > 0) { - $tmp_result = db_query($link, "SELECT owner_uid FROM ttrss_feeds - WHERE id = '$feed_id'"); - $owner_uid = db_fetch_result($tmp_result, 0, "owner_uid"); - } - - $prev_unread = ccache_find($link, $feed_id, $owner_uid, $is_cat, true); - - /* When updating a label, all we need to do is recalculate feed counters - * because labels are not cached */ - - if ($feed_id < 0) { - ccache_update_all($link, $owner_uid); - return; - } - - if (!$is_cat) { - $table = "ttrss_counters_cache"; - } else { - $table = "ttrss_cat_counters_cache"; - } - - if ($is_cat && $feed_id >= 0) { - if ($feed_id != 0) { - $cat_qpart = "cat_id = '$feed_id'"; - } else { - $cat_qpart = "cat_id IS NULL"; - } - - /* Recalculate counters for child feeds */ - - $result = db_query($link, "SELECT id FROM ttrss_feeds - WHERE owner_uid = '$owner_uid' AND $cat_qpart"); - - while ($line = db_fetch_assoc($result)) { - ccache_update($link, $line["id"], $owner_uid, false, false); - } - - $result = db_query($link, "SELECT SUM(value) AS sv - FROM ttrss_counters_cache, ttrss_feeds - WHERE id = feed_id AND $cat_qpart AND - ttrss_feeds.owner_uid = '$owner_uid'"); - - $unread = (int) db_fetch_result($result, 0, "sv"); - - } else { - $unread = (int) getFeedArticles($link, $feed_id, $is_cat, true, $owner_uid); - } - - db_query($link, "BEGIN"); - - $result = db_query($link, "SELECT feed_id FROM $table - WHERE owner_uid = '$owner_uid' AND feed_id = '$feed_id' LIMIT 1"); - - if (db_num_rows($result) == 1) { - db_query($link, "UPDATE $table SET - value = '$unread', updated = NOW() WHERE - feed_id = '$feed_id' AND owner_uid = '$owner_uid'"); - - } else { - db_query($link, "INSERT INTO $table - (feed_id, value, owner_uid, updated) - VALUES - ($feed_id, $unread, $owner_uid, NOW())"); - } - - db_query($link, "COMMIT"); - - if ($feed_id > 0 && $prev_unread != $unread) { - - if (!$is_cat) { - - /* Update parent category */ - - if ($update_pcat) { - - $result = db_query($link, "SELECT cat_id FROM ttrss_feeds - WHERE owner_uid = '$owner_uid' AND id = '$feed_id'"); - - $cat_id = (int) db_fetch_result($result, 0, "cat_id"); - - ccache_update($link, $cat_id, $owner_uid, true); - - } - } - } else if ($feed_id < 0) { - ccache_update_all($link, $owner_uid); - } - - return $unread; - } - - /* function ccache_cleanup($link, $owner_uid) { - - if (DB_TYPE == "pgsql") { - db_query($link, "DELETE FROM ttrss_counters_cache AS c1 WHERE - (SELECT count(*) FROM ttrss_counters_cache AS c2 - WHERE c1.feed_id = c2.feed_id AND c2.owner_uid = c1.owner_uid) > 1 - AND owner_uid = '$owner_uid'"); - - db_query($link, "DELETE FROM ttrss_cat_counters_cache AS c1 WHERE - (SELECT count(*) FROM ttrss_cat_counters_cache AS c2 - WHERE c1.feed_id = c2.feed_id AND c2.owner_uid = c1.owner_uid) > 1 - AND owner_uid = '$owner_uid'"); - } else { - db_query($link, "DELETE c1 FROM - ttrss_counters_cache AS c1, - ttrss_counters_cache AS c2 - WHERE - c1.owner_uid = '$owner_uid' AND - c1.owner_uid = c2.owner_uid AND - c1.feed_id = c2.feed_id"); - - db_query($link, "DELETE c1 FROM - ttrss_cat_counters_cache AS c1, - ttrss_cat_counters_cache AS c2 - WHERE - c1.owner_uid = '$owner_uid' AND - c1.owner_uid = c2.owner_uid AND - c1.feed_id = c2.feed_id"); - - } - } */ - - function label_find_id($link, $label, $owner_uid) { - $result = db_query($link, - "SELECT id FROM ttrss_labels2 WHERE caption = '$label' - AND owner_uid = '$owner_uid' LIMIT 1"); - - if (db_num_rows($result) == 1) { - return db_fetch_result($result, 0, "id"); - } else { - return 0; - } - } - - function get_article_labels($link, $id, $owner_uid = false) { - $rv = array(); - - if (!$owner_uid) $owner_uid = $_SESSION["uid"]; - - $result = db_query($link, "SELECT label_cache FROM - ttrss_user_entries WHERE ref_id = '$id' AND owner_uid = " . - $owner_uid); - - if (db_num_rows($result) > 0) { - $label_cache = db_fetch_result($result, 0, "label_cache"); - - if ($label_cache) { - $label_cache = json_decode($label_cache, true); - - if ($label_cache["no-labels"] == 1) - return $rv; - else - return $label_cache; - } - } - - $result = db_query($link, - "SELECT DISTINCT label_id,caption,fg_color,bg_color - FROM ttrss_labels2, ttrss_user_labels2 - WHERE id = label_id - AND article_id = '$id' - AND owner_uid = ". $owner_uid . " - ORDER BY caption"); - - while ($line = db_fetch_assoc($result)) { - $rk = array($line["label_id"], $line["caption"], $line["fg_color"], - $line["bg_color"]); - array_push($rv, $rk); - } - - if (count($rv) > 0) - label_update_cache($link, $owner_uid, $id, $rv); - else - label_update_cache($link, $owner_uid, $id, array("no-labels" => 1)); - - return $rv; - } - - - function label_find_caption($link, $label, $owner_uid) { - $result = db_query($link, - "SELECT caption FROM ttrss_labels2 WHERE id = '$label' - AND owner_uid = '$owner_uid' LIMIT 1"); - - if (db_num_rows($result) == 1) { - return db_fetch_result($result, 0, "caption"); - } else { - return ""; - } - } - - function get_all_labels($link, $owner_uid) { - $rv = array(); - - $result = db_query($link, "SELECT fg_color, bg_color, caption FROM ttrss_labels2 WHERE owner_uid = " . $owner_uid); - - while ($line = db_fetch_assoc($result)) { - array_push($rv, $line); - } - - return $rv; - } - - function label_update_cache($link, $owner_uid, $id, $labels = false, $force = false) { - - if ($force) - label_clear_cache($link, $id); - - if (!$labels) - $labels = get_article_labels($link, $id); - - $labels = db_escape_string(json_encode($labels)); - - db_query($link, "UPDATE ttrss_user_entries SET - label_cache = '$labels' WHERE ref_id = '$id' AND owner_uid = '$owner_uid'"); - - } - - function label_clear_cache($link, $id) { - - db_query($link, "UPDATE ttrss_user_entries SET - label_cache = '' WHERE ref_id = '$id'"); - - } - - function label_remove_article($link, $id, $label, $owner_uid) { - - $label_id = label_find_id($link, $label, $owner_uid); - - if (!$label_id) return; - - $result = db_query($link, - "DELETE FROM ttrss_user_labels2 - WHERE - label_id = '$label_id' AND - article_id = '$id'"); - - label_clear_cache($link, $id); - } - - function label_add_article($link, $id, $label, $owner_uid) { - - $label_id = label_find_id($link, $label, $owner_uid); - - if (!$label_id) return; - - $result = db_query($link, - "SELECT - article_id FROM ttrss_labels2, ttrss_user_labels2 - WHERE - label_id = id AND - label_id = '$label_id' AND - article_id = '$id' AND owner_uid = '$owner_uid' - LIMIT 1"); - - if (db_num_rows($result) == 0) { - db_query($link, "INSERT INTO ttrss_user_labels2 - (label_id, article_id) VALUES ('$label_id', '$id')"); - } - - label_clear_cache($link, $id); - - } - - function label_remove($link, $id, $owner_uid) { - if (!$owner_uid) $owner_uid = $_SESSION["uid"]; - - db_query($link, "BEGIN"); - - $result = db_query($link, "SELECT caption FROM ttrss_labels2 - WHERE id = '$id'"); - - $caption = db_fetch_result($result, 0, "caption"); - - $result = db_query($link, "DELETE FROM ttrss_labels2 WHERE id = '$id' - AND owner_uid = " . $owner_uid); - - if (db_affected_rows($link, $result) != 0 && $caption) { - - /* Remove access key for the label */ - - $ext_id = -11 - $id; - - db_query($link, "DELETE FROM ttrss_access_keys WHERE - feed_id = '$ext_id' AND owner_uid = $owner_uid"); - - /* Disable filters that reference label being removed */ - - db_query($link, "UPDATE ttrss_filters SET - enabled = false WHERE action_param = '$caption' - AND action_id = 7 - AND owner_uid = " . $owner_uid); - - /* Remove cached data */ - - db_query($link, "UPDATE ttrss_user_entries SET label_cache = '' - WHERE label_cache LIKE '%$caption%' AND owner_uid = " . $owner_uid); - - } - - db_query($link, "COMMIT"); - } - - function label_create($link, $caption, $fg_color = '', $bg_color = '', $owner_uid) { - - if (!$owner_uid) $owner_uid = $_SESSION['uid']; - - db_query($link, "BEGIN"); - - $result = false; - - $result = db_query($link, "SELECT id FROM ttrss_labels2 - WHERE caption = '$caption' AND owner_uid = $owner_uid"); - - if (db_num_rows($result) == 0) { - $result = db_query($link, - "INSERT INTO ttrss_labels2 (caption,owner_uid,fg_color,bg_color) - VALUES ('$caption', '$owner_uid', '$fg_color', '$bg_color')"); - - $result = db_affected_rows($link, $result) != 0; - } - - db_query($link, "COMMIT"); - - return $result; - } - function format_tags_string($tags, $id) { $tags_str = ""; @@ -4133,38 +3602,6 @@ ccache_remove($link, $id, $owner_uid, true); } - function archive_article($link, $id, $owner_uid) { - db_query($link, "BEGIN"); - - $result = db_query($link, "SELECT feed_id FROM ttrss_user_entries - WHERE ref_id = '$id' AND owner_uid = $owner_uid"); - - if (db_num_rows($result) != 0) { - - /* prepare the archived table */ - - $feed_id = (int) db_fetch_result($result, 0, "feed_id"); - - if ($feed_id) { - $result = db_query($link, "SELECT id FROM ttrss_archived_feeds - WHERE id = '$feed_id'"); - - if (db_num_rows($result) == 0) { - db_query($link, "INSERT INTO ttrss_archived_feeds - (id, owner_uid, title, feed_url, site_url) - SELECT id, owner_uid, title, feed_url, site_url from ttrss_feeds - WHERE id = '$feed_id'"); - } - - db_query($link, "UPDATE ttrss_user_entries - SET orig_feed_id = feed_id, feed_id = NULL - WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]); - } - } - - db_query($link, "COMMIT"); - } - function getArticleFeed($link, $id) { $result = db_query($link, "SELECT feed_id FROM ttrss_user_entries WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]); @@ -4229,63 +3666,6 @@ return $rv; } - function generate_error_feed($link, $error) { - $reply = array(); - - $reply['headlines']['id'] = -6; - $reply['headlines']['is_cat'] = false; - - $reply['headlines']['toolbar'] = ''; - $reply['headlines']['content'] = "
". $error . "
"; - - $reply['headlines-info'] = array("count" => 0, - "vgroup_last_feed" => '', - "unread" => 0, - "disable_cache" => true); - - return $reply; - } - - - function generate_dashboard_feed($link) { - $reply = array(); - - $reply['headlines']['id'] = -5; - $reply['headlines']['is_cat'] = false; - - $reply['headlines']['toolbar'] = ''; - $reply['headlines']['content'] = "
".__('No feed selected.'); - - $reply['headlines']['content'] .= "

"; - - $result = db_query($link, "SELECT ".SUBSTRING_FOR_DATE."(MAX(last_updated), 1, 19) AS last_updated FROM ttrss_feeds - WHERE owner_uid = " . $_SESSION['uid']); - - $last_updated = db_fetch_result($result, 0, "last_updated"); - $last_updated = make_local_datetime($link, $last_updated, false); - - $reply['headlines']['content'] .= sprintf(__("Feeds last updated at %s"), $last_updated); - - $result = db_query($link, "SELECT COUNT(id) AS num_errors - FROM ttrss_feeds WHERE last_error != '' AND owner_uid = ".$_SESSION["uid"]); - - $num_errors = db_fetch_result($result, 0, "num_errors"); - - if ($num_errors > 0) { - $reply['headlines']['content'] .= "
"; - $reply['headlines']['content'] .= "". - __('Some feeds have update errors (click for details)').""; - } - $reply['headlines']['content'] .= "

"; - - $reply['headlines-info'] = array("count" => 0, - "vgroup_last_feed" => '', - "unread" => 0, - "disable_cache" => true); - - return $reply; - } - function save_email_address($link, $email) { // FIXME: implement persistent storage of emails @@ -4296,28 +3676,6 @@ array_push($_SESSION['stored_emails'], $email); } - function update_feed_access_key($link, $feed_id, $is_cat, $owner_uid = false) { - if (!$owner_uid) $owner_uid = $_SESSION["uid"]; - - $sql_is_cat = bool_to_sql_bool($is_cat); - - $result = db_query($link, "SELECT access_key FROM ttrss_access_keys - WHERE feed_id = '$feed_id' AND is_cat = $sql_is_cat - AND owner_uid = " . $owner_uid); - - if (db_num_rows($result) == 1) { - $key = db_escape_string(sha1(uniqid(rand(), true))); - - db_query($link, "UPDATE ttrss_access_keys SET access_key = '$key' - WHERE feed_id = '$feed_id' AND is_cat = $sql_is_cat - AND owner_uid = " . $owner_uid); - - return $key; - - } else { - return get_feed_access_key($link, $feed_id, $is_cat, $owner_uid); - } - } function get_feed_access_key($link, $feed_id, $is_cat, $owner_uid = false) { -- cgit v1.2.3