<?php
/**
* Module status
*/
$status = new \Broker\Status ( SITE_CACHE_DATABASE_DIR, $configuration, null );
if (isset ( $_GET ["suboperation"] ) && is_string ( $_GET ["suboperation"] ) && trim ( $_GET ["suboperation"] ) != "") {
if ($_GET ["suboperation"] == "create") {
if (strtoupper ( $_SERVER ['REQUEST_METHOD'] ) == "POST") {
header ( "Content-Type: text/javascript; charset=utf-8" );
header ( "Access-Control-Allow-Origin: *" );
header ( "Access-Control-Allow-Headers: content-type" );
echo (json_encode ( $status->create ( file_get_contents ( "php://input" ), true ) ));
} else {
header ( "Location: " . $configuration->url ( "status", null ) );
}
exit ();
} else if ($_GET ["suboperation"] == "start") {
if (strtoupper ( $_SERVER ['REQUEST_METHOD'] ) == "POST") {
header ( "Content-Type: text/javascript; charset=utf-8" );
header ( "Access-Control-Allow-Origin: *" );
header ( "Access-Control-Allow-Headers: content-type" );
$json_data = json_decode ( file_get_contents ( "php://input" ), true );
$response = array ();
$respons ["status"] = "ERROR";
if ($json_data == null || json_last_error () !== JSON_ERROR_NONE) {
$response ["error"] = "no valid json";
} else {
try {
$response = $status->start ( $json_data ["key"] );
} catch ( \Exception $e ) {
$response = array ();
$respons ["status"] = "ERROR";
$response ["error"] = $e->getMessage ();
}
}
if ($response ["status"] !== "OK") {
header ( "HTTP/1.0 500 Internal Server Error" );
if (isset ( $response ["error"] )) {
echo (json_encode ( $response ["error"] ));
}
} else {
if (isset ( $response ["response"] )) {
if (isset ( $_SERVER ["HTTP_ACCEPT_ENCODING"] ) && strpos ( $_SERVER ["HTTP_ACCEPT_ENCODING"], "gzip" ) !== false) {
header ( "Content-Encoding: gzip" );
$content = gzencode ( json_encode ( $response ["response"] ) );
} else {
$content = json_encode ( $response ["response"] );
}
header ( "Vary: Accept-Encoding" );
header ( "Content-Length: " . strlen ( $content ) );
echo ($content);
}
}
} else {
header ( "Location: " . $configuration->url ( "status", null ) );
}
exit ();
} else if ($_GET ["suboperation"] == "update") {
if (strtoupper ( $_SERVER ['REQUEST_METHOD'] ) == "POST") {
header ( "Content-Type: text/javascript; charset=utf-8" );
header ( "Access-Control-Allow-Origin: *" );
header ( "Access-Control-Allow-Headers: content-type" );
$json_data = json_decode ( file_get_contents ( "php://input" ), true );
if ($json_data == null || json_last_error () !== JSON_ERROR_NONE) {
$response = array (
"status" => "ERROR",
"error" => "no valid json"
);
echo (json_encode ( $response ));
} else {
echo (json_encode ( $status->update ( $json_data ["key"] ) ));
}
} else {
header ( "Location: " . $configuration->url ( "status", null ) );
}
exit ();
} else {
if (! $authentication->accessWithAdminPrivileges ()) {
$authentication->logout ();
header ( "Location: " . $configuration->url ( "login", "status" ) );
exit ();
} else if (preg_match ( "/^list([0-9]*)$/", $_GET ["suboperation"], $match )) {
$smarty->assign ( "_statusType", "list" );
$page = intval ( $match [1] );
if (strtolower ( $_SERVER ["REQUEST_METHOD"] ) == "post") {
if (isset ( $_POST ["key"] ) && is_string ( $_POST ["key"] ) && trim ( $_POST ["key"] ) != "") {
$key = $_POST ["key"];
if (isset ( $_POST ["action"] ) && is_string ( $_POST ["action"] ) && trim ( $_POST ["action"] ) != "") {
$action = $_POST ["action"];
if ($action == "delete") {
$status->delete ( $key );
header ( "Location: " . $configuration->url ( "status", "list" ) );
exit ();
} else if ($action == "view") {
$smarty->assign ( "_statusType", "view" );
$smarty->assign ( "_statusData", $status->get ( $key ) );
} else {
header ( "Location: " . $configuration->url ( "status", "list" ) );
exit ();
}
} else {
header ( "Location: " . $configuration->url ( "status", "list" ) );
exit ();
}
} else if (isset ( $_POST ["action"] ) && is_string ( $_POST ["action"] )) {
if ($_POST ["action"] == "clean") {
$status->clean ();
header ( "Location: " . $configuration->url ( "status", null ) );
exit ();
} else if ($_POST ["action"] == "reset") {
$status->reset ();
header ( "Location: " . $configuration->url ( "status", null ) );
exit ();
} else {
header ( "Location: " . $configuration->url ( "status", null ) );
exit ();
}
} else {
header ( "Location: " . $configuration->url ( "status", null ) );
exit ();
}
} else {
$number = 100;
$smarty->assign ( "_statusPage", $page );
$smarty->assign ( "_statusNumber", $number );
$smarty->assign ( "_statusTotal", $status->number () );
$smarty->assign ( "_statusList", $status->getList ( $page * $number, $number ) );
}
} else {
header ( "Location: " . $configuration->url ( "status", null ) );
exit ();
}
}
} else {
if (! $authentication->accessWithAdminPrivileges ()) {
$authentication->logout ();
header ( "Location: " . $configuration->url ( "login", "status" ) );
} else {
$smarty->assign ( "_statusType", null );
$smarty->assign ( "_statusTotal", $status->number () );
}
}
?>