]> git.wh0rd.org - tt-rss.git/blame - classes/article.php
split some more functions from functions.php
[tt-rss.git] / classes / article.php
CommitLineData
3f363052 1<?php\r
369dbc19 2class Article extends Handler_Protected {\r
611efae7 3\r
8484ce22
AD
4 function csrf_ignore($method) {\r
5 $csrf_ignored = array("redirect");\r
6\r
7 return array_search($method, $csrf_ignored) !== false;\r
8 }\r
9\r
611efae7 10 function redirect() {\r
3f363052 11 $id = db_escape_string($_REQUEST['id']);\r
611efae7 12\r
3f363052
AD
13 $result = db_query($this->link, "SELECT link FROM ttrss_entries, ttrss_user_entries\r
14 WHERE id = '$id' AND id = ref_id AND owner_uid = '".$_SESSION['uid']."'\r
15 LIMIT 1");\r
611efae7 16\r
3f363052
AD
17 if (db_num_rows($result) == 1) {\r
18 $article_url = db_fetch_result($result, 0, 'link');\r
19 $article_url = str_replace("\n", "", $article_url);\r
611efae7 20\r
3f363052
AD
21 header("Location: $article_url");\r
22 return;\r
611efae7 23\r
3f363052
AD
24 } else {\r
25 print_error(__("Article not found."));\r
26 }\r
27 }\r
28\r
29 function view() {\r
30 $id = db_escape_string($_REQUEST["id"]);\r
31 $cids = explode(",", db_escape_string($_REQUEST["cids"]));\r
32 $mode = db_escape_string($_REQUEST["mode"]);\r
33 $omode = db_escape_string($_REQUEST["omode"]);\r
611efae7 34\r
3f363052
AD
35 // in prefetch mode we only output requested cids, main article\r
36 // just gets marked as read (it already exists in client cache)\r
611efae7 37\r
3f363052 38 $articles = array();\r
611efae7 39\r
3f363052
AD
40 if ($mode == "") {\r
41 array_push($articles, format_article($this->link, $id, false));\r
42 } else if ($mode == "zoom") {\r
43 array_push($articles, format_article($this->link, $id, true, true));\r
44 } else if ($mode == "raw") {\r
45 if ($_REQUEST['html']) {\r
46 header("Content-Type: text/html");\r
47 print '<link rel="stylesheet" type="text/css" href="tt-rss.css"/>';\r
48 }\r
611efae7 49\r
3f363052
AD
50 $article = format_article($this->link, $id, false);\r
51 print $article['content'];\r
52 return;\r
53 }\r
611efae7 54\r
87d7e850 55 $this->catchupArticleById($this->link, $id, 0);\r
611efae7 56\r
3f363052
AD
57 if (!$_SESSION["bw_limit"]) {\r
58 foreach ($cids as $cid) {\r
59 if ($cid) {\r
60 array_push($articles, format_article($this->link, $cid, false, false));\r
61 }\r
62 }\r
63 }\r
611efae7 64\r
3f363052 65 print json_encode($articles);\r
87d7e850
AD
66 }\r
67\r
68 private function catchupArticleById($link, $id, $cmode) {\r
69\r
70 if ($cmode == 0) {\r
71 db_query($link, "UPDATE ttrss_user_entries SET\r
72 unread = false,last_read = NOW()\r
73 WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]);\r
74 } else if ($cmode == 1) {\r
75 db_query($link, "UPDATE ttrss_user_entries SET\r
76 unread = true\r
77 WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]);\r
78 } else {\r
79 db_query($link, "UPDATE ttrss_user_entries SET\r
80 unread = NOT unread,last_read = NOW()\r
81 WHERE ref_id = '$id' AND owner_uid = " . $_SESSION["uid"]);\r
82 }\r
611efae7 83\r
87d7e850
AD
84 $feed_id = getArticleFeed($link, $id);\r
85 ccache_update($link, $feed_id, $_SESSION["uid"]);\r
3f363052 86 }\r
611efae7 87\r
87d7e850 88\r
611efae7 89}\r