blob: 91f5c34db66369f7bbf9f9c403e13c344cc22e12 (
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
|
<?php
/**
* We do expect three parameters:
* - type (for/against)
* - bookmark id
* - url we shall redirect to (?from=)
*
* vote/for/123?from=xyz
*/
require_once '../src/SemanticScuttle/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 'need a logged on user';
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($_GET['from']) || $_GET['from'] == '') {
header('HTTP/1.0 400 Bad Request');
echo 'Missing "from" parameter';
exit(5);
}
$from = $_GET['from'];
if ($vs->hasVoted($bookmark, $user)) {
//already voted
header('HTTP/1.0 412 Precondition failed');
echo 'Bookmark has been already voted for';
exit(6);
}
$vs->vote($bookmark, $user, $type == 'for' ? 1 : -1);
header('Location: ' . $from);
?>
|