]>
Commit | Line | Data |
---|---|---|
87d7e850 | 1 | <?php |
7c9b5a3f AD |
2 | class 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 | ||
a42c55f0 | 39 | $result = db_query("SELECT 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 | } |