Newer
Older
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
<?php
require_once(INCLUDE_DIR . 'class.sequence.php');
class SequenceAjaxAPI extends AjaxController {
/**
* Ajax: GET /sequence/<id>
*
* Fetches the current value of a sequence
*
* Get-Arguments:
* format - (string) format string used to format the current value of
* the sequence.
*
* Returns:
* (string) Current sequence number, optionally formatted
*
* Throws:
* 403 - Not logged in
* 404 - Unknown sequence id
* 422 - Invalid sequence id
*/
function current($id) {
global $thisstaff;
if (!$thisstaff)
Http::response(403, 'Login required');
elseif ($id == 0)
$sequence = new RandomSequence();
elseif (!$id || !is_numeric($id))
Http::response(422, 'Id is required');
elseif (!($sequence = Sequence::lookup($id)))
Http::response(404, 'No such object');
return $sequence->current($_GET['format']);
}
/**
* Ajax: GET|POST /sequence/manage
*
* Gets a dialog box content or updates data from the content
*
* Post-Arguments:
* seq[<id>][*] - Updated information for existing sequences
* seq[<new-*>[*] - Information for new sequences
* seq[<id>][deleted] - If set to true, indicates that the sequence
* should be deleted from the database
*
* Throws:
* 403 - Not logged in
* 422 - Information sent for update of unknown sequence
*/
function manage() {
global $thisstaff;
if (!$thisstaff)
Http::response(403, 'Login required');
$sequences = Sequence::objects()->all();
$info = array(
'action' => '#sequence/manage',
);
$valid = true;
if ($_POST) {
foreach ($_POST['seq'] as $id=>$info) {
if (strpos($id, 'new-') === 0) {
unset($info['id']);
$sequences[] = Sequence::create($info);
}
else {
foreach ($sequences as $s) {
if ($s->id == $id)
break;
$s = false;
}
if (!$s) {
Http::response(422, $id . ': Invalid or unknown sequence');
}
elseif ($info['deleted']) {
$s->delete();
continue;
}
foreach ($info as $f=>$val) {
if (isset($s->{$f}))
$s->set($f, $val);
elseif ($f == 'current')
$s->next = $val;
}
if (($v = $s->isValid()) !== true) {
$msg = sprintf('%s: %s', $s->getName(), $valid);
$valid = false;
}
}
}
if ($valid) {
foreach ($sequences as $s)
$s->save();
Http::response(205, 'All sequences updated');
}
}
include STAFFINC_DIR . 'templates/sequence-manage.tmpl.php';
}
}