[fix] __autoload for api from alban + fixing variables & bad preg
This commit is contained in:
parent
5eb6ae6d47
commit
3058ed4cbe
|
@ -21,7 +21,6 @@ $root=ALTERNC_PANEL."/";
|
|||
|
||||
require_once($root."class/db_mysql.php");
|
||||
require_once($root."class/functions.php");
|
||||
require_once($root."class/variables.php");
|
||||
|
||||
|
||||
global $L_MYSQL_HOST,$L_MYSQL_DATABASE,$L_MYSQL_LOGIN,$L_MYSQL_PWD;
|
||||
|
@ -71,6 +70,7 @@ closedir($c);
|
|||
/* Language */
|
||||
//include_once("../../class/lang_env.php");
|
||||
|
||||
$variables=new m_variables();
|
||||
$mem=new m_mem();
|
||||
$err=new m_err();
|
||||
$authip=new m_authip();
|
||||
|
|
|
@ -30,7 +30,72 @@ define("API_CALL_POST", 2 );
|
|||
define("API_CALL_POST_REST", 3 );
|
||||
define("API_CALL_GET_REST", 4 );
|
||||
|
||||
// TODO : __autoload of classes ?
|
||||
/**
|
||||
* Attempts to load a class in multiple path, the PSR-0 or old style way
|
||||
*
|
||||
* @staticvar array $srcPathList
|
||||
* @staticvar boolean $init
|
||||
* @param string $class_name
|
||||
* @return boolean
|
||||
*/
|
||||
|
||||
function __autoload($class_name)
|
||||
{
|
||||
// Contains (Namespace) => directory
|
||||
static $srcPathList = array();
|
||||
static $init=null;
|
||||
|
||||
// Attempts to set include path and directories once
|
||||
if( is_null( $init )){
|
||||
|
||||
// Sets init flag
|
||||
$init = true;
|
||||
|
||||
// Sets a contextual directory
|
||||
$srcPathList["standard"] = "/usr/share/php";
|
||||
|
||||
// Updates include_path according to this list
|
||||
$includePathList = explode(PATH_SEPARATOR, get_include_path());
|
||||
|
||||
foreach($srcPathList as $path){
|
||||
if ( !in_array($path, $includePathList)){
|
||||
$includePathList[] = $path;
|
||||
}
|
||||
}
|
||||
// Reverses the path for search efficiency
|
||||
$finalIncludePathList = array_reverse($includePathList);
|
||||
|
||||
// Sets the updated include_path
|
||||
set_include_path(implode(PATH_SEPARATOR, $finalIncludePathList));
|
||||
|
||||
}
|
||||
|
||||
// Accepts old Foo_Bar namespacing
|
||||
if(preg_match("/_/", $class_name)){
|
||||
$file_name = str_replace('_', DIRECTORY_SEPARATOR, $class_name) . '.php';
|
||||
|
||||
// Accepts 5.3 Foo\Bar PSR-0 namespacing
|
||||
} else if(preg_match("/\\/", $class_name)){
|
||||
$file_name = str_replace('\\', DIRECTORY_SEPARATOR, ltrim($class_name,'\\')) . '.php';
|
||||
|
||||
// Accepts non namespaced classes
|
||||
} else {
|
||||
$file_name = $class_name . '.php';
|
||||
}
|
||||
|
||||
// Attempts to find file in namespace
|
||||
foreach($srcPathList as $namespace => $path ){
|
||||
$file_path = $path.DIRECTORY_SEPARATOR.$file_name;
|
||||
if(is_file($file_path) && is_readable($file_path)){
|
||||
require $file_path;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
// Failed to find file
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
function apicall($data,$token,$mode) {
|
||||
global $dbh;
|
||||
|
@ -85,7 +150,7 @@ function apiauth($data,$mode) {
|
|||
|
||||
|
||||
// Authentication
|
||||
if (preg_match("#^/api/auth/([^/]*)/?#$",$_SERVER["REQUEST_URI"],$mat)) {
|
||||
if (preg_match("#^/api/auth/([^/\?]*)[/\?]?#",$_SERVER["REQUEST_URI"],$mat)) {
|
||||
if ($_SERVER["REQUEST_METHOD"]=="POST") {
|
||||
$data=array("options" => $_POST,
|
||||
"method" => $mat[1]);
|
||||
|
@ -121,7 +186,7 @@ if ($_SERVER["REQUEST_URI"]=="/api/post") {
|
|||
}
|
||||
}
|
||||
|
||||
if (preg_match("#^/api/rest/([^/]*)/([^/]*)/?#$",$_SERVER["REQUEST_URI"],$mat)) {
|
||||
if (preg_match("#^/api/rest/([^/]*)/([^/\?]*)[/\?]?$#",$_SERVER["REQUEST_URI"],$mat)) {
|
||||
if ($_SERVER["REQUEST_METHOD"]=="POST") {
|
||||
$data=array("options" => $_POST,
|
||||
"object" => $mat[1],
|
||||
|
|
Loading…
Reference in New Issue