}
include_once $classfile;
$classname = ucfirst($type);
// class names start with uppercase
$class = new $classname($userID, $tenantID);
$id = 0;
if (isset($_GET["id"])) {
    $id = $_GET["id"];
}
$parentid = Utility::getRequestVariable('parentid', 0);
$entity = '';
if ($id > 0) {
    try {
        $entity = $class->getEntity($id, $tenantID, $userID);
    } catch (Exception $ex) {
        Service::returnError($ex->getMessage());
    }
}
?>
	<form id="<?php 
echo $type;
?>
Form" class="form-horizontal" action="<?php 
echo $class->getDataServiceURL();
?>
" method="post" role="form">
		<div class="edit">
			<input type="hidden" id="<?php 
echo $type;
?>
id" name="id" value="<?php 
    Service::returnError('Please specify a type');
}
$coretypes = array('tenant', 'tenantSetting', 'tenantProperty', 'category', 'menuItem', 'page', 'pageCollection', 'content', 'tenantContent', 'entityList', 'entityListItem', 'propertyBag');
if (!in_array($type, $coretypes, false) && !in_array($type, Application::$knowntypes, false)) {
    // unrecognized type requested can't do much from here.
    Service::returnError('Unknown type: ' . $type, 400, 'entityService?type=' . $type);
}
$classpath = dirname(__FILE__) . '/../classes/';
if (in_array($type, $coretypes, false)) {
    // core types will be in core subfolder
    $classpath = Config::$core_path . '/classes';
}
// include appropriate dataEntity class & then instantiate it
$classfile = $classpath . '/' . $type . '.php';
if (!file_exists($classfile)) {
    Service::returnError('Internal error. Unable to process entity ' . $classfile, 400, 'entityService?type=' . $type);
}
include_once $classfile;
$classname = ucfirst($type);
// class names start with uppercase
$class = new $classname($userID, $tenantID);
$tab = '&nbsp;&nbsp;&nbsp;&nbsp;&nbsp';
function stringValue($field)
{
    if (sizeof($field) >= 3 && $field[2] == 0) {
        return 'text';
    } else {
        if (sizeof($field) < 3 || !$field[2]) {
            $length = 100;
        } else {
            $length = $field[2];
 * get parameters are:
 *      collection: name of the pageCollection to update (e.g. 'home')
 *      pageid: id of the page
 *      sort: new sort/sequence number for the page
 */
include_once dirname(__FILE__) . '/../partials/pageCheck.php';
include_once dirname(__FILE__) . '/../classes/utility.php';
include_once dirname(__FILE__) . '/../classes/service.php';
if ($_SERVER['REQUEST_METHOD'] == "POST") {
    $collection = Utility::getRequestVariable("collection", "");
    $pageid = Utility::getRequestVariable("pageid", "");
    $sort = Utility::getRequestVariable("sort", "");
    if ($collection == "") {
        Service::returnError('collection parameter is required.');
    }
    if ($pageid == "") {
        Service::returnError('pageid parameter is required.');
    }
    if ($sort == "") {
        Service::returnError('sort parameter is required.');
    }
    if (!$user->hasRole('admin', $tenantID)) {
        Service::returnError('Access denied.', 403);
    }
    $query = "call setPageSortOrderForCollection(" . Database::queryString($collection) . "," . Database::queryNumber($pageid) . "," . Database::queryNumber($sort) . "," . Database::queryNumber($tenantID) . ");";
    Database::executeQuery($query);
    $json = '{"success":true}';
    Service::returnJSON($json);
} else {
    Service::returnError('Unsupported HTTP method.');
}
Beispiel #4
0
                    Utility::debug($type . ' updated.', 5);
                    $response = '{"id":' . json_encode($id) . "}";
                    header('Content-Type: application/json');
                    echo $response;
                }
            }
            break;
        default:
            Service::returnError('Invalid action: ' . $action);
    }
} elseif ($_SERVER['REQUEST_METHOD'] == "PUT") {
    $reset = $_GET["reset"];
    $id = $_GET["id"];
    $class = new User($id, $tenantID);
    if (!$user->userCanEdit($id, $class)) {
        Service::returnError('Access denied.', 403);
    }
    if ($reset == "true") {
        try {
            $class = new User($id, $tenantID);
            $class->resetPassword();
        } catch (Exception $ex) {
            header(' ', true, 500);
            echo 'Unable to reset password:'******'REQUEST_METHOD'] == "DELETE") {
    $id = Utility::getRequestVariable('id', 0);
    if ($id == 0) {
        header(' ', true, 400);
     // a list was requested here. Different handling than regular entity set
     try {
         $totalEntities = $class->getEntityCountForList($listId);
         $entities = $class->getEntitiesFromList($listId, $numToReturn, $offset);
     } catch (Exception $ex) {
         $message = 'Unable to retrieve ' . $type . ' set count: ' . $ex->getMessage();
         Service::returnError($message);
     }
 } else {
     $totalEntities = $class->getEntityCount($_GET);
     try {
         // we pass the entire _GET collection in so object classes can extract relevant filters
         $entities = $class->getEntities($_GET, $numToReturn, $offset);
     } catch (Exception $ex) {
         $message = 'Unable to retrieve ' . $type . ' set: ' . $ex->getMessage();
         Service::returnError($message);
     }
 }
 $addSequence = isset($_GET["sequence"]) && (strtolower($_GET["sequence"]) == "yes" || strtolower($_GET["sequence"]) == "true");
 if ($addSequence) {
     for ($i = 0; $i < count($entities); $i++) {
         // computer nerds can suck it: you being numbering things with 1, not 0
         $entities[$i]["sequence"] = $i + 1;
         // but since nerds insist on making many things sequence with 0 as first element
         // we'll include this just for them
         $entities[$i]["sequence_zero"] = $i;
     }
 }
 if (strtolower($descending) == 'true' || strtolower($descending) == 'yes') {
     // reverse the sort order
     $newentities = array();
include_once dirname(__FILE__) . '/../partials/pageCheck.php';
include_once dirname(__FILE__) . '/../classes/database.php';
include_once dirname(__FILE__) . '/../classes/utility.php';
include_once dirname(__FILE__) . '/../classes/service.php';
if ($_SERVER['REQUEST_METHOD'] == "POST") {
    $event = Utility::getRequestVariable('event', 'unknown event');
    $entityType = Utility::getRequestVariable('entityType', 'unknown entity');
    $entityId = Utility::getRequestVariable('entityId', 0);
    $query = "INSERT INTO event (event,entityType,entityId,userId,sessionId,tenantId) values (";
    $query .= Database::queryString($event);
    $query .= ',' . Database::queryString($entityType);
    $query .= ',' . Database::queryNumber($entityId);
    $query .= ',' . Database::queryNumber($userID);
    $query .= ',' . Database::queryString(session_id());
    $query .= ',' . Database::queryNumber($tenantID);
    $query .= ")";
    $errorMsg = '';
    try {
        Database::executeQuery($query);
    } catch (Exception $ex) {
        $errorMsg = $ex->getMessage();
    }
    if (strlen($errorMsg) > 0) {
        Service::returnError($errorMsg);
    } else {
        Service::returnJSON('{result: true}');
    }
} else {
    echo "Unsupported HTTP method.";
}
Beispiel #7
0
 $json = file_get_contents('php://input');
 $data = json_decode($json);
 $maxDetour = 25;
 $numToReturn = 50;
 if (array_key_exists('maxDetour', $data)) {
     $maxDetour = $data->{'maxDetour'};
 }
 if (array_key_exists('return', $data)) {
     $numToReturn = $data->{'return'};
 }
 $filter = '';
 if (array_key_exists('categories', $data)) {
     $filter = getFilter($data->{'categories'});
 }
 if (!array_key_exists('points', $data)) {
     Service::returnError('An array of points must be posted to retrieve a route.');
 }
 $points = $data->{'points'};
 $rows = array();
 for ($i = 1; $i < count($points); $i++) {
     Log::debug('Processing point #' . $i . ' ' . $points[$i]->lat . ', ' . $points[$i]->lng, 1);
     $data = fetchData($points[$i - 1]->lat, $points[$i - 1]->lng, $points[$i]->lat, $points[$i]->lng, $maxDetour, $numToReturn, $filter, $tenantID, $userID);
     while ($r = mysqli_fetch_assoc($data)) {
         if (!alreadyInSet($rows, $r)) {
             $rows[] = $r;
         }
     }
 }
 Log::debug('Before trimming, row count=' . count($rows), 1);
 $set = "{\"locations\":" . json_encode($rows) . "}";
 header("Access-Control-Allow-Origin: *");
Beispiel #8
0
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_POST, True);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, True);
    curl_setopt($ch, CURLOPT_VERBOSE, True);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Authorization: token ' . Config::$github_token));
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
    curl_setopt($ch, CURLOPT_USERAGENT, 'Food Finder');
    Utility::debug('Posting issue via cUrl (url=' . $url . ')', 1);
    $response = curl_exec($ch);
    $error = '';
    if ($error = curl_error($ch)) {
        Utility::debug('cUrl exception:' . $error, 9);
    }
    curl_close($ch);
    if ($error) {
        Service::returnError('Unable to post issue to GitHub: ' . $error, 500);
    } else {
        Utility::debug('Issue service call completed successfully.', 5);
        $returnData = json_decode($response);
        if (array_key_exists('number', $returnData)) {
            $response = json_encode(array("id" => $returnData->{"number"}));
        } else {
            Service::returnError('Unable to log issue. Response from repositor: ' . $response);
        }
        //http_response_code(200);
        Service::returnJSON($response);
    }
} else {
    Service::returnError('Unsupported method.', 400, 'issue');
}
Beispiel #9
0
        try {
            $files[$i]["url"] = $cdn->putContent($sourcefile, $key, '');
            $files[$i]["thumbnailurl"] = $cdn->putContent($sourcethumb, $thumbkey, '');
        } catch (Exception $ex) {
            Service::returnError('Unable to store file in CDN: ' . $ex->getMessage());
        }
    }
    // 4. save metadata in DB
    $media = new Media($userID, $tenantID);
    foreach ($files as $file) {
        $data = (object) $file;
        try {
            $mediaid = $media->addEntity($data);
        } catch (Exception $e) {
            Service::returnError('Unable to save media record:' . $e->getMessage());
        }
        if ($locationid > 0) {
            $media->linkMediaToLocation($mediaid, $locationid);
        }
    }
    // 5. build & return response
    $output = array();
    foreach ($files as $file) {
        $set = array("name" => $file["name"], "url" => $file["url"]);
        array_push($output, $set);
    }
    $response = json_encode($output);
    Service::returnJSON($response);
} else {
    Service::returnError('Method not supported.');
}
                echo $response;
            }
        }
    }
} elseif ($_SERVER['REQUEST_METHOD'] == "DELETE") {
    $supportedtypes = array('media', 'tenantSetting', 'tenantProperty', 'menuItem', 'page');
    if (!in_array($type, $supportedtypes, false)) {
        // delete method not supported from all types
        Service::returnError('Method not supported for type: ' . $type);
    }
    // retrive required parameters
    $id = Utility::getRequestVariable('id', 0);
    if ($id == 0) {
        Service::returnError("id is required parameter and must be non-zero.");
    }
    try {
        $result = $class->deleteEntity($id);
        if (!$result) {
            Service::returnError('Unable to delete requested ' . $type . '. Unknown error.');
        }
    } catch (Exception $ex) {
        Service::returnError('Unable to delete requested ' . $type . '. ' . $ex->getMessage());
    }
    $set = json_encode(array('deleted' => $id));
    header("Access-Control-Allow-Origin: *");
    header('Content-Type: application/json');
    echo $set;
} else {
    header(' ', true, 400);
    echo "Unsupported HTTP method.";
}
include dirname(__FILE__) . '/../partials/pageCheck.php';
include_once dirname(__FILE__) . '/../classes/propertyBag.php';
include_once dirname(__FILE__) . '/../classes/service.php';
include_once dirname(__FILE__) . '/../classes/utility.php';
if ($_SERVER['REQUEST_METHOD'] == "POST") {
    // for now, must be an admin to access property bags: will have to update later if we being using propertyBags for things
    // other than system/tenant settings
    if (!$user->hasRole('admin', $tenantID)) {
        Service::returnError('Access denied.', 403, 'propertyBag');
    }
    $json = file_get_contents('php://input');
    $data = json_decode($json);
    if (!$data || !array_key_exists('name', $data)) {
        Service::returnError('PropertyBag name must be specified for an update.', 400, 'propertyBag Service');
    }
    if (!$data || !array_key_exists('properties', $data)) {
        Service::returnError('PropertyBag properties must be specified for an update.', 400, 'propertyBag Service');
    }
    $bagName = $data->{"name"};
    $properties = $data->{"properties"};
    $propertyBag = new PropertyBag($userID, $tenantID);
    foreach ($properties as $property => $value) {
        $propertyBag->putProperty($bagName, $property, $value);
    }
    header("Access-Control-Allow-Origin: *");
    header('Content-Type: application/json');
    echo json_encode($properties);
} else {
    Service::returnError('Method not supported.', 400, 'propertyBag');
}