diff options
author | Andrew Dolgov <[email protected]> | 2005-09-08 08:43:44 +0100 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2005-09-08 08:43:44 +0100 |
commit | 48f0adb02e8aacfc5850fd6ec2f15a9fb1af7561 (patch) | |
tree | 54e2415464a16c4f5fc094869fce93cc0bc613db /backend.php | |
parent | 7bb699de1c568c23c1f102f4b9396d8294dfc242 (diff) |
virtual feeds (labels) support
Diffstat (limited to 'backend.php')
-rw-r--r-- | backend.php | 199 |
1 files changed, 193 insertions, 6 deletions
diff --git a/backend.php b/backend.php index a16927cdd..8b39ce5f3 100644 --- a/backend.php +++ b/backend.php @@ -35,6 +35,23 @@ printFeedEntry(-1, "odd", "Starred articles", $num_starred, "images/mark_set.png"); + if (ENABLE_LABELS) { + + $result = db_query($link, "SELECT id,description FROM + ttrss_labels ORDER by description"); + + if (db_num_rows($result) > 0) { + print "<li><hr></li>"; + } + + while ($line = db_fetch_assoc($result)) { + + printFeedEntry(-$line["id"]-11, + "odd", $line["description"], 0, "images/label.png"); + + } + } + print "<li><hr></li>"; $result = db_query($link, "SELECT *, @@ -312,14 +329,26 @@ if ($feed >= 0) { $query_strategy_part = "feed_id = '$feed'"; - } else if ($feed == -1) { + } else if ($feed == -1) { // starred virtual feed $query_strategy_part = "marked = true"; $vfeed_query_part = "(SELECT title FROM ttrss_feeds WHERE id = feed_id) as feed_title,"; + } else if ($feed <= -10) { // labels + $label_id = -$feed - 11; + + $tmp_result = db_query($link, "SELECT sql_exp FROM ttrss_labels + WHERE id = '$label_id'"); + + $query_strategy_part = db_fetch_result($tmp_result, 0, "sql_exp"); + + $vfeed_query_part = "(SELECT title FROM ttrss_feeds WHERE + id = feed_id) as feed_title,"; } else { - $query_strategy_part = "id => 0"; // dumb + $query_strategy_part = "id > 0"; // dumb } + if ($feed < -10) error_reporting (0); + $result = db_query($link, "SELECT id,title,updated,unread,feed_id,marked,link,last_read, SUBSTRING(last_read,1,19) as last_read_noms, @@ -333,8 +362,16 @@ $query_strategy_part ORDER BY updated DESC $limit_query_part"); + if (!$result) { + print "<tr><td colspan='4' align='center'> + Could not display feed (query failed). Please check match syntax or local configuration.</td></tr>"; + return; + } + $lnum = 0; - + + error_reporting (E_ERROR | E_WARNING | E_PARSE); + $num_unread = 0; while ($line = db_fetch_assoc($result)) { @@ -415,16 +452,20 @@ $result = db_query($link, "SELECT count(id) as unread FROM ttrss_entries WHERE feed_id = ttrss_feeds.id AND $query_strategy_part AND unread = true"); + + $unread = db_fetch_result($result, 0, "unread"); + } else if ($feed == -1) { $result = db_query($link, "SELECT count(id) as unread FROM ttrss_entries WHERE $query_strategy_part"); + $unread = db_fetch_result($result, 0, "unread"); + } else { - print "[viewfeed] feed type not implemented<br>"; +// print "[viewfeed] feed type not implemented<br>"; + $unread = 0; } - $unread = db_fetch_result($result, 0, "unread"); - // update unread/total counters and status for active feed in the feedlist // kludge, because iframe doesn't seem to support onload() @@ -828,6 +869,152 @@ } } + if ($op == "pref-labels") { + + $subop = $_GET["subop"]; + + if ($subop == "editSave") { + + $sql_exp = $_GET["s"]; + $descr = $_GET["d"]; + $label_id = db_escape_string($_GET["id"]); + +// print "$sql_exp : $descr : $label_id"; + + $result = db_query($link, "UPDATE ttrss_labels SET + sql_exp = '$sql_exp', + description = '$descr' + WHERE id = '$label_id'"); + } + + if ($subop == "remove") { + + if (!WEB_DEMO_MODE) { + + $ids = split(",", $_GET["ids"]); + + foreach ($ids as $id) { + db_query($link, "DELETE FROM ttrss_labels WHERE id = '$id'"); + + } + } + } + + if ($subop == "add") { + + if (!WEB_DEMO_MODE) { + + $exp = $_GET["exp"]; + + $result = db_query($link, + "INSERT INTO ttrss_labels (sql_exp,description) + VALUES ('$exp', '$exp')"); + } + } + + print "<table class=\"prefAddFeed\"><tr> + <td><input id=\"ladd_expr\"></td>"; + + print"<td colspan=\"4\" align=\"right\"> + <a class=\"button\" href=\"javascript:addLabel()\">Add label</a></td></tr> + </table>"; + + $result = db_query($link, "SELECT + id,sql_exp,description + FROM + ttrss_labels ORDER by description"); + + print "<p><table width=\"100%\" class=\"prefLabelList\" id=\"prefLabelList\">"; + + print "<tr class=\"title\"> + <td width=\"5%\">Select</td><td width=\"40%\">SQL expression</td> + <td width=\"40%\">Caption</td></tr>"; + + $lnum = 0; + + while ($line = db_fetch_assoc($result)) { + + $class = ($lnum % 2) ? "even" : "odd"; + + $label_id = $line["id"]; + $edit_label_id = $_GET["id"]; + + if ($subop == "edit" && $label_id != $edit_label_id) { + $class .= "Grayed"; + } + + print "<tr class=\"$class\" id=\"LILRR-$label_id\">"; + + $line["sql_exp"] = htmlspecialchars($line["sql_exp"]); + $line["description"] = htmlspecialchars($line["description"]); + + if (!$edit_label_id || $subop != "edit") { + + if (!$line["description"]) $line["description"] = "[No caption]"; + + print "<td><input onclick='toggleSelectRow(this);' + type=\"checkbox\" id=\"LICHK-".$line["id"]."\"></td>"; + + print "<td><a href=\"javascript:editLabel($label_id);\">" . + $line["sql_exp"] . "</td>"; + + print "<td><a href=\"javascript:editLabel($label_id);\">" . + $line["description"] . "</td>"; + + } else if ($label_id != $edit_label_id) { + + if (!$line["description"]) $line["description"] = "[No description]"; + + print "<td><input disabled=\"true\" type=\"checkbox\" + id=\"LICHK-".$line["id"]."\"></td>"; + + print "<td>".$line["sql_exp"]."</td>"; + print "<td>".$line["description"]."</td>"; + + } else { + + print "<td><input disabled=\"true\" type=\"checkbox\"></td>"; + + print "<td><input id=\"iedit_expr\" value=\"".$line["sql_exp"]. + "\"></td>"; + + print "<td><input id=\"iedit_descr\" value=\"".$line["description"]. + "\"></td>"; + + } + + + print "</tr>"; + + ++$lnum; + } + + if ($lnum == 0) { + print "<tr><td colspan=\"4\" align=\"center\">No labels defined.</td></tr>"; + } + + print "</table>"; + + print "<p>"; + + if ($subop == "edit") { + print "Edit label: + <input type=\"submit\" class=\"button\" + onclick=\"javascript:labelEditCancel()\" value=\"Cancel\"> + <input type=\"submit\" class=\"button\" + onclick=\"javascript:labelEditSave()\" value=\"Save\">"; + + } else { + + print " + Selection: + <input type=\"submit\" class=\"button\" + onclick=\"javascript:editSelectedLabel()\" value=\"Edit\"> + <input type=\"submit\" class=\"button\" + onclick=\"javascript:removeSelectedLabels()\" value=\"Remove\">"; + } + } + if ($op == "error") { print "<div width=\"100%\" align='center'>"; $msg = $_GET["msg"]; |