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