api export for all shifts

This commit is contained in:
Philip Häusler 2013-12-09 17:10:07 +01:00
parent 9a1ffdf198
commit ad5899f028
7 changed files with 125 additions and 15 deletions

View File

@ -1,5 +1,29 @@
<?php
/**
* Export all shifts using api-key.
*/
function shifts_json_export_all_controller() {
global $api_key;
if ($api_key == "")
die("Config contains empty apikey.");
if (! isset($_REQUEST['api_key']))
die("Missing parameter api_key.");
if ($_REQUEST['api_key'] != $api_key)
die("Invalid api_key.");
$shifts_source = Shifts();
if ($shifts_source === false)
die("Unable to load shifts.");
header("Content-Type: application/json; charset=utf-8");
echo json_encode($shifts_source);
die();
}
/**
* Export filtered shifts via JSON.
* (Like iCal Export or shifts view)

View File

@ -0,0 +1,35 @@
<?php
/**
* Returns all needed angeltypes and already taken needs.
*
* @param Shift $shift
*/
function NeededAngelTypes_by_shift($shift) {
$needed_angeltypes_source = sql_select("
SELECT `NeededAngelTypes`.*, `AngelTypes`.`name`, `AngelTypes`.`restricted`
FROM `NeededAngelTypes`
JOIN `AngelTypes` ON `AngelTypes`.`id` = `NeededAngelTypes`.`angel_type_id`
WHERE `shift_id`=" . sql_escape($shift['SID']) . "
OR `room_id`=" . sql_escape($shift['RID']) . "
ORDER BY `room_id` DESC
");
if ($needed_angeltypes === false)
return false;
$needed_angeltypes = array();
foreach ($needed_angeltypes_source as $angeltype)
$needed_angeltypes[$angeltype['id']] = $angeltype;
foreach ($needed_angeltypes as &$angeltype) {
$shift_entries = ShiftEntries_by_shift_and_angeltype($shift['SID'], $angeltype['id']);
if ($shift_entries === false)
return false;
$angeltype['taken'] = count($shift_entries);
}
return $needed_angeltypes;
}
?>

View File

@ -0,0 +1,17 @@
<?php
/**
* Returns all shift entries in given shift for given angeltype.
* @param int $shift_id
* @param int $angeltype_id
*/
function ShiftEntries_by_shift_and_angeltype($shift_id, $angeltype_id) {
return sql_select("
SELECT *
FROM `ShiftEntries`
WHERE `SID`=" . sql_escape($shift_id) . "
AND `TID`=" . sql_escape($angeltype_id) . "
");
}
?>

View File

@ -0,0 +1,24 @@
<?php
/**
* Returns all shifts with needed angeltypes and count of subscribed jobs.
*/
function Shifts() {
$shifts_source = sql_select("
SELECT `Shifts`.*, `Room`.`RID`, `Room`.`Name` as `room_name`
FROM `Shifts`
JOIN `Room` ON `Room`.`RID` = `Shifts`.`RID`
");
if ($shifts_source === false)
return false;
foreach ($shifts_source as &$shift) {
$needed_angeltypes = NeededAngelTypes_by_shift($shift);
if ($needed_angeltypes === false)
return false;
$shift['angeltypes'] = $needed_angeltypes;
}
}
?>

View File

@ -1,8 +1,8 @@
msgid ""
msgstr ""
"Project-Id-Version: Engelsystem 2.0\n"
"POT-Creation-Date: 2013-12-03 16:28+0100\n"
"PO-Revision-Date: 2013-12-03 16:28+0100\n"
"POT-Creation-Date: 2013-12-03 16:58+0100\n"
"PO-Revision-Date: 2013-12-03 16:59+0100\n"
"Last-Translator: msquare <msquare@notrademark.de>\n"
"Language-Team: \n"
"Language: de_DE\n"

View File

@ -11,6 +11,8 @@ require_once ('includes/sys_page.php');
require_once ('includes/sys_template.php');
require_once ('includes/model/LogEntries_model.php');
require_once ('includes/model/NeededAngelTypes_model.php');
require_once ('includes/model/Shifts_model.php');
require_once ('includes/model/User_model.php');
require_once ('includes/view/Questions_view.php');
@ -59,9 +61,14 @@ load_auth();
if (isset($_REQUEST['auth']))
json_auth_service();
$api_pages = array(
'stats',
'shifts_json_export_all'
);
// Gewünschte Seite/Funktion
$p = isset($user) ? "news" : "login";
if (isset($_REQUEST['p']) && preg_match("/^[a-z0-9_]*$/i", $_REQUEST['p']) && ($_REQUEST['p'] == 'stats' || (sql_num_query("SELECT * FROM `Privileges` WHERE `name`='" . sql_escape($_REQUEST['p']) . "' LIMIT 1") > 0)))
if (isset($_REQUEST['p']) && preg_match("/^[a-z0-9_]*$/i", $_REQUEST['p']) && (in_array($_REQUEST['p'], $api_pages) || (sql_num_query("SELECT * FROM `Privileges` WHERE `name`='" . sql_escape($_REQUEST['p']) . "' LIMIT 1") > 0)))
$p = $_REQUEST['p'];
$title = $p;
@ -76,6 +83,9 @@ if ($p == "ical") {
} elseif ($p == "shifts_json_export") {
require_once ('includes/controller/shifts_controller.php');
shifts_json_export_controller();
} elseif ($p == "shifts_json_export_all") {
require_once ('includes/controller/shifts_controller.php');
shifts_json_export_all_controller();
} elseif ($p == "stats") {
require_once ('includes/pages/guest_stats.php');
guest_stats();