%PDF- %PDF-
| Direktori : /home1/lightco1/www/lightingrepublic.com.au/libraries/cegcore/ |
| Current File : //home1/lightco1/www/lightingrepublic.com.au/libraries/cegcore/gcloader.php |
<?php
/**
* ChronoCMS version 1.0
* Copyright (c) 2012 ChronoCMS.com, All rights reserved.
* Author: (ChronoCMS.com Team)
* license: Please read LICENSE.txt
* Visit http://www.ChronoCMS.com for regular updates and information.
**/
//global namespace for the global helper function pr()
namespace {
/* @copyright:ChronoEngine.com @license:GPLv2 */defined('_JEXEC') or die('Restricted access');
defined("GCORE_SITE") or die;
//multi purpose function
if(!function_exists('pr')){
function pr($array = array(), $return = false){
if(is_array($array)){
array_walk_recursive($array, function(&$v){
if(is_string($v)){
$v = htmlspecialchars($v);
}
});
}else if(is_string($array)){
$array = htmlspecialchars($array);
}
if($return){
return '<pre style="word-wrap:break-word; white-space:pre-wrap;">'.print_r($array, $return).'</pre>';
}else{
echo '<pre style="word-wrap:break-word; white-space:pre-wrap;">';
print_r($array, $return);
echo '</pre>';
}
}
}
//multi purpose function
function prf($array = array(), $file = ''){
$file = empty($file) ? dirname(__FILE__).DIRECTORY_SEPARATOR.'tmp'.DIRECTORY_SEPARATOR.'debug.html' : $file;
//add time
file_put_contents($file, pr(date("d-m-Y H:i:s", time()), true)."\n\n", FILE_APPEND);
file_put_contents($file, pr($array, true)."\n\n", FILE_APPEND);
}
function l_($text){
return \GCore\Libs\Lang::_($text);
}
if(!function_exists('r_')){
function r_($url){
return \GCore\Libs\Route::_($url);
}
}
if(get_magic_quotes_gpc()){
function stripslashes_gpc(&$value){
$value = stripslashes($value);
}
array_walk_recursive($_GET, 'stripslashes_gpc');
array_walk_recursive($_POST, 'stripslashes_gpc');
array_walk_recursive($_COOKIE, 'stripslashes_gpc');
array_walk_recursive($_REQUEST, 'stripslashes_gpc');
}
}
//GCore namespace for the loader
namespace GCore{
if(!defined('DS')){
define('DS', DIRECTORY_SEPARATOR);
}
class C {
static $GCORE_FRONT_PATH = '';
static $GCORE_FRONT_URL = '';
static $GCORE_ADMIN_PATH = '';
static $GCORE_ADMIN_URL = '';
static $GSITE_PATH = '';
static $GSITE_URL = '';
static $GSITE_PLATFORM = '';
static $GCORE_ROOT_PATH = '';
static $GCORE_ROOT_URL = '';
static $EXTENSIONS_PATHS = array();
static $EXTENSIONS_URLS = array();
static $EXTENSIONS_NAMES = array();
public static function get($key, $default = null){
if(isset(self::$$key)){
return self::$$key;
}else{
return $default;
}
}
public static function set($key, $value){
if(isset(self::$$key)){
self::$$key = $value;
}
}
public static function ext_path($ext, $area = 'admin'){
$path = '';
if($area == 'admin'){
$path .= self::get('GCORE_ADMIN_PATH');
}else{
$path .= self::get('GCORE_FRONT_PATH');
}
$path .= 'extensions'.DS.$ext.DS;
$path = self::fix_path($path);
return $path;
}
public static function ext_url($ext, $area = 'admin'){
$path = '';
if($area == 'admin'){
$path .= self::get('GCORE_ADMIN_URL');
}else{
$path .= self::get('GCORE_FRONT_URL');
}
$path .= 'extensions/'.$ext.'/';
$path = self::fix_urls($path);
return $path;
}
public static function fix_path($path){
$extensions_paths = self::get('EXTENSIONS_PATHS', array());
$extensions_names = self::get('EXTENSIONS_NAMES', array());
if(!empty($extensions_paths) AND !empty($extensions_names)){
foreach($extensions_paths as $int_path => $ext_path){
foreach($extensions_names as $int_name => $ext_name){
$path = str_replace($int_path.$int_name, $ext_path.$ext_name.DS.$int_name, $path);
}
}
}
return $path;
}
public static function fix_urls($output){
$extensions_urls = self::get('EXTENSIONS_URLS', array());
$extensions_names = self::get('EXTENSIONS_NAMES', array());
if(!empty($extensions_urls) AND !empty($extensions_names)){
foreach($extensions_urls as $int_url => $ext_url){
foreach($extensions_names as $int_name => $ext_name){
$output = str_replace($int_url.$int_name, $ext_url.$ext_name.'/'.$int_name, $output);
}
}
}
return $output;
}
}
class Loader {
static $classname = "";
static $filepath = "";
static $memory_usage = 0;
static $start_time = 0;
static public function register($name){
if(empty(self::$start_time)){
self::$start_time = microtime(true);
self::$memory_usage = memory_get_usage();
}
if(strlen(trim($name)) > 0){
$dirs = explode("\\", $name);
$dirs = array_values(array_filter($dirs));
//if the class doesn't belong to the GCore then don't try to auto load it
if($dirs[0] !== "GCore"){
return false;
}
//build the include file path
$strings = array();
foreach($dirs as $k => $dir){
if($dir === "GCore"){
//root dir
$strings[] = dirname(__FILE__);
continue;
}
if($k == (count($dirs) - 1)){
//last dir (file name)
$strings[] = strtolower(preg_replace('/([a-z]|[0-9])([A-Z])/', '$1_$2', $dir)).".php";
continue;
}
if(empty($dirs[$k])){
//empty value
continue;
}
//otherwise, uncamilize the namespace name to get the directory name
$strings[] = strtolower(preg_replace('/([a-z]|[0-9])([A-Z])/', '$1_$2', $dir));
}
//load the file if exists
$file = implode(DIRECTORY_SEPARATOR, $strings);
//self::$filepath = $file;
//$gcore_file = $file;
//$file = str_replace('__GCORE__', dirname(__FILE__), $gcore_file);
$file = \GCore\C::fix_path($file);
//pr($file);
if(file_exists($file) AND substr($file, -4, 4) == ".php"){
require_once($file);
if(class_exists($name)){
return true;
}else{
self::$filepath = $file;
self::$classname = $name;
}
}
/*if(Libs\Base::getConfig('debug', 0)){
self::debug();
}*/
}
}
static public function debug(){
if(!empty(self::$classname))
echo nl2br("\nClass name: \"".self::$classname."\" could NOT be found, additionally, the file below does NOT exist: \n".self::$filepath);
}
}
spl_autoload_register(__NAMESPACE__ .'\Loader::register');
}