aboutsummaryrefslogtreecommitdiff
path: root/www/vote.php
diff options
context:
space:
mode:
Diffstat (limited to 'www/vote.php')
-rw-r--r--www/vote.php68
1 files changed, 68 insertions, 0 deletions
diff --git a/www/vote.php b/www/vote.php
new file mode 100644
index 0000000..0f33d75
--- /dev/null
+++ b/www/vote.php
@@ -0,0 +1,68 @@
+<?php
+/**
+ * We do expect three parameters:
+ * - type (for/against)
+ * - bookmark id
+ * - session needs to contain the URL last visited
+ *
+ * vote/for/123
+ */
+require_once 'www-header.php';
+
+if (!$GLOBALS['enableVoting']) {
+ header('HTTP/1.0 501 Not implemented');
+ echo 'voting is disabled';
+ exit(1);
+}
+
+
+$us = SemanticScuttle_Service_Factory::get('User');
+$vs = SemanticScuttle_Service_Factory::get('Vote');
+
+if (!$us->isLoggedOn()) {
+ header('HTTP/1.0 400 Bad Request');
+ echo 'You need to be logged on to vote.';
+ exit(1);
+}
+$user = $us->getCurrentUser();
+$user = $user['uId'];
+
+if (!isset($_SERVER['PATH_INFO'])) {
+ //we got a problem
+ header('HTTP/1.0 500 Internal Server Error');
+ echo 'PATH_INFO not found';
+ exit(2);
+}
+
+//we should really use net_url_mapper here
+list($url, $type, $bookmark) = explode('/', $_SERVER['PATH_INFO']);
+
+if ($type != 'for' && $type != 'against') {
+ header('HTTP/1.0 400 Bad Request');
+ echo 'type has to be "for" or "against"';
+ exit(3);
+}
+if (!is_numeric($bookmark)) {
+ header('HTTP/1.0 400 Bad Request');
+ echo 'Bookmark must be numeric';
+ exit(4);
+}
+$bookmark = (int)$bookmark;
+
+if (!isset($GLOBALS['lastUrl']) || $GLOBALS['lastUrl'] == '') {
+ header('HTTP/1.0 412 Precondition failed');
+ echo 'Missing last URL in session';
+ exit(5);
+}
+$from = $GLOBALS['lastUrl'];
+
+
+$vs->vote($bookmark, $user, $type == 'for' ? 1 : -1);
+
+if (isset($GLOBALS['ajaxRequest']) && $GLOBALS['ajaxRequest']) {
+ //we are in ajax mode and return the badge in ajaxVote.php
+ return;
+}
+
+header('Location: ' . $from);
+?> \ No newline at end of file