api export for all shifts
This commit is contained in:
parent
9a1ffdf198
commit
ad5899f028
|
@ -1,17 +1,41 @@
|
||||||
<?php
|
<?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.
|
* Export filtered shifts via JSON.
|
||||||
* (Like iCal Export or shifts view)
|
* (Like iCal Export or shifts view)
|
||||||
*/
|
*/
|
||||||
function shifts_json_export_controller() {
|
function shifts_json_export_controller() {
|
||||||
global $ical_shifts, $user;
|
global $ical_shifts, $user;
|
||||||
|
|
||||||
if (isset($_REQUEST['key']) && preg_match("/^[0-9a-f]{32}$/", $_REQUEST['key']))
|
if (isset($_REQUEST['key']) && preg_match("/^[0-9a-f]{32}$/", $_REQUEST['key']))
|
||||||
$key = $_REQUEST['key'];
|
$key = $_REQUEST['key'];
|
||||||
else
|
else
|
||||||
die("Missing key.");
|
die("Missing key.");
|
||||||
|
|
||||||
$user = User_by_api_key($key);
|
$user = User_by_api_key($key);
|
||||||
if ($user === false)
|
if ($user === false)
|
||||||
die("Unable to find user.");
|
die("Unable to find user.");
|
||||||
|
@ -19,14 +43,14 @@ function shifts_json_export_controller() {
|
||||||
die("Key invalid.");
|
die("Key invalid.");
|
||||||
if (! in_array('shifts_json_export', privileges_for_user($user['UID'])))
|
if (! in_array('shifts_json_export', privileges_for_user($user['UID'])))
|
||||||
die("No privilege for shifts_json_export.");
|
die("No privilege for shifts_json_export.");
|
||||||
|
|
||||||
if (isset($_REQUEST['export']) && $_REQUEST['export'] == 'user_shifts') {
|
if (isset($_REQUEST['export']) && $_REQUEST['export'] == 'user_shifts') {
|
||||||
require_once ('includes/pages/user_shifts.php');
|
require_once ('includes/pages/user_shifts.php');
|
||||||
view_user_shifts();
|
view_user_shifts();
|
||||||
} else {
|
} else {
|
||||||
$ical_shifts = sql_select("SELECT `Shifts`.*, `Room`.`Name` as `room_name` FROM `ShiftEntry` INNER JOIN `Shifts` ON (`ShiftEntry`.`SID` = `Shifts`.`SID`) INNER JOIN `Room` ON (`Shifts`.`RID` = `Room`.`RID`) WHERE `UID`=" . sql_escape($user['UID']) . " ORDER BY `start`");
|
$ical_shifts = sql_select("SELECT `Shifts`.*, `Room`.`Name` as `room_name` FROM `ShiftEntry` INNER JOIN `Shifts` ON (`ShiftEntry`.`SID` = `Shifts`.`SID`) INNER JOIN `Room` ON (`Shifts`.`RID` = `Room`.`RID`) WHERE `UID`=" . sql_escape($user['UID']) . " ORDER BY `start`");
|
||||||
}
|
}
|
||||||
|
|
||||||
header("Content-Type: application/json; charset=utf-8");
|
header("Content-Type: application/json; charset=utf-8");
|
||||||
echo json_encode($ical_shifts);
|
echo json_encode($ical_shifts);
|
||||||
die();
|
die();
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
|
@ -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) . "
|
||||||
|
");
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
?>
|
Binary file not shown.
|
@ -1,8 +1,8 @@
|
||||||
msgid ""
|
msgid ""
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: Engelsystem 2.0\n"
|
"Project-Id-Version: Engelsystem 2.0\n"
|
||||||
"POT-Creation-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:28+0100\n"
|
"PO-Revision-Date: 2013-12-03 16:59+0100\n"
|
||||||
"Last-Translator: msquare <msquare@notrademark.de>\n"
|
"Last-Translator: msquare <msquare@notrademark.de>\n"
|
||||||
"Language-Team: \n"
|
"Language-Team: \n"
|
||||||
"Language: de_DE\n"
|
"Language: de_DE\n"
|
||||||
|
|
|
@ -11,6 +11,8 @@ require_once ('includes/sys_page.php');
|
||||||
require_once ('includes/sys_template.php');
|
require_once ('includes/sys_template.php');
|
||||||
|
|
||||||
require_once ('includes/model/LogEntries_model.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/model/User_model.php');
|
||||||
|
|
||||||
require_once ('includes/view/Questions_view.php');
|
require_once ('includes/view/Questions_view.php');
|
||||||
|
@ -23,7 +25,7 @@ require_once ('includes/helper/message_helper.php');
|
||||||
require_once ('includes/helper/error_helper.php');
|
require_once ('includes/helper/error_helper.php');
|
||||||
|
|
||||||
require_once ('config/config.default.php');
|
require_once ('config/config.default.php');
|
||||||
if(file_exists('config/config.php'))
|
if (file_exists('config/config.php'))
|
||||||
require_once ('config/config.php');
|
require_once ('config/config.php');
|
||||||
|
|
||||||
require_once ('includes/pages/admin_active.php');
|
require_once ('includes/pages/admin_active.php');
|
||||||
|
@ -58,10 +60,15 @@ load_auth();
|
||||||
// JSON Authorisierung gewünscht?
|
// JSON Authorisierung gewünscht?
|
||||||
if (isset($_REQUEST['auth']))
|
if (isset($_REQUEST['auth']))
|
||||||
json_auth_service();
|
json_auth_service();
|
||||||
|
|
||||||
// Gewünschte Seite/Funktion
|
$api_pages = array(
|
||||||
|
'stats',
|
||||||
|
'shifts_json_export_all'
|
||||||
|
);
|
||||||
|
|
||||||
|
// Gewünschte Seite/Funktion
|
||||||
$p = isset($user) ? "news" : "login";
|
$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'];
|
$p = $_REQUEST['p'];
|
||||||
|
|
||||||
$title = $p;
|
$title = $p;
|
||||||
|
@ -76,6 +83,9 @@ if ($p == "ical") {
|
||||||
} elseif ($p == "shifts_json_export") {
|
} elseif ($p == "shifts_json_export") {
|
||||||
require_once ('includes/controller/shifts_controller.php');
|
require_once ('includes/controller/shifts_controller.php');
|
||||||
shifts_json_export_controller();
|
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") {
|
} elseif ($p == "stats") {
|
||||||
require_once ('includes/pages/guest_stats.php');
|
require_once ('includes/pages/guest_stats.php');
|
||||||
guest_stats();
|
guest_stats();
|
||||||
|
@ -186,13 +196,13 @@ if (isset($user) && $p != "user_messages")
|
||||||
// Hinweis für Engel, die noch nicht angekommen sind
|
// Hinweis für Engel, die noch nicht angekommen sind
|
||||||
if (isset($user) && $user['Gekommen'] == 0)
|
if (isset($user) && $user['Gekommen'] == 0)
|
||||||
$content = error(_("You are not marked as arrived. Please go to heaven's desk, get your angel badge and/or tell them that you arrived already."), true) . $content;
|
$content = error(_("You are not marked as arrived. Please go to heaven's desk, get your angel badge and/or tell them that you arrived already."), true) . $content;
|
||||||
|
|
||||||
if(isset($user) && $enable_tshirt_size && $user['Size'] == "")
|
if (isset($user) && $enable_tshirt_size && $user['Size'] == "")
|
||||||
$content = error(_("You need to specify a tshirt size in your settings!"), true) . $content;
|
$content = error(_("You need to specify a tshirt size in your settings!"), true) . $content;
|
||||||
|
|
||||||
if(isset($user) && $user['DECT'] == "")
|
if (isset($user) && $user['DECT'] == "")
|
||||||
$content = error(_("You need to specify a DECT phone number in your settings! If you don't have a DECT phone, just enter \"-\"."), true) . $content;
|
$content = error(_("You need to specify a DECT phone number in your settings! If you don't have a DECT phone, just enter \"-\"."), true) . $content;
|
||||||
|
|
||||||
// Erzengel Hinweis für unbeantwortete Fragen
|
// Erzengel Hinweis für unbeantwortete Fragen
|
||||||
if (isset($user) && $p != "admin_questions")
|
if (isset($user) && $p != "admin_questions")
|
||||||
$content = admin_new_questions() . $content;
|
$content = admin_new_questions() . $content;
|
||||||
|
@ -208,7 +218,7 @@ echo template_render('../templates/layout.html', array(
|
||||||
'menu' => make_menu(),
|
'menu' => make_menu(),
|
||||||
'content' => $content,
|
'content' => $content,
|
||||||
'header_toolbar' => header_toolbar(),
|
'header_toolbar' => header_toolbar(),
|
||||||
'faq_url' => $faq_url
|
'faq_url' => $faq_url
|
||||||
));
|
));
|
||||||
|
|
||||||
counter();
|
counter();
|
||||||
|
|
Loading…
Reference in New Issue