add feed/list command, show help when no feed command given
[stapibas.git] / www / request-feed-update.php
1 <?php
2 /**
3  * Request that a feed shall get updated, marks it as "requires update"
4  * in the database
5  *
6  * Has to be called via POST, url given in parameter "url".
7  */
8 header('HTTP/1.0 500 Internal Server Error');
9 header('Content-type: text/plain');
10
11 require_once __DIR__ . '/../data/config.php';
12
13 if (!isset($_POST['url'])) {
14     header('HTTP/1.0 400 Bad Request');
15     echo "HTTP POST 'url' parameter missing\n";
16     exit(1);
17 }
18 $url = $_POST['url'];
19 if ($url === '') {
20     header('HTTP/1.0 400 Bad Request');
21     echo "'url' parameter is empty\n";
22     exit(1);
23 }
24 if (filter_var($url, FILTER_VALIDATE_URL) === false) {
25     header('HTTP/1.0 400 Bad Request');
26     echo "Invalid URL given\n";
27     exit(1);
28 }
29
30
31 $db = new PDO($dbdsn, $dbuser, $dbpass);
32 $res = $db->query(
33     'SELECT f_id, f_needs_update FROM feeds WHERE f_url = ' . $db->quote($url)
34 );
35 $row = $res->fetch(PDO::FETCH_OBJ);
36 if ($row === false) {
37     header('HTTP/1.0 404 Not Found');
38     echo "Feed URL could not be found in database\n";
39     exit(1);
40 }
41 if ($row->f_needs_update == 1) {
42     header('HTTP/1.0 200 OK');
43     echo "Already in the queue\n";
44     exit(0);
45 }
46
47 $db->exec(
48     'UPDATE feeds SET f_needs_update = 1'
49     . ' WHERE f_id = ' . $db->quote($row->f_id)
50 );
51
52 header('HTTP/1.0 202 Accepted');
53 echo "Feed has been put into the queue\n";
54 exit(0);
55 ?>