/** * Constructor * @param string $pType * @throws \Exception */ public function __construct($pType = self::TYPE_JS) { $this->type = $pType; switch ($this->type) { case self::TYPE_JS: Header::content_type("application/javascript"); break; case self::TYPE_CSS: Header::content_type("text/css"); break; } /** * Load manifest */ if (!file_exists(self::MANIFEST)) { $this->output($this->log("Manifest file '" . self::MANIFEST . "' not found", "error")); } $this->manifest = SimpleJSON::import(self::MANIFEST); $this->configuration = isset($this->manifest["config"]) ? $this->manifest["config"] : array(); unset($this->manifest["config"]); /** * Cache */ $cacheDuration = Stack::get("cache.duration", $this->configuration); if (!empty($cacheDuration)) { $eTag = md5($_GET["need"]); Header::handleCache($eTag, $cacheDuration); } }
public function retrieve_states() { if (!Core::checkRequiredGetVars('id_link')) { Core::performResponse('Missing argument'); } $m = new ModelLink(); $s = $m->getStatesByLink($_GET['id_link']); Core::performResponse(SimpleJSON::encode($s), 'json'); }
/** * @param GAQuery $pQuery * @return array */ public function retrieveData(GAQuery $pQuery) { if (!$this->isAuth()) { return null; } $r = new Request($pQuery->get()); $header[] = 'Authorization: GoogleLogin auth=' . $this->getAuth(); $r->setOption(CURLOPT_SSL_VERIFYPEER, 0); $r->setOption(CURLOPT_HTTPHEADER, $header); $r->setOption(CURLOPT_HEADER, false); return SimpleJSON::decode($r->execute()); }
public function details() { if (!Core::checkRequiredGetVars('id', 'tab')) { Go::to404(); } if (!Core::checkRequiredGetVars('no-async')) { Core::deactivateDebug(); } $details = $this->model_link->details($_GET['id']); $s = array_reverse($this->model_link->getStatesByLink($_GET['id'])); $this->addContent('states', str_replace('"', "'", SimpleJSON::encode($s))); $this->addContent('details', $details); $this->addContent('tab', $_GET['tab']); }
public function scrap() { if (!isset($_POST) || !isset($_POST["url"])) { Core::performResponse(SimpleJSON::encode(array("error" => "Url missing.")), "json"); } $return = array("request" => array("post" => $_POST)); $url = $_POST["url"]; $m = new ModelPost(); try { $return["data"] = $m->retrieveDataFrom($url); } catch (\Exception $e) { Core::performResponse(SimpleJSON::encode(array("error" => "Unable to retrieve infos.", "details" => $e->getMessage())), "json"); } Core::performResponse(SimpleJSON::encode($return), "json"); }
public function update() { if (!Core::checkRequiredGetVars('permalink_list', 'prop_list') || !isset($_POST) || empty($_POST) || !isset($_POST['value']) || empty($_POST['value'])) { Go::to404(); } $m = new ModelList(); $list = $m->one(Query::condition()->andWhere('permalink_list', Query::EQUAL, $_GET['permalink_list'])); if (!$list) { Go::to404(); } $name = $_GET['prop_list']; if ($m->updateById($list['id_list'], array($name => $_POST['value']))) { $response = array("message" => "ok"); } else { $response = array("error", "Unable to perform an update on field '" . $name . "'"); } $response = SimpleJSON::encode($response); Core::performResponse($response, 'json'); }
public function __construct($pFile) { if (!file_exists($pFile)) { return; } $this->items = SimpleJSON::import($pFile); if (!$this->items) { trigger_error('[Object Menu] No Items loaded', E_USER_NOTICE); } foreach ($this->items as &$item) { if (!isset($item['parameters'])) { $item['parameters'] = array(); } if (!isset($item['controller'])) { $item['controller'] = ''; } if (!isset($item['action'])) { $item['action'] = ''; } $item['current'] = Core::$controller == $item['controller'] && Core::$action == $item['action']; $item['url'] = Core::rewriteURL($item['controller'], $item['action'], $item['parameters']); } }
/** * ATTENTION AU NAME DE L'INPUT * ==> FORM[INPUTNAME] <== * * ATTENTION A LA TECHNIQUE DE RENVOIE D'INFORMATION !Méthode privée * * @return void */ public function upload_async() { $datas = null; $response = array("error" => ""); if (!isset($_POST["form_name"]) || empty($_POST["form_name"])) { $response["error"] = '$_POST["form_name"] require'; $this->response($response); } if (!isset($_POST["input_name"]) || empty($_POST["input_name"])) { $response["error"] = '$_POST["input_name"] require'; $this->response($response); } $file = $_FILES[$_POST["input_name"]]; if (!isset($file) || empty($file)) { $response["error"] = "Aucun fichier n'a été transmis"; } if (empty($response["error"])) { $app = $_POST["application"]; $path_to_form = "includes/applications/" . $app . "/modules/"; if (isset($_POST["module"]) && !empty($_POST['module'])) { $path_to_form .= $_POST["module"] . "/"; } else { $path_to_form .= "front/"; } $form_name = $_POST["form_name"]; $path_to_form .= "forms/form." . $form_name . ".json"; if (!file_exists($path_to_form)) { $path_to_form = preg_replace("/_[0-9]+\\.json\$/", ".json", $path_to_form); } try { $datas = SimpleJSON::import($path_to_form); } catch (Exception $e) { $response["error"] = "Formulaire introuvable " . $path_to_form; $this->response($response); } if (!is_array($datas[$_POST["input_name"]])) { $response["error"] = "Champs ciblé introuvable"; $this->response($response); } $input = $datas[$_POST["input_name"]]; if ($input["tag"] != Form::TAG_UPLOAD && ($input["tag"] != "input" && $input["attributes"]["type"] != "file")) { $response["error"] = "Le champ ciblé n'est pas un input type 'file'"; $this->response($response); } $fileName = ""; if (isset($input["fileName"])) { $fileName = "file" . rand(0, 999999); } $folderName = Form::PATH_TO_UPLOAD_FOLDER; if (isset($input["folder"])) { $folderName .= $input["folder"]; } $upload = new Upload($file, $folderName, $fileName); if (isset($input["resize"]) && is_array($input["resize"])) { $upload->resizeImage($input["resize"][0], $input["resize"][1]); } if (!$upload->isMimeType($input["fileType"])) { $response["error"] = "Type de fichier non-autorisé (" . $input["fileType"] . ")"; $this->response($response); } try { $upload->send(); } catch (Exception $e) { $response["error"] = "Upload impossible"; $this->response($response); } if (isset($input["fileName"]) && !empty($input["fileName"])) { $fileName = preg_replace("/(\\{id\\})/", $upload->id_upload, $input["fileName"]); $upload->renameFile($fileName); } $response["path_upload"] = Application::getInstance()->getPathPart() . $upload->pathFile; $response["id_upload"] = $upload->id_upload; } $this->response($response); }
/** * Constructor * Récupére et parse le fichier JSON de configuration du formulaire * @param $pName * @param bool $pReal * @throws Exception */ public function __construct($pName, $pReal = true) { $this->name = $pName; if (!$pReal) { return; } $module = Core::$module; $formFile = Core::$path_to_application . "/modules/" . $module . "/forms/form." . $pName . ".json"; try { $this->data = SimpleJSON::import($formFile); } catch (Exception $e) { throw new Exception("Le formulaire <b>" . $pName . "</b> est introuvable"); } if (!$this->data) { throw new Exception("Impossible de parser le fichier de déclaration du formulaire <b>" . $pName . "</b>, veuillez vérifier le formatage des données (guillements, virgules, accents...)."); } }
/** * @static * @param DefaultController|null $pController * @param null $pAction * @param string $pTemplate * @return void */ public static function execute($pController = null, $pAction = null, $pTemplate = "") { if ($pController != "statique") { $pController->setTemplate(self::$controller, self::$action, $pTemplate); } if ($pAction != null) { $pController->{$pAction}(); } if (!Core::$request_async) { Header::content_type("text/html"); $pController->render(); if (Core::debug()) { Debugger::render(); } } else { $return = $pController->getGlobalVars(); $return = array_merge($return, Debugger::getGlobalVars()); if (isset($_POST) && isset($_POST["render"]) && $_POST["render"] != "false") { $return["html"] = $pController->render(false); } $response = SimpleJSON::encode($return); $type = "json"; self::performResponse($response, $type); } }
/** * Méthode de définition du contexte en fonction du fichier de routing & de l'url * @param string $pUrl * @return array|null */ private static function handleRoutingRules($pUrl) { if (empty($pUrl)) { $pUrl = "/"; } $request_url = $pUrl; $parameters = array(); $rules_file = Core::$path_to_application . "/src/routing_rules.json"; try { $rules = SimpleJSON::import($rules_file); } catch (Exception $e) { return null; } $index_parameters = array(); $rules = $rules[Core::$module]; if (!$rules) { trigger_error("Le module '" . Core::$module . "' ne dispose d'aucune règle dans le fichier de routing.", E_USER_ERROR); } $request_method = $_SERVER['REQUEST_METHOD']; $final_rule = null; foreach ($rules as $url => $rule) { $re_url = $url; $re_url = str_replace('/', '\\/', $re_url); $re_url = str_replace('.', '\\.', $re_url); $index_param = 0; if (!isset($rule["parameters"])) { $rule["parameters"] = array(); } foreach ($rule["parameters"] as $name => $re) { if (!preg_match('/\\{\\$' . $name . '\\}/', $re_url)) { $parameters[$name] = $re; continue; } $index_parameters[++$index_param] = $name; $re_url = preg_replace('/\\{\\$' . $name . '\\}/', '(' . $re . ')', $re_url); } $re_url = "/^" . $re_url . '$/'; if (!preg_match($re_url, $request_url, $matches)) { continue; } for ($k = 1, $maxk = count($matches); $k < $maxk; $k++) { $parameters[$index_parameters[$k]] = $matches[$k]; } unset($rule['parameters']); if (isset($rule[$request_method]) && !empty($rule[$request_method])) { $final_rule = $rule[$request_method]; } else { $allowed_methods = array_keys($rule); foreach ($allowed_methods as $m) { if (preg_match('/\\|*' . $request_method . '\\|*/', $m, $matches)) { $final_rule = $rule[$m]; } } } if (!$final_rule && isset($rule[self::HTTP_METHOD_WILDCARD]) && !empty($rule[self::HTTP_METHOD_WILDCARD])) { $final_rule = $rule[self::HTTP_METHOD_WILDCARD]; } if (!$final_rule) { return null; } if (isset($parameters["controller"]) && !empty($parameters["controller"])) { $final_rule["controller"] = $parameters["controller"]; unset($parameters["controller"]); } if (isset($parameters["action"]) && !empty($parameters["action"])) { $final_rule["action"] = $parameters["action"]; unset($parameters["action"]); } $final_rule['parameters'] = $parameters; return $final_rule; } return null; }