New spiders
[infodrom.org/www.zeitungsliste.de] / lib / bookmarks.inc
1 <?php
2
3 function bookmark_add($zid, $uid)
4 {
5   $query = sprintf("INSERT INTO bookmarks (uid,zeitung) VALUES (%d,%d)",
6                    $uid, $zid);
7
8   # Ignore potentially existing bookmark
9   db_query($query);
10 }
11
12 function bookmark_delete($zid, $uid)
13 {
14   $query = sprintf("DELETE FROM bookmarks " .
15                    "WHERE uid = %d AND zeitung = %d",
16                    $uid, $zid);
17
18   # Ignore potentially non-existing bookmark
19   db_query($query);
20 }
21
22 function bookmark_up($zid, $uid)
23 {
24   $query = sprintf("UPDATE bookmarks SET priority = priority - 1 " .
25                    "WHERE uid = %d AND zeitung = %d",
26                    $uid, $zid);
27
28   # Ignore potentially non-existing bookmark
29   db_query($query);
30 }
31
32 function bookmark_down($zid, $uid)
33 {
34   $query = sprintf("UPDATE bookmarks SET priority = priority + 1 " .
35                    "WHERE uid = %d AND zeitung = %d",
36                    $uid, $zid);
37
38   # Ignore potentially non-existing bookmark
39   db_query($query);
40 }
41
42 function format_bookmarks()
43 {
44   global $_SESSION;
45
46   if (!isset($_SESSION['uid']))
47     return;
48
49   $query = sprintf("SELECT zeitung,name,priority FROM bookmarks " .
50                    "JOIN zeitungen ON zeitungen.id = zeitung " .
51                    "WHERE uid = %d " .
52                    "ORDER BY priority,name LIMIT 20",
53                    $_SESSION['uid']);
54
55   $sth = db_query($query);
56
57   if ($sth === false || pg_num_rows ($sth) == 0)
58     return '&nbsp;';
59
60 $rowf = '<tr>
61 <td width="85">
62 <a %s><img src="up.png" width="16" height="16" alt="up" title="Nach oben schieben" border="0"></a>
63 <strong>%d</strong>
64 <a %s><img src="down.png" width="16" height="16" alt="up" title="Nach unten schieben" border="0"></a>
65 <a %s><img src="delete.gif" width="16" height="16" alt="delete" title="Lesezeichen löschen" border="0"></a>
66 </td>
67 <td>
68 <a href="zeitung/%d.html">%s</a></td>
69 </tr>';
70
71   $ret .= '<table class="bookmarks" width="100%" alt="">';
72   for ($n=0; $n < pg_num_rows ($sth); $n++) {
73     $row = pg_fetch_array ($sth, $n);
74
75     if (javascript_ok()) {
76       $link_up = sprintf('href="bookmark.html" onclick="return bookmark_action(\'up\',%d);"', $row['zeitung']);
77       $link_down = sprintf('href="bookmark.html" onclick="return bookmark_action(\'down\',%d);"', $row['zeitung']);
78       $link_del = sprintf('href="bookmark.html" onclick="return bookmark_action(\'del\',%d);"', $row['zeitung']);
79     } else {
80       $link_up = sprintf('href="bookmark.html?zeitung=%d&action=up"', $row['zeitung']);
81       $link_down = sprintf('href="bookmark.html?zeitung=%d&action=down"', $row['zeitung']);
82       $link_del = sprintf('href="bookmark.html?zeitung=%d&action=delete"', $row['zeitung']);
83     }
84
85     $ret .= sprintf($rowf,
86                     $link_up, $row['priority'], $link_down, $link_del,
87                     $row['zeitung'], $row['name']);
88   }
89   $ret .= '</table>';
90
91
92   return $ret;
93 }
94
95 function bookmarks_manage()
96 {
97   global $_SESSION;
98
99   if (!isset($_SESSION['uid']))
100     return notfound();
101
102   $ret = '<h3>Verwaltung der persönlichen Lesezeichen</h3>';
103
104   $ret .= '<div id="bookmarks">';
105   $ret .= load_javascript('bookmarks.js');
106   $ret .= format_bookmarks();
107   $ret .= '</div>';
108
109   return $ret;
110 }
111
112 function process_bookmark()
113 {
114   global $_SESSION;
115   global $_SERVER;
116   global $_GET;
117   global $zlist;
118   global $cfg;
119
120   if (!isset($_SESSION['uid']))
121     return notfound();
122
123   if (empty($_SERVER['QUERY_STRING'])) {
124     return bookmarks_manage();
125   } elseif (!isset($_GET['zeitung']) || !is_numeric($_GET['zeitung'])) {
126     if (isset($_SERVER['HTTP_REFERER']))
127       $zlist['redirect'] = substr($_SERVER['HTTP_REFERER'], strlen($zlist['home']));
128     return warning('Keine Zeitung oder Magazin gefunden.');
129   } elseif (isset($_GET['action'])) {
130     if ($_GET['action'] == 'up')
131       bookmark_up($_GET['zeitung'], $_SESSION['uid']);
132     elseif ($_GET['action'] == 'down')
133       bookmark_down($_GET['zeitung'], $_SESSION['uid']);
134     elseif ($_GET['action'] == 'delete')
135       bookmark_delete($_GET['zeitung'], $_SESSION['uid']);
136     else
137       return notfound();
138     header('Location: ' . $cfg['home'] . 'bookmark.html');
139     exit;
140   } else {
141     bookmark_add($_GET['zeitung'], $_SESSION['uid']);
142     if (isset($_SERVER['HTTP_REFERER'])) {
143       header('Location: ' . $_SERVER['HTTP_REFERER']);
144       exit;
145     } else
146       return information('Ihr Lesezeichen wurde hinzugefügt');
147   }
148 }
149
150 function ajax_bookmark_check()
151 {
152   global $_POST;
153   global $_SESSION;
154
155   if (!isset($_POST['zeitung']) || !is_numeric($_POST['zeitung']) ||
156       !isset($_SESSION['uid']))
157     return false;
158
159   return true;
160 }
161
162 function ajax_bookmark_up()
163 {
164   global $_POST;
165   global $_SESSION;
166
167   if (!ajax_bookmark_check())
168     return false;
169
170   bookmark_up($_POST['zeitung'], $_SESSION['uid']);
171
172   return format_bookmarks();
173 }
174
175 function ajax_bookmark_down()
176 {
177   global $_POST;
178   global $_SESSION;
179
180   if (!ajax_bookmark_check())
181     return false;
182
183   bookmark_down($_POST['zeitung'], $_SESSION['uid']);
184
185   return format_bookmarks();
186 }
187
188 function ajax_bookmark_del()
189 {
190   global $_POST;
191   global $_SESSION;
192
193   if (!ajax_bookmark_check())
194     return false;
195
196   bookmark_delete($_POST['zeitung'], $_SESSION['uid']);
197
198   return format_bookmarks();
199 }
200
201 function ajax_bookmark_add()
202 {
203   global $_POST;
204   global $_SESSION;
205
206   if (!ajax_bookmark_check())
207     return false;
208
209   bookmark_add($_POST['zeitung'], $_SESSION['uid']);
210
211   return format_info_bookmarks();
212 }
213
214
215 ?>