diff options
Diffstat (limited to 'www/vote.php')
-rw-r--r-- | www/vote.php | 68 |
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 |