diff options
Diffstat (limited to 'classes')
-rw-r--r-- | classes/api.php | 9 | ||||
-rw-r--r-- | classes/article.php | 47 | ||||
-rwxr-xr-x | classes/feeds.php | 2 |
3 files changed, 50 insertions, 8 deletions
diff --git a/classes/api.php b/classes/api.php index 31dd3c086..cb035c86b 100644 --- a/classes/api.php +++ b/classes/api.php @@ -354,7 +354,7 @@ class API extends Handler { "guid" => $line["guid"], "title" => $line["title"], "link" => $line["link"], - "labels" => get_article_labels($line['id']), + "labels" => Article::get_article_labels($line['id']), "unread" => sql_bool_to_bool($line["unread"]), "marked" => sql_bool_to_bool($line["marked"]), "published" => sql_bool_to_bool($line["published"]), @@ -450,7 +450,7 @@ class API extends Handler { WHERE owner_uid = '".$_SESSION['uid']."' ORDER BY caption"); if ($article_id) - $article_labels = get_article_labels($article_id); + $article_labels = Article::get_article_labels($article_id); else $article_labels = array(); @@ -740,10 +740,7 @@ class API extends Handler { } } - if (!is_array($labels)) $labels = get_article_labels($line["id"]); - - //if (!$tags) $tags = get_article_tags($line["id"]); - //if (!$labels) $labels = get_article_labels($line["id"]); + if (!is_array($labels)) $labels = Article::get_article_labels($line["id"]); $headline_row = array( "id" => (int)$line["id"], diff --git a/classes/article.php b/classes/article.php index 6d881f50e..95f1704c9 100644 --- a/classes/article.php +++ b/classes/article.php @@ -358,7 +358,7 @@ class Article extends Handler_Protected { else label_remove_article($id, $label, $_SESSION["uid"]); - $labels = get_article_labels($id, $_SESSION["uid"]); + $labels = $this->get_article_labels($id, $_SESSION["uid"]); array_push($reply["info-for-headlines"], array("id" => $id, "labels" => $this->format_article_labels($labels))); @@ -924,4 +924,49 @@ class Article extends Handler_Protected { } } + static function get_article_labels($id, $owner_uid = false) { + $rv = array(); + + if (!$owner_uid) $owner_uid = $_SESSION["uid"]; + + $result = db_query("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( + "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(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); + else + label_update_cache($owner_uid, $id, array("no-labels" => 1)); + + return $rv; + } + } diff --git a/classes/feeds.php b/classes/feeds.php index 23571c369..a96e53fcf 100755 --- a/classes/feeds.php +++ b/classes/feeds.php @@ -350,7 +350,7 @@ class Feeds extends Handler_Protected { } } - if (!is_array($labels)) $labels = get_article_labels($id); + if (!is_array($labels)) $labels = Article::get_article_labels($id); $labels_str = "<span class=\"HLLCTR-$id\">"; $labels_str .= Article::format_article_labels($labels); |