+
+ function toggle_collapse_cat($link, $cat_id) {
+ if ($cat_id > 0) {
+ db_query($link, "UPDATE ttrss_feed_categories SET
+ collapsed = NOT collapsed WHERE id = '$cat_id' AND owner_uid = " .
+ $_SESSION["uid"]);
+ } else {
+ $pref_name = '';
+
+ switch ($cat_id) {
+ case -1:
+ $pref_name = '_COLLAPSED_SPECIAL';
+ break;
+ case -2:
+ $pref_name = '_COLLAPSED_LABELS';
+ break;
+ case 0:
+ $pref_name = '_COLLAPSED_UNCAT';
+ break;
+ }
+
+ if ($pref_name) {
+ if (get_pref($link, $pref_name)) {
+ set_pref($link, $pref_name, 'false');
+ } else {
+ set_pref($link, $pref_name, 'true');
+ }
+ }
+ }
+ }
+
+ function remove_feed($link, $id, $owner_uid) {
+
+ if ($id > 0) {
+
+ /* save starred articles in Archived feed */
+
+ db_query($link, "BEGIN");
+
+ /* prepare feed if necessary */
+
+ $result = db_query($link, "SELECT id FROM ttrss_archived_feeds
+ WHERE id = '$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 = '$id'");
+ }
+
+ db_query($link, "UPDATE ttrss_user_entries SET feed_id = NULL,
+ orig_feed_id = '$id' WHERE feed_id = '$id' AND
+ marked = true AND owner_uid = $owner_uid");
+
+ /* remove the feed */
+
+ db_query($link, "DELETE FROM ttrss_feeds
+ WHERE id = '$id' AND owner_uid = $owner_uid");
+
+ db_query($link, "COMMIT");
+
+/* if (file_exists(ICONS_DIR . "/$id.ico")) {
+ unlink(ICONS_DIR . "/$id.ico");
+ } */
+
+ ccache_remove($link, $id, $owner_uid);
+
+ } else {
+ label_remove($link, -11-$id, $owner_uid);
+ ccache_remove($link, -11-$id, $owner_uid);
+ }
+ }
+
+ function remove_feed_category($link, $id, $owner_uid) {
+
+ db_query($link, "DELETE FROM ttrss_feed_categories
+ WHERE id = '$id' AND owner_uid = $owner_uid");
+
+ 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"]);
+
+ if (db_num_rows($result) != 0) {
+ return db_fetch_result($result, 0, "feed_id");
+ } else {
+ return 0;
+ }
+ }
+
+ function make_url_from_parts($parts) {
+ $url = $parts['scheme'] . '://' . $parts['host'];
+
+ if ($parts['path']) $url .= $parts['path'];
+ if ($parts['query']) $url .= '?' . $parts['query'];
+
+ return $url;
+ }
+
+ function validate_feed_url($url) {
+ $parts = parse_url($url);
+
+ return ($parts['scheme'] == 'http' || $parts['scheme'] == 'feed' || $parts['scheme'] == 'https');
+
+ }
+