<?php
use APP\Engine;
if (!ini_get('date.timezone'))
{
date_default_timezone_set('GMT');
}
require 'Constant.php';
if (file_exists(APP_PATH_SETTING . 'Config.php'))
{
define('HAS_CONFIG_FILE',true);
require 'Config.php';
}
else
{
define('HAS_CONFIG_FILE',false);
require 'Config.default.php';
}
require_once APP_PATH_LIB . 'vendor' . APP_DS . 'autoload.php';
spl_autoload_extensions(".php");
spl_autoload_register('system_autoloader');
function d($mInfo, $bVarDump = false)
{
$bCliOrAjax = (PHP_SAPI == 'cli');
(!$bCliOrAjax ? print '<pre style="text-align:left; padding-left:15px;">' : false);
($bVarDump ? var_dump($mInfo) : print_r($mInfo));
(!$bCliOrAjax ? print '</pre>' : false);
}
function system_gzhandler($sContent){
$sCompressedContent = $sContent;
if (isset($_SERVER['HTTP_ACCEPT_ENCODING'])
&& strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false && function_exists('gzcompress'))
{
$iLength = strlen($sContent);
if ($iLength > 1000)
{
header("Content-Encoding: gzip");
$sCompressedContent = gzcompress($sContent);
$sCompressedContent = substr($sCompressedContent, 0, strlen($sCompressedContent) - 4); // Why cut off ??
$sCRC = crc32($sContent);
$sCompressedContent = "\x1f\x8b\x08\x00\x00\x00\x00\x00" .$sCompressedContent .pack('V', $sCRC) . pack('V', $iLength);;
}
}
return $sCompressedContent;
}
function system_autoloader($class)
{
$prefix = 'APP\\';
// base directory for the namespace prefix
$base_dir = APP_PATH;
// does the class use the namespace prefix?
$len = strlen($prefix);
if (strncmp($prefix, $class, $len) !== 0)
{
// no, move to the next registered autoloader
return;
}
// get the relative class name
$relative_class = substr($class, $len);
// replace the namespace prefix with the base directory, replace namespace
// separators with directory separators in the relative class name, append
// with .php
$file = APP_ROOT_PATH . str_replace('\\', '/', $relative_class) . '.php';
// if the file exists, require it
if (file_exists($file))
{
require $file;
}
}
function system_include_path($sPath)
{
if (file_exists($sPath))
{
@set_include_path($sPath);
@ini_set('include_path', $sPath);
require_once $sPath;
return true;
}
return false;
}
function system_load_version($sName = "", $sType = "controller", $sVersion = "default")
{
$sPruralType = ucfirst($sType) . "s";
if ($sVersion == "default")
{
$sPath = API_PATH . "Application" . API_DS;
$sNamespace = "\\APP\\Application\\" . $sPruralType . "\\";
} else
{
$sPath = API_PATH . "Version" . API_DS . "V" . str_replace(".", "", $sVersion) . API_DS;
$sNamespace = "\\APP\\Version\\" . "V" . str_replace(".", "", $sVersion) . "\\" . $sPruralType . "\\";
}
$sFileName = $sPath . $sPruralType . API_DS . ucfirst($sName) . ucfirst($sType) . ".php";
if (file_exists($sFileName))
{
require_once $sFileName;
$sClassName = ucfirst($sName) . ucfirst($sType);
$sFullClassName = $sNamespace . $sClassName;
$oClass = new $sFullClassName();
return $oClass;
} elseif ($sVersion != "default")
{
return system_load_version($sName, $sType, "default");
}
return false;
}
function system_display_result($mResult = array())
{
if (!is_array($mResult))
{
echo $mResult;
exit;
}
$oResponse = new \APP\Engine\Response();
if (isset($mResult['code']))
{
$oResponse->setCode($mResult['code']);
unset($mResult['code']);
} else
{
$oResponse->setCode(HTTP_CODE_OK);
}
if (isset($mResult['message']))
{
$oResponse->setMessage($mResult['message']);
}
if (isset($mResult['content_type']))
{
$oResponse->setContentType($mResult['content_type']);
}
$oResponse->setParams($mResult);
$oResponse->display();
}
function system_cast_object($source, $dest)
{
if (empty($dest) || !class_exists($dest))
{
return $source;
}
return unserialize(
preg_replace(
'/^O:\d+:"[^"]++"/', 'O:' . strlen($dest) . ':"' . $dest . '"', serialize($source)
)
);
}
function array_to_xml(array $arr, SimpleXMLElement $xml)
{
foreach ($arr as $k => $v)
{
is_array($v) ? array_to_xml($v, $xml->addChild($k)) : $xml->addChild($k, $v);
}
return $xml;
}
if (!function_exists('mime_content_type'))
{
function mime_content_type($filename)
{
$mime_types = array(
'txt' => 'text/plain',
'htm' => 'text/html',
'html' => 'text/html',
'php' => 'text/html',
'css' => 'text/css',
'js' => 'application/javascript',
'json' => 'application/json',
'xml' => 'application/xml',
'swf' => 'application/x-shockwave-flash',
'flv' => 'video/x-flv',
// images
'png' => 'image/png',
'jpe' => 'image/jpeg',
'jpeg' => 'image/jpeg',
'jpg' => 'image/jpeg',
'gif' => 'image/gif',
'bmp' => 'image/bmp',
'ico' => 'image/vnd.microsoft.icon',
'tiff' => 'image/tiff',
'tif' => 'image/tiff',
'svg' => 'image/svg+xml',
'svgz' => 'image/svg+xml',
// archives
'zip' => 'application/zip',
'rar' => 'application/x-rar-compressed',
'exe' => 'application/x-msdownload',
'msi' => 'application/x-msdownload',
'cab' => 'application/vnd.ms-cab-compressed',
// audio/video
'mp3' => 'audio/mpeg',
'qt' => 'video/quicktime',
'mov' => 'video/quicktime',
// adobe
'pdf' => 'application/pdf',
'psd' => 'image/vnd.adobe.photoshop',
'ai' => 'application/postscript',
'eps' => 'application/postscript',
'ps' => 'application/postscript',
// ms office
'doc' => 'application/msword',
'rtf' => 'application/rtf',
'xls' => 'application/vnd.ms-excel',
'ppt' => 'application/vnd.ms-powerpoint',
// open office
'odt' => 'application/vnd.oasis.opendocument.text',
'ods' => 'application/vnd.oasis.opendocument.spreadsheet',
);
$ext = strtolower(array_pop(explode('.', $filename)));
if (array_key_exists($ext, $mime_types))
{
return $mime_types[$ext];
} elseif (function_exists('finfo_open'))
{
$finfo = finfo_open(FILEINFO_MIME);
$mimetype = finfo_file($finfo, $filename);
finfo_close($finfo);
return $mimetype;
} else
{
return 'application/octet-stream';
}
}
}
|