$checked = false;
foreach ($article_labels as $al) {
- if (feed_to_label_id($al[0]) == $line['id']) {
+ if (Labels::feed_to_label_id($al[0]) == $line['id']) {
$checked = true;
break;
}
}
array_push($rv, array(
- "id" => (int)label_to_feed_id($line['id']),
+ "id" => (int)Labels::label_to_feed_id($line['id']),
"caption" => $line['caption'],
"fg_color" => $line['fg_color'],
"bg_color" => $line['bg_color'],
$label_id = (int) $this->dbh->escape_string($_REQUEST['label_id']);
$assign = (bool) ($this->dbh->escape_string($_REQUEST['assign']) == "true");
- $label = $this->dbh->escape_string(label_find_caption(
- feed_to_label_id($label_id), $_SESSION["uid"]));
+ $label = $this->dbh->escape_string(Labels::find_caption(
+ Labels::feed_to_label_id($label_id), $_SESSION["uid"]));
$num_updated = 0;
foreach ($article_ids as $id) {
if ($assign)
- label_add_article($id, $label, $_SESSION["uid"]);
+ Labels::add_article($id, $label, $_SESSION["uid"]);
else
- label_remove_article($id, $label, $_SESSION["uid"]);
+ Labels::remove_article($id, $label, $_SESSION["uid"]);
++$num_updated;
if (count($labels) != 0) {
foreach ($labels as $label) {
- label_add_article($ref_id, trim($label), $owner_uid);
+ Labels::add_article($ref_id, trim($label), $owner_uid);
}
}
if (count($labels) != 0) {
foreach ($labels as $label) {
- label_add_article($ref_id, trim($label), $owner_uid);
+ Labels::add_article($ref_id, trim($label), $owner_uid);
}
}
$ids = explode(",", $this->dbh->escape_string($_REQUEST["ids"]));
$label_id = $this->dbh->escape_string($_REQUEST["lid"]);
- $label = $this->dbh->escape_string(label_find_caption($label_id,
+ $label = $this->dbh->escape_string(Labels::find_caption($label_id,
$_SESSION["uid"]));
$reply["info-for-headlines"] = array();
foreach ($ids as $id) {
if ($assign)
- label_add_article($id, $label, $_SESSION["uid"]);
+ Labels::add_article($id, $label, $_SESSION["uid"]);
else
- label_remove_article($id, $label, $_SESSION["uid"]);
+ Labels::remove_article($id, $label, $_SESSION["uid"]);
$labels = $this->get_article_labels($id, $_SESSION["uid"]);
ORDER BY caption");
while ($line = db_fetch_assoc($result)) {
- $rk = array(label_to_feed_id($line["label_id"]),
+ $rk = array(Labels::label_to_feed_id($line["label_id"]),
$line["caption"], $line["fg_color"],
$line["bg_color"]);
array_push($rv, $rk);
}
if (count($rv) > 0)
- label_update_cache($owner_uid, $id, $rv);
+ Labels::update_cache($owner_uid, $id, $rv);
else
- label_update_cache($owner_uid, $id, array("no-labels" => 1));
+ Labels::update_cache($owner_uid, $id, array("no-labels" => 1));
return $rv;
}
$result = false;
if ($feed < LABEL_BASE_INDEX) {
- $label_feed = feed_to_label_id($feed);
+ $label_feed = Labels::feed_to_label_id($feed);
$result = $this->dbh->query("SELECT id FROM ttrss_labels2 WHERE
id = '$label_feed' AND owner_uid = " . $_SESSION['uid']);
} else if (!$cat_view && is_numeric($feed) && $feed > 0) {
} else if ($feed < LABEL_BASE_INDEX) { // label
- $label_id = feed_to_label_id($feed);
+ $label_id = Labels::feed_to_label_id($feed);
db_query("UPDATE ttrss_user_entries
SET unread = false, last_read = NOW() WHERE ref_id IN
} else if ($feed < LABEL_BASE_INDEX) {
- $label_id = feed_to_label_id($feed);
+ $label_id = Labels::feed_to_label_id($feed);
return Feeds::getLabelUnread($label_id, $owner_uid);
} else if ($id == -6) {
return __("Recently read");
} else if ($id < LABEL_BASE_INDEX) {
- $label_id = feed_to_label_id($id);
+ $label_id = Labels::feed_to_label_id($id);
$result = db_query("SELECT caption FROM ttrss_labels2 WHERE id = '$label_id'");
if (db_num_rows($result) == 1) {
return db_fetch_result($result, 0, "caption");
$query_strategy_part = "true";
$vfeed_query_part = "ttrss_feeds.title AS feed_title,";
} else if ($feed <= LABEL_BASE_INDEX) { // labels
- $label_id = feed_to_label_id($feed);
+ $label_id = Labels::feed_to_label_id($feed);
$query_strategy_part = "label_id = '$label_id' AND
ttrss_labels2.id = ttrss_user_labels2.label_id AND
--- /dev/null
+<?php
+class Labels
+{
+ static function label_to_feed_id($label) {
+ return LABEL_BASE_INDEX - 1 - abs($label);
+ }
+
+ static function feed_to_label_id($feed) {
+ return LABEL_BASE_INDEX - 1 + abs($feed);
+ }
+
+ static function find_id($label, $owner_uid) {
+ $result = db_query(
+ "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;
+ }
+ }
+
+ static function find_caption($label, $owner_uid) {
+ $result = db_query(
+ "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 "";
+ }
+ }
+
+ static function get_all_labels($owner_uid) {
+ $rv = array();
+
+ $result = db_query("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;
+ }
+
+ static function update_cache($owner_uid, $id, $labels = false, $force = false) {
+
+ if ($force)
+ Labels::clear_cache($id);
+
+ if (!$labels)
+ $labels = Article::get_article_labels($id);
+
+ $labels = db_escape_string(json_encode($labels));
+
+ db_query("UPDATE ttrss_user_entries SET
+ label_cache = '$labels' WHERE ref_id = '$id' AND owner_uid = '$owner_uid'");
+
+ }
+
+ static function clear_cache($id) {
+
+ db_query("UPDATE ttrss_user_entries SET
+ label_cache = '' WHERE ref_id = '$id'");
+
+ }
+
+ static function remove_article($id, $label, $owner_uid) {
+
+ $label_id = Labels::find_id($label, $owner_uid);
+
+ if (!$label_id) return;
+
+ db_query(
+ "DELETE FROM ttrss_user_labels2
+ WHERE
+ label_id = '$label_id' AND
+ article_id = '$id'");
+
+ Labels::clear_cache($id);
+ }
+
+ static function add_article($id, $label, $owner_uid) {
+
+ $label_id = Labels::find_id($label, $owner_uid);
+
+ if (!$label_id) return;
+
+ $result = db_query(
+ "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("INSERT INTO ttrss_user_labels2
+ (label_id, article_id) VALUES ('$label_id', '$id')");
+ }
+
+ Labels::clear_cache($id);
+
+ }
+
+ static function remove($id, $owner_uid) {
+ if (!$owner_uid) $owner_uid = $_SESSION["uid"];
+
+ db_query("BEGIN");
+
+ $result = db_query("SELECT caption FROM ttrss_labels2
+ WHERE id = '$id'");
+
+ $caption = db_fetch_result($result, 0, "caption");
+
+ $result = db_query("DELETE FROM ttrss_labels2 WHERE id = '$id'
+ AND owner_uid = " . $owner_uid);
+
+ if (db_affected_rows($result) != 0 && $caption) {
+
+ /* Remove access key for the label */
+
+ $ext_id = LABEL_BASE_INDEX - 1 - $id;
+
+ db_query("DELETE FROM ttrss_access_keys WHERE
+ feed_id = '$ext_id' AND owner_uid = $owner_uid");
+
+ /* Remove cached data */
+
+ db_query("UPDATE ttrss_user_entries SET label_cache = ''
+ WHERE label_cache LIKE '%$caption%' AND owner_uid = " . $owner_uid);
+
+ }
+
+ db_query("COMMIT");
+ }
+
+ static function create($caption, $fg_color = '', $bg_color = '', $owner_uid = false) {
+
+ if (!$owner_uid) $owner_uid = $_SESSION['uid'];
+
+ db_query("BEGIN");
+
+ $result = db_query("SELECT id FROM ttrss_labels2
+ WHERE caption = '$caption' AND owner_uid = $owner_uid");
+
+ if (db_num_rows($result) == 0) {
+ $result = db_query(
+ "INSERT INTO ttrss_labels2 (caption,owner_uid,fg_color,bg_color)
+ VALUES ('$caption', '$owner_uid', '$fg_color', '$bg_color')");
+
+ $result = db_affected_rows($result) != 0;
+ }
+
+ db_query("COMMIT");
+
+ return $result;
+ }
+}
\ No newline at end of file
$fg_color = $this->dbh->escape_string($attrs->getNamedItem('label-fg-color')->nodeValue);
$bg_color = $this->dbh->escape_string($attrs->getNamedItem('label-bg-color')->nodeValue);
- if (!label_find_id($label_name, $_SESSION['uid'])) {
+ if (!Labels::find_id($label_name, $_SESSION['uid'])) {
$this->opml_notice(T_sprintf("Adding label %s", htmlspecialchars($label_name)));
- label_create($label_name, $fg_color, $bg_color, $owner_uid);
+ Labels::create($label_name, $fg_color, $bg_color, $owner_uid);
} else {
$this->opml_notice(T_sprintf("Duplicate label: %s", htmlspecialchars($label_name)));
}
while ($line = $this->dbh->fetch_assoc($result)) {
- $label_id = label_to_feed_id($line['id']);
+ $label_id = Labels::label_to_feed_id($line['id']);
$feed = $this->feedlist_init_feed($label_id, false, 0);
CCache::remove($id, $owner_uid);
} else {
- label_remove(feed_to_label_id($id), $owner_uid);
+ Labels::remove(Labels::feed_to_label_id($id), $owner_uid);
//CCache::remove($id, $owner_uid); don't think labels are cached
}
}
AND owner_uid = " . $_SESSION["uid"]);
}
- $caption = $this->dbh->escape_string(label_find_caption($id, $_SESSION["uid"]));
+ $caption = $this->dbh->escape_string(Labels::find_caption($id, $_SESSION["uid"]));
/* Remove cached data */
fg_color = '', bg_color = '' WHERE id = '$id'
AND owner_uid = " . $_SESSION["uid"]);
- $caption = $this->dbh->escape_string(label_find_caption($id, $_SESSION["uid"]));
+ $caption = $this->dbh->escape_string(Labels::find_caption($id, $_SESSION["uid"]));
/* Remove cached data */
$ids = explode(",", $this->dbh->escape_string($_REQUEST["ids"]));
foreach ($ids as $id) {
- label_remove($id, $_SESSION["uid"]);
+ Labels::remove($id, $_SESSION["uid"]);
}
}
if ($caption) {
- if (label_create($caption)) {
+ if (Labels::create($caption)) {
if (!$output) {
print T_sprintf("Created label <b>%s</b>", htmlspecialchars($caption));
}
require_once 'db-prefs.php';
require_once 'version.php';
- require_once 'labels.php';
require_once 'controls.php';
define('SELF_USER_AGENT', 'Tiny Tiny RSS/' . VERSION . ' (http://tt-rss.org/)');
while ($line = db_fetch_assoc($result)) {
- $id = label_to_feed_id($line["id"]);
+ $id = Labels::label_to_feed_id($line["id"]);
$cv = array("id" => $id,
"counter" => (int) $line["unread"],
+++ /dev/null
-<?php
- function label_to_feed_id($label) {
- return LABEL_BASE_INDEX - 1 - abs($label);
- }
-
- function feed_to_label_id($feed) {
- return LABEL_BASE_INDEX - 1 + abs($feed);
- }
-
- function label_find_id($label, $owner_uid) {
- $result = db_query(
- "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 label_find_caption($label, $owner_uid) {
- $result = db_query(
- "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($owner_uid) {
- $rv = array();
-
- $result = db_query("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($owner_uid, $id, $labels = false, $force = false) {
-
- if ($force)
- label_clear_cache($id);
-
- if (!$labels)
- $labels = get_article_labels($id);
-
- $labels = db_escape_string(json_encode($labels));
-
- db_query("UPDATE ttrss_user_entries SET
- label_cache = '$labels' WHERE ref_id = '$id' AND owner_uid = '$owner_uid'");
-
- }
-
- function label_clear_cache($id) {
-
- db_query("UPDATE ttrss_user_entries SET
- label_cache = '' WHERE ref_id = '$id'");
-
- }
-
- function label_remove_article($id, $label, $owner_uid) {
-
- $label_id = label_find_id($label, $owner_uid);
-
- if (!$label_id) return;
-
- db_query(
- "DELETE FROM ttrss_user_labels2
- WHERE
- label_id = '$label_id' AND
- article_id = '$id'");
-
- label_clear_cache($id);
- }
-
- function label_add_article($id, $label, $owner_uid) {
-
- $label_id = label_find_id($label, $owner_uid);
-
- if (!$label_id) return;
-
- $result = db_query(
- "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("INSERT INTO ttrss_user_labels2
- (label_id, article_id) VALUES ('$label_id', '$id')");
- }
-
- label_clear_cache($id);
-
- }
-
- function label_remove($id, $owner_uid) {
- if (!$owner_uid) $owner_uid = $_SESSION["uid"];
-
- db_query("BEGIN");
-
- $result = db_query("SELECT caption FROM ttrss_labels2
- WHERE id = '$id'");
-
- $caption = db_fetch_result($result, 0, "caption");
-
- $result = db_query("DELETE FROM ttrss_labels2 WHERE id = '$id'
- AND owner_uid = " . $owner_uid);
-
- if (db_affected_rows($result) != 0 && $caption) {
-
- /* Remove access key for the label */
-
- $ext_id = LABEL_BASE_INDEX - 1 - $id;
-
- db_query("DELETE FROM ttrss_access_keys WHERE
- feed_id = '$ext_id' AND owner_uid = $owner_uid");
-
- /* Remove cached data */
-
- db_query("UPDATE ttrss_user_entries SET label_cache = ''
- WHERE label_cache LIKE '%$caption%' AND owner_uid = " . $owner_uid);
-
- }
-
- db_query("COMMIT");
- }
-
- function label_create($caption, $fg_color = '', $bg_color = '', $owner_uid = false) {
-
- if (!$owner_uid) $owner_uid = $_SESSION['uid'];
-
- db_query("BEGIN");
-
- $result = false;
-
- $result = db_query("SELECT id FROM ttrss_labels2
- WHERE caption = '$caption' AND owner_uid = $owner_uid");
-
- if (db_num_rows($result) == 0) {
- $result = db_query(
- "INSERT INTO ttrss_labels2 (caption,owner_uid,fg_color,bg_color)
- VALUES ('$caption', '$owner_uid', '$fg_color', '$bg_color')");
-
- $result = db_affected_rows($result) != 0;
- }
-
- db_query("COMMIT");
-
- return $result;
- }
_debug("assigning labels [other]...", $debug_enabled);
foreach ($article_labels as $label) {
- label_add_article($entry_ref_id, $label[1], $owner_uid);
+ Labels::add_article($entry_ref_id, $label[1], $owner_uid);
}
_debug("assigning labels [filters]...", $debug_enabled);
foreach ($filters as $f) {
if ($f["type"] == "label") {
if (!labels_contains_caption($article_labels, $f["param"])) {
- label_add_article($id, $f["param"], $owner_uid);
+ Labels::add_article($id, $f["param"], $owner_uid);
}
}
}
$result = db_query("SELECT id, fg_color, bg_color, caption FROM ttrss_labels2 WHERE owner_uid = " . $owner_uid);
while ($line = db_fetch_assoc($result)) {
- array_push($rv, array(label_to_feed_id($line["id"]),
+ array_push($rv, array(Labels::label_to_feed_id($line["id"]),
$line["caption"], $line["fg_color"], $line["bg_color"]));
}
if (is_array($label_cache) && $label_cache["no-labels"] != 1) {
foreach ($label_cache as $label) {
- label_create($label[1],
+ Labels::create($label[1],
$label[2], $label[3], $owner_uid);
- label_add_article($ref_id, $label[1], $owner_uid);
+ Labels::add_article($ref_id, $label[1], $owner_uid);
}
}
db_query("UPDATE ttrss_user_entries SET note = '$note'
WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]);
- $formatted_note = format_article_note($id, $note);
+ $formatted_note = Article::format_article_note($id, $note);
print json_encode(array("note" => $formatted_note,
"raw_length" => mb_strlen($note)));
public function testLabels() {
// create label
- label_create('Test', '', '', 1);
+ Labels::create('Test', '', '', 1);
$this->testLogin();
$ret = $this->apiCall([], "getLabels");
$this->assertEquals('Test', $ret['content'][0]['caption']);
$label_feed_id = $ret['content'][0]['id'];
- $label_id = feed_to_label_id($label_feed_id);
+ $label_id = Labels::feed_to_label_id($label_feed_id);
$this->assertLessThan(0, $label_feed_id);
$this->assertGreaterThan(0, $label_id);
// clean up and check
- label_remove($label_id, 1);
+ Labels::remove($label_id, 1);
$ret = $this->apiCall([], "getLabels");
$this->assertEmpty($ret['content']);