labels.php 4.5 KB

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