Draft v1
This commit is contained in:
145
CLASSES/core/LE_MOD_CONTROLLER.php
Normal file
145
CLASSES/core/LE_MOD_CONTROLLER.php
Normal file
@@ -0,0 +1,145 @@
|
||||
<?php
|
||||
abstract class LE_MOD_CONTROLLER
|
||||
{
|
||||
public $aliases, $params_url, $model,$cont_type;
|
||||
|
||||
|
||||
function __construct($params_url=false,&$model=false)
|
||||
{
|
||||
$this->params_url = $params_url;
|
||||
$this->model = &$model;
|
||||
}
|
||||
|
||||
//точка входа
|
||||
public function start()
|
||||
{
|
||||
//ajax methods
|
||||
if (isset($_POST['ajax'])) return $this->ajax();
|
||||
|
||||
if (LE::$QUERY_DATA_TYPE=='json') return $this->json();
|
||||
|
||||
|
||||
list($mod,$params) = $this->router();
|
||||
|
||||
if (!empty($mod) && isset($this->aliases[$mod])) $mod = $this->aliases[$mod];
|
||||
|
||||
$mod = "_inp_".$mod;
|
||||
|
||||
|
||||
|
||||
if ($mod=="_inp_" || !method_exists($this,$mod)) return $this->_inp_default($params);
|
||||
|
||||
return $this->$mod($params);
|
||||
}
|
||||
|
||||
protected function router()
|
||||
{
|
||||
//echo_arr($this->params_url);
|
||||
$url = $this->params_url[3];
|
||||
$url = PRE::DOWN($url);
|
||||
preg_match('!([^:]*)[:]?(.*)!ui',$url,$out);
|
||||
|
||||
//echo_arr($out);
|
||||
return [$out[1],$out[2]];
|
||||
}
|
||||
|
||||
protected function ajax()
|
||||
{
|
||||
//out without template
|
||||
if (property_exists(LE::$TPL,'clear')) LE::$TPL->clear=1;
|
||||
|
||||
$mod = trim(arr_v($_POST,'mod',''));
|
||||
if (empty($mod)) return false;
|
||||
|
||||
$mod = "_ajx_".$mod;
|
||||
|
||||
$data=false;
|
||||
if (isset($_POST['data']))
|
||||
{
|
||||
$data = $_POST['data'];
|
||||
if (!is_array($data) && !empty($data)) $data = json_decode($data,1);
|
||||
}
|
||||
|
||||
if (!method_exists($this,$mod)) return false;
|
||||
|
||||
$res = $this->$mod($data);
|
||||
|
||||
|
||||
//возвращать массив ответа как есть, не оборачивая в data
|
||||
if (isset($res['as_is']) && $res['as_is'])
|
||||
{
|
||||
unset($res['as_id']);
|
||||
$out = $res;
|
||||
}
|
||||
|
||||
elseif ($res===false)
|
||||
{
|
||||
$out = ['success'=>0]; //error
|
||||
}
|
||||
else
|
||||
{
|
||||
$out = ['success'=>1];
|
||||
$out['data'] = $res;
|
||||
}
|
||||
|
||||
return json_encode($out);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
protected function _inp_default($inp)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
protected function json()
|
||||
{
|
||||
$postData = file_get_contents('php://input');
|
||||
$data = json_decode($postData,1);
|
||||
|
||||
if (property_exists(LE::$TPL,'clear')) LE::$TPL->clear=1;
|
||||
|
||||
|
||||
$method = trim(arr_v($data,'method',''));
|
||||
if (empty($method)) return false;
|
||||
|
||||
$method = "_ajx_".$method;
|
||||
|
||||
|
||||
|
||||
if (!method_exists($this,$method)) return false;
|
||||
|
||||
unset($data['method']);
|
||||
$res = $this->$method($data);
|
||||
|
||||
|
||||
//возвращать массив ответа как есть, не оборачивая в data
|
||||
if (isset($res['as_is']) && $res['as_is'])
|
||||
{
|
||||
unset($res['as_id']);
|
||||
$out = $res;
|
||||
}
|
||||
|
||||
elseif ($res===false)
|
||||
{
|
||||
$out = ['success'=>0]; //error
|
||||
}
|
||||
else
|
||||
{
|
||||
$out = ['success'=>1];
|
||||
$out['data'] = $res;
|
||||
}
|
||||
|
||||
return json_encode($out);
|
||||
}
|
||||
|
||||
//301 redirect
|
||||
public function move2new($url)
|
||||
{
|
||||
header("HTTP/1.1 301 Moved Permanently");
|
||||
header("Location: ".$url);
|
||||
exit();
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user