summaryrefslogtreecommitdiff
path: root/feeds/feed.php
blob: 177071bfd1dd71b7ecf574133b54f10e8d9a5522 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
<?php

require_once "../init.php";

require_once BASE . "/lib/mysql.php";

$uri_parts = explode('/', $_SERVER['REQUEST_URI']);

if ($uri_parts[0] != '' || $uri_parts[1] != 'feeds')
  throw_http_error(422, 'Unprocessable Entity');

$last = array_pop($uri_parts);
if ($last != '')
  array_push($uri_parts, $last);

array_splice(
  $uri_parts,
  0, 2
);

// TODO
if ($uri_parts[0] == 'releases')
  throw_http_error(501, "Not Implemented", "Sry, the releases-feed is not yet implemented.");

if ($uri_parts[0] == 'packages') {

  array_splice(
    $uri_parts,
    0, 1
  );

// TODO: implement "added" and "removed" - but how?
//  $actions = array('' => '', 'added' => 'added', 'removed' => 'removed');
  $actions = array('' => '');
  $archs = array('all' => 'all');
  $result = mysql_run_query(
    "SELECT DISTINCT `architectures`.`name` FROM `architectures`" .
    mysql_join_architectures_repositories() .
    " WHERE `repositories`.`is_on_master_mirror`" .
    " ORDER BY `name`"
  );
  while ($row = $result -> fetch_assoc())
    $archs[$row['name']] = $row['name'];
  $repos = array('' => '');
  $result = mysql_run_query(
    "SELECT DISTINCT `repositories`.`name` FROM `repositories` WHERE `repositories`.`is_on_master_mirror` ORDER BY `name`"
  );
  while ($row = $result -> fetch_assoc())
    $repos[$row['name']] = $row['name'];

  if (count($uri_parts) > 0 && array_key_exists($uri_parts[0], $actions)) {
    $action = $uri_parts[0];
     array_splice(
       $uri_parts,
       0, 1
     );
  }
  else
    $action = '';

  if (count($uri_parts) > 0) {
    if (!array_key_exists($uri_parts[0], $archs))
      throw_http_error(501, "Not Implemented", implode('/',$uri_parts));
    $arch = $uri_parts[0];
    array_splice(
      $uri_parts,
      0, 1
    );
  }
  else
    $arch = '';

  if (count($uri_parts) > 0) {
    if (!array_key_exists($uri_parts[0], $repos))
      throw_http_error(501, "Not Implemented", implode('/',$uri_parts));
    $repo = $uri_parts[0];
    array_splice(
      $uri_parts,
      0, 1
    );
  }
  else
    $repo = '';

  if (count($uri_parts) != 0)
    throw_http_error(501, "Not Implemented", implode('/',$uri_parts));

#  $result = mysql_run_query(
#    TODO
#  );

  print "<rss version=\"2.0\">";
  print "<channel>";
  print "<title>";
  print "Arch Linux 32: ";
  switch ($action) {
    case '':
      print "Recent package updates";
      break;
    case 'added':
      print "Recent added packages";
      break;
    case 'removes':
      print "Recent removed packages";
      break;
  }
  if ($arch != '')
    print " (" . $arch;
  if ($repo != '')
    print " [" . $repo . "]";
  if ($arch != '')
    print ")";
  print "</title>";
  print "<link>";
  print "https://archlinux32.org" . $_SERVER['REQUEST_URI'];
  print "</link>";
  print "<description>";
  print "</description>";
# TODO
  print "</channel>";

  die();

}

throw_http_error(501, "Not Implemented");