labels.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. <?php
  2. class Labels
  3. {
  4. static function label_to_feed_id($label) {
  5. return LABEL_BASE_INDEX - 1 - abs($label);
  6. }
  7. static function feed_to_label_id($feed) {
  8. return LABEL_BASE_INDEX - 1 + abs($feed);
  9. }
  10. static function 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. if (db_num_rows($result) == 1) {
  15. return db_fetch_result($result, 0, "id");
  16. } else {
  17. return 0;
  18. }
  19. }
  20. static function find_caption($label, $owner_uid) {
  21. $result = db_query(
  22. "SELECT caption FROM ttrss_labels2 WHERE id = '$label'
  23. AND owner_uid = '$owner_uid' LIMIT 1");
  24. if (db_num_rows($result) == 1) {
  25. return db_fetch_result($result, 0, "caption");
  26. } else {
  27. return "";
  28. }
  29. }
  30. static function get_all_labels($owner_uid) {
  31. $rv = array();
  32. $result = db_query("SELECT fg_color, bg_color, caption FROM ttrss_labels2 WHERE owner_uid = " . $owner_uid);
  33. while ($line = db_fetch_assoc($result)) {
  34. array_push($rv, $line);
  35. }
  36. return $rv;
  37. }
  38. static function update_cache($owner_uid, $id, $labels = false, $force = false) {
  39. if ($force)
  40. Labels::clear_cache($id);
  41. if (!$labels)
  42. $labels = Article::get_article_labels($id);
  43. $labels = db_escape_string(json_encode($labels));
  44. db_query("UPDATE ttrss_user_entries SET
  45. label_cache = '$labels' WHERE ref_id = '$id' AND owner_uid = '$owner_uid'");
  46. }
  47. static function clear_cache($id) {
  48. db_query("UPDATE ttrss_user_entries SET
  49. label_cache = '' WHERE ref_id = '$id'");
  50. }
  51. static function remove_article($id, $label, $owner_uid) {
  52. $label_id = Labels::find_id($label, $owner_uid);
  53. if (!$label_id) return;
  54. db_query(
  55. "DELETE FROM ttrss_user_labels2
  56. WHERE
  57. label_id = '$label_id' AND
  58. article_id = '$id'");
  59. Labels::clear_cache($id);
  60. }
  61. static function add_article($id, $label, $owner_uid) {
  62. $label_id = Labels::find_id($label, $owner_uid);
  63. if (!$label_id) return;
  64. $result = db_query(
  65. "SELECT
  66. article_id FROM ttrss_labels2, ttrss_user_labels2
  67. WHERE
  68. label_id = id AND
  69. label_id = '$label_id' AND
  70. article_id = '$id' AND owner_uid = '$owner_uid'
  71. LIMIT 1");
  72. if (db_num_rows($result) == 0) {
  73. db_query("INSERT INTO ttrss_user_labels2
  74. (label_id, article_id) VALUES ('$label_id', '$id')");
  75. }
  76. Labels::clear_cache($id);
  77. }
  78. static function remove($id, $owner_uid) {
  79. if (!$owner_uid) $owner_uid = $_SESSION["uid"];
  80. db_query("BEGIN");
  81. $result = db_query("SELECT caption FROM ttrss_labels2
  82. WHERE id = '$id'");
  83. $caption = db_fetch_result($result, 0, "caption");
  84. $result = db_query("DELETE FROM ttrss_labels2 WHERE id = '$id'
  85. AND owner_uid = " . $owner_uid);
  86. if (db_affected_rows($result) != 0 && $caption) {
  87. /* Remove access key for the label */
  88. $ext_id = LABEL_BASE_INDEX - 1 - $id;
  89. db_query("DELETE FROM ttrss_access_keys WHERE
  90. feed_id = '$ext_id' AND owner_uid = $owner_uid");
  91. /* Remove cached data */
  92. db_query("UPDATE ttrss_user_entries SET label_cache = ''
  93. WHERE label_cache LIKE '%$caption%' AND owner_uid = " . $owner_uid);
  94. }
  95. db_query("COMMIT");
  96. }
  97. static function create($caption, $fg_color = '', $bg_color = '', $owner_uid = false) {
  98. if (!$owner_uid) $owner_uid = $_SESSION['uid'];
  99. db_query("BEGIN");
  100. $result = db_query("SELECT id FROM ttrss_labels2
  101. WHERE caption = '$caption' AND owner_uid = $owner_uid");
  102. if (db_num_rows($result) == 0) {
  103. $result = db_query(
  104. "INSERT INTO ttrss_labels2 (caption,owner_uid,fg_color,bg_color)
  105. VALUES ('$caption', '$owner_uid', '$fg_color', '$bg_color')");
  106. $result = db_affected_rows($result) != 0;
  107. }
  108. db_query("COMMIT");
  109. return $result;
  110. }
  111. }