119 lines
3.2 KiB
PHP
119 lines
3.2 KiB
PHP
<?php
|
|
|
|
/* Requests Handler */
|
|
|
|
//Start buffering
|
|
ob_start();
|
|
|
|
//Run from /dist/
|
|
$oLoader = require __DIR__.'/../vendor/autoload.php';
|
|
|
|
use Franzz\Objects\ToolBox;
|
|
use Franzz\Spot\Spot;
|
|
use Franzz\Spot\User;
|
|
|
|
ToolBox::fixGlobalVars($argv ?? array());
|
|
|
|
//Available variables
|
|
$sAction = $_REQUEST['a'] ?? '';
|
|
$sTimezone = $_REQUEST['t'] ?? '';
|
|
$sName = $_REQUEST['name'] ?? '';
|
|
$sContent = $_REQUEST['content'] ?? '';
|
|
$iProjectId = Spot::validatePositiveInt($_REQUEST['id_project'] ?? 0);
|
|
$sRefId = $_REQUEST['id'] ?? 0;
|
|
$iEntityId = Spot::validatePositiveInt($_REQUEST['id'] ?? 0);
|
|
$sField = $_REQUEST['field'] ?? '';
|
|
$oValue = $_REQUEST['value'] ?? '';
|
|
$sType = $_REQUEST['type'] ?? '';
|
|
$sEmail = $_REQUEST['email'] ?? '';
|
|
$sLat = $_REQUEST['latitude'] ?? '';
|
|
$sLng = $_REQUEST['longitude'] ?? '';
|
|
$iTimestamp = Spot::validatePositiveInt($_REQUEST['timestamp'] ?? 0);
|
|
$sCsrfToken = $_SERVER['HTTP_X_CSRF_TOKEN'] ?? ($_POST['csrf_token'] ?? '');
|
|
|
|
//Initiate class
|
|
$oSpot = new Spot(__FILE__, $sTimezone);
|
|
$oSpot->setProjectId($iProjectId);
|
|
|
|
$bValidRequest = $oSpot->validateMutationRequest($sAction, $sCsrfToken);
|
|
if(!$bValidRequest) $sResult = Spot::getJsonResult(false, Spot::UNAUTHORIZED);
|
|
elseif($sAction == '') $sResult = $oSpot->getAppMainPage();
|
|
else
|
|
{
|
|
switch($sAction)
|
|
{
|
|
case 'markers':
|
|
$sResult = $oSpot->getMarkers();
|
|
break;
|
|
case 'last_update':
|
|
$sResult = $oSpot->getLastUpdate();
|
|
break;
|
|
case 'geojson':
|
|
$sResult = $oSpot->getProjectGeoJson();
|
|
break;
|
|
case 'next_feed':
|
|
$sResult = $oSpot->getNextFeed($sRefId);
|
|
break;
|
|
case 'new_feed':
|
|
$sResult = $oSpot->getNewFeed($sRefId);
|
|
break;
|
|
case 'add_post':
|
|
$sResult = $oSpot->addPost($sName, $sContent);
|
|
break;
|
|
case 'subscribe':
|
|
$sResult = $oSpot->subscribe($sEmail, $sName);
|
|
break;
|
|
case 'unsubscribe':
|
|
$sResult = $oSpot->unsubscribe();
|
|
break;
|
|
case 'unsubscribe_email':
|
|
$sResult = $oSpot->unsubscribeFromEmail($iEntityId);
|
|
break;
|
|
case 'update_project':
|
|
$sResult = $oSpot->updateProject();
|
|
break;
|
|
default:
|
|
if($oSpot->checkUserClearance(User::CLEARANCE_ADMIN))
|
|
{
|
|
switch($sAction)
|
|
{
|
|
case 'upload':
|
|
$sResult = $oSpot->upload();
|
|
break;
|
|
case 'add_comment':
|
|
$sResult = $oSpot->addComment($iEntityId, $sContent);
|
|
break;
|
|
case 'add_position':
|
|
$sResult = $oSpot->addPosition($sLat, $sLng, $iTimestamp);
|
|
break;
|
|
case 'admin_get':
|
|
$sResult = $oSpot->getAdminSettings();
|
|
break;
|
|
case 'admin_set':
|
|
$sResult = $oSpot->setAdminSettings($sType, $iEntityId, $sField, $oValue);
|
|
break;
|
|
case 'admin_create':
|
|
$sResult = $oSpot->createAdminSettings($sType);
|
|
break;
|
|
case 'admin_delete':
|
|
$sResult = $oSpot->deleteAdminSettings($sType, $iEntityId);
|
|
break;
|
|
case 'sql':
|
|
$sResult = $oSpot->getDbBuildScript();
|
|
break;
|
|
case 'build_geojson':
|
|
$sResult = $oSpot->buildGeoJSON($sName);
|
|
break;
|
|
default:
|
|
$sResult = Spot::getJsonResult(false, Spot::NOT_FOUND);
|
|
}
|
|
}
|
|
else $sResult = Spot::getJsonResult(false, Spot::NOT_FOUND);
|
|
}
|
|
}
|
|
|
|
$sDebug = ob_get_clean();
|
|
if(Settings::DEBUG && $sDebug!='') $oSpot->addUncaughtError($sDebug);
|
|
|
|
echo $sResult;
|