]> git.wh0rd.org - tt-rss.git/blame - classes/labels.php
do not base headlines label context submenu on feed tree labels category
[tt-rss.git] / classes / labels.php
CommitLineData
87d7e850 1<?php
7c9b5a3f
AD
2class Labels
3{
4 static function label_to_feed_id($label) {
0086a897
AD
5 return LABEL_BASE_INDEX - 1 - abs($label);
6 }
7
7c9b5a3f 8 static function feed_to_label_id($feed) {
0086a897
AD
9 return LABEL_BASE_INDEX - 1 + abs($feed);
10 }
11
7c9b5a3f 12 static function find_id($label, $owner_uid) {
6322ac79 13 $result = db_query(
87d7e850
AD
14 "SELECT id FROM ttrss_labels2 WHERE caption = '$label'
15 AND owner_uid = '$owner_uid' LIMIT 1");
16
17 if (db_num_rows($result) == 1) {
18 return db_fetch_result($result, 0, "id");
19 } else {
20 return 0;
21 }
22 }
23
7c9b5a3f 24 static function find_caption($label, $owner_uid) {
6322ac79 25 $result = db_query(
87d7e850
AD
26 "SELECT caption FROM ttrss_labels2 WHERE id = '$label'
27 AND owner_uid = '$owner_uid' LIMIT 1");
28
29 if (db_num_rows($result) == 1) {
30 return db_fetch_result($result, 0, "caption");
31 } else {
32 return "";
33 }
34 }
35
7c9b5a3f 36 static function get_all_labels($owner_uid) {
87d7e850
AD
37 $rv = array();
38
5e78b0c2 39 $result = db_query("SELECT id, fg_color, bg_color, caption FROM ttrss_labels2 WHERE owner_uid = " . $owner_uid);
87d7e850
AD
40
41 while ($line = db_fetch_assoc($result)) {
42 array_push($rv, $line);
43 }
44
45 return $rv;
46 }
47
7c9b5a3f 48 static function update_cache($owner_uid, $id, $labels = false, $force = false) {
87d7e850
AD
49
50 if ($force)
7c9b5a3f 51 Labels::clear_cache($id);
87d7e850
AD
52
53 if (!$labels)
7c9b5a3f 54 $labels = Article::get_article_labels($id);
87d7e850 55
a42c55f0 56 $labels = db_escape_string(json_encode($labels));
87d7e850 57
a42c55f0 58 db_query("UPDATE ttrss_user_entries SET
87d7e850
AD
59 label_cache = '$labels' WHERE ref_id = '$id' AND owner_uid = '$owner_uid'");
60
61 }
62
7c9b5a3f 63 static function clear_cache($id) {
87d7e850 64
a42c55f0 65 db_query("UPDATE ttrss_user_entries SET
87d7e850
AD
66 label_cache = '' WHERE ref_id = '$id'");
67
68 }
69
7c9b5a3f 70 static function remove_article($id, $label, $owner_uid) {
87d7e850 71
7c9b5a3f 72 $label_id = Labels::find_id($label, $owner_uid);
87d7e850
AD
73
74 if (!$label_id) return;
75
4a80c57c 76 db_query(
87d7e850
AD
77 "DELETE FROM ttrss_user_labels2
78 WHERE
79 label_id = '$label_id' AND
80 article_id = '$id'");
81
7c9b5a3f 82 Labels::clear_cache($id);
87d7e850
AD
83 }
84
7c9b5a3f 85 static function add_article($id, $label, $owner_uid) {
87d7e850 86
7c9b5a3f 87 $label_id = Labels::find_id($label, $owner_uid);
87d7e850
AD
88
89 if (!$label_id) return;
90
6322ac79 91 $result = db_query(
87d7e850
AD
92 "SELECT
93 article_id FROM ttrss_labels2, ttrss_user_labels2
94 WHERE
95 label_id = id AND
96 label_id = '$label_id' AND
97 article_id = '$id' AND owner_uid = '$owner_uid'
98 LIMIT 1");
99
100 if (db_num_rows($result) == 0) {
a42c55f0 101 db_query("INSERT INTO ttrss_user_labels2
87d7e850
AD
102 (label_id, article_id) VALUES ('$label_id', '$id')");
103 }
104
7c9b5a3f 105 Labels::clear_cache($id);
87d7e850
AD
106
107 }
108
7c9b5a3f 109 static function remove($id, $owner_uid) {
87d7e850
AD
110 if (!$owner_uid) $owner_uid = $_SESSION["uid"];
111
a42c55f0 112 db_query("BEGIN");
87d7e850 113
a42c55f0 114 $result = db_query("SELECT caption FROM ttrss_labels2
87d7e850
AD
115 WHERE id = '$id'");
116
117 $caption = db_fetch_result($result, 0, "caption");
118
a42c55f0 119 $result = db_query("DELETE FROM ttrss_labels2 WHERE id = '$id'
87d7e850
AD
120 AND owner_uid = " . $owner_uid);
121
a42c55f0 122 if (db_affected_rows($result) != 0 && $caption) {
87d7e850
AD
123
124 /* Remove access key for the label */
125
f822a8e5 126 $ext_id = LABEL_BASE_INDEX - 1 - $id;
87d7e850 127
a42c55f0 128 db_query("DELETE FROM ttrss_access_keys WHERE
87d7e850
AD
129 feed_id = '$ext_id' AND owner_uid = $owner_uid");
130
87d7e850
AD
131 /* Remove cached data */
132
a42c55f0 133 db_query("UPDATE ttrss_user_entries SET label_cache = ''
87d7e850
AD
134 WHERE label_cache LIKE '%$caption%' AND owner_uid = " . $owner_uid);
135
136 }
137
a42c55f0 138 db_query("COMMIT");
87d7e850
AD
139 }
140
7c9b5a3f 141 static function create($caption, $fg_color = '', $bg_color = '', $owner_uid = false) {
87d7e850
AD
142
143 if (!$owner_uid) $owner_uid = $_SESSION['uid'];
144
a42c55f0 145 db_query("BEGIN");
87d7e850 146
a42c55f0 147 $result = db_query("SELECT id FROM ttrss_labels2
87d7e850
AD
148 WHERE caption = '$caption' AND owner_uid = $owner_uid");
149
150 if (db_num_rows($result) == 0) {
6322ac79 151 $result = db_query(
87d7e850
AD
152 "INSERT INTO ttrss_labels2 (caption,owner_uid,fg_color,bg_color)
153 VALUES ('$caption', '$owner_uid', '$fg_color', '$bg_color')");
154
a42c55f0 155 $result = db_affected_rows($result) != 0;
87d7e850
AD
156 }
157
a42c55f0 158 db_query("COMMIT");
87d7e850
AD
159
160 return $result;
161 }
7c9b5a3f 162}