SPEEDY first version of boostrap.php, with many changes
This commit is contained in:
@@ -1,14 +1,101 @@
|
||||
<?php
|
||||
/**
|
||||
* class.util.php
|
||||
* class.bootstrap.php
|
||||
*
|
||||
* @package gulliver.system
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
class G
|
||||
class Bootstrap
|
||||
{
|
||||
//below here only approved methods
|
||||
|
||||
/*
|
||||
* this function still under revision
|
||||
*/
|
||||
public function getSystemConfiguration ($globalIniFile = '', $wsIniFile = '', $wsName = '')
|
||||
{
|
||||
$readGlobalIniFile = false;
|
||||
$readWsIniFile = false;
|
||||
|
||||
if (empty( $globalIniFile )) {
|
||||
$globalIniFile = PATH_CORE . 'config' . PATH_SEP . 'env.ini';
|
||||
}
|
||||
|
||||
if (empty( $wsIniFile )) {
|
||||
if (defined( 'PATH_DB' )) {
|
||||
// if we're on a valid workspace env.
|
||||
if (empty( $wsName )) {
|
||||
$uriParts = explode( '/', getenv( "REQUEST_URI" ) );
|
||||
if (isset( $uriParts[1] )) {
|
||||
if (substr( $uriParts[1], 0, 3 ) == 'sys') {
|
||||
$wsName = substr( $uriParts[1], 3 );
|
||||
}
|
||||
}
|
||||
}
|
||||
$wsIniFile = PATH_DB . $wsName . PATH_SEP . 'env.ini';
|
||||
}
|
||||
}
|
||||
|
||||
$readGlobalIniFile = file_exists( $globalIniFile ) ? true : false;
|
||||
$readWsIniFile = file_exists( $wsIniFile ) ? true : false;
|
||||
|
||||
if (isset( $_SESSION['PROCESSMAKER_ENV'] )) {
|
||||
$md5 = array ();
|
||||
|
||||
if ($readGlobalIniFile) {
|
||||
$md5[] = md5_file( $globalIniFile );
|
||||
}
|
||||
if ($readWsIniFile) {
|
||||
$md5[] = md5_file( $wsIniFile );
|
||||
}
|
||||
$hash = implode( '-', $md5 );
|
||||
|
||||
if ($_SESSION['PROCESSMAKER_ENV_HASH'] === $hash) {
|
||||
$_SESSION['PROCESSMAKER_ENV']['from_cache'] = 1;
|
||||
return $_SESSION['PROCESSMAKER_ENV'];
|
||||
}
|
||||
}
|
||||
|
||||
// default configuration
|
||||
$config = array ('debug' => 0,'debug_sql' => 0,'debug_time' => 0,'debug_calendar' => 0,'wsdl_cache' => 1,'memory_limit' => '128M','time_zone' => 'America/New_York','memcached' => 0,'memcached_server' => '','default_skin' => 'classic','default_lang' => 'en','proxy_host' => '','proxy_port' => '','proxy_user' => '','proxy_pass' => ''
|
||||
);
|
||||
|
||||
// read the global env.ini configuration file
|
||||
if ($readGlobalIniFile && ($globalConf = @parse_ini_file( $globalIniFile )) !== false) {
|
||||
$config = array_merge( $config, $globalConf );
|
||||
}
|
||||
|
||||
// Workspace environment configuration
|
||||
if ($readWsIniFile && ($wsConf = @parse_ini_file( $wsIniFile )) !== false) {
|
||||
$config = array_merge( $config, $wsConf );
|
||||
}
|
||||
|
||||
// validation debug config, only binary value is valid; debug = 1, to enable
|
||||
$config['debug'] = $config['debug'] == 1 ? 1 : 0;
|
||||
|
||||
if ($config['proxy_pass'] != '') {
|
||||
$config['proxy_pass'] = G::decrypt( $config['proxy_pass'], 'proxy_pass' );
|
||||
}
|
||||
|
||||
$md5 = array ();
|
||||
if ($readGlobalIniFile) {
|
||||
$md5[] = md5_file( $globalIniFile );
|
||||
}
|
||||
if ($readWsIniFile) {
|
||||
$md5[] = md5_file( $wsIniFile );
|
||||
}
|
||||
$hash = implode( '-', $md5 );
|
||||
|
||||
$_SESSION['PROCESSMAKER_ENV'] = $config;
|
||||
$_SESSION['PROCESSMAKER_ENV_HASH'] = $hash;
|
||||
|
||||
return $config;
|
||||
}
|
||||
|
||||
|
||||
//below this line, still not approved methods
|
||||
|
||||
/**
|
||||
* mk_dir , copied from class.G.php
|
||||
*
|
||||
@@ -217,191 +304,101 @@ class G
|
||||
* @param string $downloadFileName
|
||||
* @return string
|
||||
*/
|
||||
public function streamFile($file, $download = false, $downloadFileName = '') {
|
||||
require_once (PATH_THIRDPARTY . 'jsmin/jsmin.php');
|
||||
$folderarray = explode ( '/', $file );
|
||||
$typearray = explode ( '.', basename ( $file ) );
|
||||
$typefile = $typearray [count ( $typearray ) - 1];
|
||||
$filename = $file;
|
||||
public function streamFile ($file, $download = false, $downloadFileName = '')
|
||||
{
|
||||
$folderarray = explode( '/', $file );
|
||||
$typearray = explode( '.', basename( $file ) );
|
||||
$typefile = $typearray[count( $typearray ) - 1];
|
||||
$filename = $file;
|
||||
|
||||
// trick to generate the translation.language.js file , merging two
|
||||
// files and then minified the content.
|
||||
if (strtolower ( $typefile ) == 'js' && $typearray [0] == 'translation') {
|
||||
$output = g::streamJSTranslationFile ( $filename, $typearray [1] );
|
||||
print $output;
|
||||
return;
|
||||
}
|
||||
//trick to generate the translation.language.js file , merging two files
|
||||
if (strtolower( $typefile ) == 'js' && $typearray[0] == 'translation') {
|
||||
Bootstrap::sendHeaders( $filename, 'text/javascript', $download, $downloadFileName );
|
||||
$output = Bootstrap::streamJSTranslationFile( $filename, $typearray[1] );
|
||||
print $output;
|
||||
return;
|
||||
}
|
||||
|
||||
// trick to generate the big css file for ext style .
|
||||
if (strtolower ( $typefile ) == 'css' && $folderarray [count ( $folderarray ) - 2] == 'css') {
|
||||
$output = g::streamCSSBigFile ( $typearray [0] );
|
||||
print $output;
|
||||
return;
|
||||
}
|
||||
//trick to generate the big css file for ext style .
|
||||
if (strtolower( $typefile ) == 'css' && $folderarray[count( $folderarray ) - 2] == 'css') {
|
||||
Bootstrap::sendHeaders( $filename, 'text/css', $download, $downloadFileName );
|
||||
$output = Bootstrap::streamCSSBigFile( $typearray[0] );
|
||||
print $output;
|
||||
return;
|
||||
}
|
||||
|
||||
if (file_exists ( $filename )) {
|
||||
switch (strtolower ( $typefile )) {
|
||||
case 'swf' :
|
||||
g::sendHeaders ( $filename, 'application/x-shockwave-flash', $download, $downloadFileName );
|
||||
break;
|
||||
case 'js' :
|
||||
g::sendHeaders ( $filename, 'text/javascript', $download, $downloadFileName );
|
||||
break;
|
||||
case 'htm' :
|
||||
case 'html' :
|
||||
g::sendHeaders ( $filename, 'text/html', $download, $downloadFileName );
|
||||
break;
|
||||
case 'htc' :
|
||||
g::sendHeaders ( $filename, 'text/plain', $download, $downloadFileName );
|
||||
break;
|
||||
case 'json' :
|
||||
g::sendHeaders ( $filename, 'text/plain', $download, $downloadFileName );
|
||||
break;
|
||||
case 'gif' :
|
||||
g::sendHeaders ( $filename, 'image/gif', $download, $downloadFileName );
|
||||
break;
|
||||
case 'png' :
|
||||
g::sendHeaders ( $filename, 'image/png', $download, $downloadFileName );
|
||||
break;
|
||||
case 'jpg' :
|
||||
g::sendHeaders ( $filename, 'image/jpg', $download, $downloadFileName );
|
||||
break;
|
||||
case 'css' :
|
||||
g::sendHeaders ( $filename, 'text/css', $download, $downloadFileName );
|
||||
break;
|
||||
case 'css' :
|
||||
g::sendHeaders ( $filename, 'text/css', $download, $downloadFileName );
|
||||
break;
|
||||
case 'xml' :
|
||||
g::sendHeaders ( $filename, 'text/xml', $download, $downloadFileName );
|
||||
break;
|
||||
case 'txt' :
|
||||
g::sendHeaders ( $filename, 'text/html', $download, $downloadFileName );
|
||||
break;
|
||||
case 'doc' :
|
||||
case 'pdf' :
|
||||
case 'pm' :
|
||||
case 'po' :
|
||||
g::sendHeaders ( $filename, 'application/octet-stream', $download, $downloadFileName );
|
||||
break;
|
||||
case 'php' :
|
||||
if ($download) {
|
||||
g::sendHeaders ( $filename, 'text/plain', $download, $downloadFileName );
|
||||
} else {
|
||||
require_once ($filename);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case 'tar' :
|
||||
g::sendHeaders ( $filename, 'application/x-tar', $download, $downloadFileName );
|
||||
break;
|
||||
default :
|
||||
// throw new Exception ( "Unknown type of file '$file'. " );
|
||||
g::sendHeaders ( $filename, 'application/octet-stream', $download, $downloadFileName );
|
||||
break;
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
if (strpos ( $file, 'gulliver' ) !== false) {
|
||||
list ( $path, $filename ) = explode ( 'gulliver', $file );
|
||||
}
|
||||
if (file_exists( $filename )) {
|
||||
switch (strtolower( $typefile )) {
|
||||
case 'swf':
|
||||
Bootstrap::sendHeaders( $filename, 'application/x-shockwave-flash', $download, $downloadFileName );
|
||||
break;
|
||||
case 'js':
|
||||
Bootstrap::sendHeaders( $filename, 'text/javascript', $download, $downloadFileName );
|
||||
break;
|
||||
case 'htm':
|
||||
case 'html':
|
||||
Bootstrap::sendHeaders( $filename, 'text/html', $download, $downloadFileName );
|
||||
break;
|
||||
case 'htc':
|
||||
Bootstrap::sendHeaders( $filename, 'text/plain', $download, $downloadFileName );
|
||||
break;
|
||||
case 'json':
|
||||
Bootstrap::sendHeaders( $filename, 'text/plain', $download, $downloadFileName );
|
||||
break;
|
||||
case 'gif':
|
||||
Bootstrap::sendHeaders( $filename, 'image/gif', $download, $downloadFileName );
|
||||
break;
|
||||
case 'png':
|
||||
Bootstrap::sendHeaders( $filename, 'image/png', $download, $downloadFileName );
|
||||
break;
|
||||
case 'jpg':
|
||||
Bootstrap::sendHeaders( $filename, 'image/jpg', $download, $downloadFileName );
|
||||
break;
|
||||
case 'css':
|
||||
Bootstrap::sendHeaders( $filename, 'text/css', $download, $downloadFileName );
|
||||
break;
|
||||
case 'xml':
|
||||
Bootstrap::sendHeaders( $filename, 'text/xml', $download, $downloadFileName );
|
||||
break;
|
||||
case 'txt':
|
||||
Bootstrap::sendHeaders( $filename, 'text/html', $download, $downloadFileName );
|
||||
break;
|
||||
case 'doc':
|
||||
case 'pdf':
|
||||
case 'pm':
|
||||
case 'po':
|
||||
Bootstrap::sendHeaders( $filename, 'application/octet-stream', $download, $downloadFileName );
|
||||
break;
|
||||
case 'php':
|
||||
if ($download) {
|
||||
G::sendHeaders( $filename, 'text/plain', $download, $downloadFileName );
|
||||
} else {
|
||||
require_once ($filename);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case 'tar':
|
||||
Bootstrap::sendHeaders( $filename, 'application/x-tar', $download, $downloadFileName );
|
||||
break;
|
||||
default:
|
||||
//throw new Exception ( "Unknown type of file '$file'. " );
|
||||
Bootstrap::sendHeaders( $filename, 'application/octet-stream', $download, $downloadFileName );
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
if (strpos( $file, 'gulliver' ) !== false) {
|
||||
list ($path, $filename) = explode( 'gulliver', $file );
|
||||
}
|
||||
|
||||
$_SESSION ['phpFileNotFound'] = $file;
|
||||
g::header ( "location: /errors/error404.php?l=" . $_SERVER ['REQUEST_URI'] );
|
||||
}
|
||||
$_SESSION['phpFileNotFound'] = $file;
|
||||
Bootstrap::header( "location: /errors/error404.php?l=" . $_SERVER['REQUEST_URI'] );
|
||||
}
|
||||
|
||||
switch (strtolower ( $typefile )) {
|
||||
case "js" :
|
||||
$paths = explode ( '/', $filename );
|
||||
$jsName = $paths [count ( $paths ) - 1];
|
||||
$output = '';
|
||||
$pathJs = PATH_GULLIVER_HOME . PATH_SEP . 'js' . PATH_SEP;
|
||||
switch ($jsName) {
|
||||
//
|
||||
case 'draw2d.js' :
|
||||
$cachePath = PATH_C . 'ExtJs' . PATH_SEP;
|
||||
$checksum = g::getCheckSum ( array (
|
||||
$pathJs . 'ext/wz_jsgraphics.js',
|
||||
$pathJs . 'ext/mootools.js',
|
||||
$pathJs . 'ext/moocanvas.js'
|
||||
) );
|
||||
|
||||
$cf = $cachePath . "ext-draw2d-cache.$checksum.js";
|
||||
$cfStored = g::getCacheFileNameByPattern ( $cachePath, 'ext-draw2d-cache.*.js' );
|
||||
// error_log("draw2d.js ".$checksum ."==".
|
||||
// $cfStored['checksum']);
|
||||
if (is_file ( $cfStored ['filename'] ) && $checksum == $cfStored ['checksum']) {
|
||||
$output = file_get_contents ( $cf );
|
||||
} else {
|
||||
if (is_file ( $cfStored ['filename'] )) {
|
||||
@unlink ( $cfStored ['filename'] );
|
||||
}
|
||||
$output .= JSMin::minify ( file_get_contents ( $pathJs . 'ext/wz_jsgraphics.js' ) );
|
||||
$output .= JSMin::minify ( file_get_contents ( $pathJs . 'ext/mootools.js' ) );
|
||||
$output .= JSMin::minify ( file_get_contents ( $pathJs . 'ext/moocanvas.js' ) );
|
||||
$output .= file_get_contents ( $pathJs . 'ext/draw2d.js' ); // already
|
||||
// minified
|
||||
file_put_contents ( $cf, $output );
|
||||
}
|
||||
break;
|
||||
case 'ext-all.js' :
|
||||
$cachePath = PATH_C . 'ExtJs' . PATH_SEP;
|
||||
$checksum = g::getCheckSum ( array (
|
||||
$pathJs . 'ext/pmos-common.js',
|
||||
$pathJs . 'ext/ux/miframe.js',
|
||||
$pathJs . 'ext/ux.locationbar/Ext.ux.LocationBar.js',
|
||||
$pathJs . 'ext/ux.statusbar/ext-statusbar.js',
|
||||
$pathJs . 'ext/ux.treefilterx/Ext.ux.tree.TreeFilterX.js'
|
||||
) );
|
||||
|
||||
$cfStored = g::getCacheFileNameByPattern ( $cachePath, 'ext-all-cache.*.js' );
|
||||
$cf = PATH_C . 'ExtJs' . PATH_SEP . "ext-all-cache.$checksum.js";
|
||||
if (is_file ( $cfStored ['filename'] ) && $checksum == $cfStored ['checksum']) {
|
||||
$output = file_get_contents ( $cf );
|
||||
} else {
|
||||
if (is_file ( $cfStored ['filename'] )) {
|
||||
@unlink ( $cfStored ['filename'] );
|
||||
}
|
||||
|
||||
$output .= file_get_contents ( $pathJs . 'ext/ext-all.js' ); // already
|
||||
// minified
|
||||
$output .= file_get_contents ( $pathJs . 'ext/ux/ux-all.js' ); // already
|
||||
// minified
|
||||
$output .= JSMin::minify ( file_get_contents ( $pathJs . 'ext/pmos-common.js' ) );
|
||||
$output .= JSMin::minify ( file_get_contents ( $pathJs . 'ext/ux/miframe.js' ) );
|
||||
$output .= JSMin::minify ( file_get_contents ( $pathJs . 'ext/ux.locationbar/Ext.ux.LocationBar.js' ) );
|
||||
$output .= JSMin::minify ( file_get_contents ( $pathJs . 'ext/ux.statusbar/ext-statusbar.js' ) );
|
||||
$output .= JSMin::minify ( file_get_contents ( $pathJs . 'ext/ux.treefilterx/Ext.ux.tree.TreeFilterX.js' ) );
|
||||
|
||||
file_put_contents ( $cf, $output );
|
||||
}
|
||||
break;
|
||||
case 'maborak.js' :
|
||||
$oHeadPublisher = & headPublisher::getSingleton ();
|
||||
foreach ( $oHeadPublisher->maborakFiles as $fileJS ) {
|
||||
$output .= JSMin::minify ( file_get_contents ( $fileJS ) );
|
||||
}
|
||||
break;
|
||||
case 'maborak.loader.js' :
|
||||
$oHeadPublisher = & headPublisher::getSingleton ();
|
||||
foreach ( $oHeadPublisher->maborakLoaderFiles as $fileJS ) {
|
||||
$output .= JSMin::minify ( file_get_contents ( $fileJS ) );
|
||||
}
|
||||
break;
|
||||
default :
|
||||
$output = JSMin::minify ( file_get_contents ( $filename ) );
|
||||
break;
|
||||
}
|
||||
print $output;
|
||||
break;
|
||||
case 'css' :
|
||||
print g::trimSourceCodeFile ( $filename );
|
||||
break;
|
||||
default :
|
||||
@readfile ( $filename );
|
||||
break;
|
||||
}
|
||||
}
|
||||
if ( substr($filename,-10) == "ext-all.js" ) {
|
||||
$filename = PATH_GULLIVER_HOME . 'js/ext/min/ext-all.js';
|
||||
}
|
||||
@readfile( $filename );
|
||||
}
|
||||
|
||||
/**
|
||||
* Parsing the URI
|
||||
@@ -496,7 +493,7 @@ class G
|
||||
* @return void
|
||||
*/
|
||||
public function LoadClass($strClass) {
|
||||
$classfile = g::ExpandPath ( "classes" ) . 'class.' . $strClass . '.php';
|
||||
$classfile = Bootstrap::ExpandPath ( "classes" ) . 'class.' . $strClass . '.php';
|
||||
if (! file_exists ( $classfile )) {
|
||||
if (file_exists ( PATH_GULLIVER . 'class.' . $strClass . '.php' )) {
|
||||
return require_once (PATH_GULLIVER . 'class.' . $strClass . '.php');
|
||||
@@ -531,8 +528,7 @@ class G
|
||||
*
|
||||
* @author Hugo Loza. <hugo@colosa.com>
|
||||
* @access public
|
||||
* @param
|
||||
* eter string lang
|
||||
* @param string lang
|
||||
* @return void
|
||||
*/
|
||||
public function LoadTranslationObject($lang = SYS_LANG) {
|
||||
@@ -584,7 +580,7 @@ class G
|
||||
$G_SKIN = $strSkin;
|
||||
|
||||
try {
|
||||
$file = g::ExpandPath ( 'skinEngine' ) . 'skinEngine.php';
|
||||
$file = Bootstrap::ExpandPath ( 'skinEngine' ) . 'skinEngine.php';
|
||||
include $file;
|
||||
$skinEngine = new SkinEngine ( $G_TEMPLATE, $G_SKIN, $G_CONTENT );
|
||||
$skinEngine->setLayout ( $layout );
|
||||
@@ -641,7 +637,7 @@ class G
|
||||
case 'label' :
|
||||
case 'labels' :
|
||||
$_SESSION ['G_MESSAGE_TYPE'] = $strType;
|
||||
$_SESSION ['G_MESSAGE'] = nl2br ( g::LoadTranslation ( $msgID ) );
|
||||
$_SESSION ['G_MESSAGE'] = nl2br ( Bootstrap::LoadTranslation ( $msgID ) );
|
||||
break;
|
||||
case 'string' :
|
||||
$_SESSION ['G_MESSAGE_TYPE'] = $strType;
|
||||
@@ -667,7 +663,7 @@ class G
|
||||
*/
|
||||
public function header($parameter) {
|
||||
if (defined ( 'ENABLE_ENCRYPT' ) && (ENABLE_ENCRYPT == 'yes') && (substr ( $parameter, 0, 9 ) == 'location:')) {
|
||||
$url = g::encrypt ( substr ( $parameter, 10 ), URL_KEY );
|
||||
$url = Bootstrap::encrypt ( substr ( $parameter, 10 ), URL_KEY );
|
||||
header ( 'location:' . $url );
|
||||
} else {
|
||||
header ( $parameter );
|
||||
@@ -742,7 +738,7 @@ class G
|
||||
$rest->setSupportedFormats( 'JsonFormat', 'XmlFormat' );
|
||||
// getting all services class
|
||||
$restClasses = array ();
|
||||
$restClassesList = g::rglob( '*', 0, PATH_CORE . 'services/' );
|
||||
$restClassesList = Bootstrap::rglob( '*', 0, PATH_CORE . 'services/' );
|
||||
foreach ($restClassesList as $classFile) {
|
||||
if (substr( $classFile, - 4 ) === '.php') {
|
||||
$restClasses[str_replace( '.php', '', basename( $classFile ) )] = $classFile;
|
||||
@@ -750,7 +746,7 @@ class G
|
||||
}
|
||||
if (! empty( $apiClassesPath )) {
|
||||
$pluginRestClasses = array ();
|
||||
$restClassesList = g::rglob( '*', 0, $apiClassesPath . 'services/' );
|
||||
$restClassesList = Bootstrap::rglob( '*', 0, $apiClassesPath . 'services/' );
|
||||
foreach ($restClassesList as $classFile) {
|
||||
if (substr( $classFile, - 4 ) === '.php') {
|
||||
$pluginRestClasses[str_replace( '.php', '', basename( $classFile ) )] = $classFile;
|
||||
@@ -864,7 +860,7 @@ class G
|
||||
public function streamJSTranslationFile($filename, $locale = 'en') {
|
||||
header ( 'Content-Type: text/javascript' );
|
||||
|
||||
if (! g::LoadTranslationObject ( $locale )) {
|
||||
if (! Bootstrap::LoadTranslationObject ( $locale )) {
|
||||
header ( 'Cache-Control: no-cache' );
|
||||
header ( 'Pragma: no-cache' );
|
||||
return;
|
||||
@@ -902,7 +898,7 @@ class G
|
||||
}
|
||||
}
|
||||
|
||||
return JSMin::minify ( 'var TRANSLATIONS = ' . g::json_encode ( $translation ) . ';' );
|
||||
return 'var TRANSLATIONS = ' . Bootstrap::json_encode ( $translation ) . ";\n";
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -934,25 +930,15 @@ class G
|
||||
$skinName = "classic";
|
||||
}
|
||||
if ($skinName == "classic") {
|
||||
$configurationFile = g::ExpandPath( "skinEngine" ) . 'base' . PATH_SEP . 'config.xml';
|
||||
$configurationFile = Bootstrap::ExpandPath( "skinEngine" ) . 'base' . PATH_SEP . 'config.xml';
|
||||
} else {
|
||||
$configurationFile = PATH_CUSTOM_SKINS . $skinName . PATH_SEP . 'config.xml';
|
||||
|
||||
if (! is_file( $configurationFile )) {
|
||||
$configurationFile = g::ExpandPath( "skinEngine" ) . $skinName . PATH_SEP . 'config.xml';
|
||||
$configurationFile = Bootstrap::ExpandPath( "skinEngine" ) . $skinName . PATH_SEP . 'config.xml';
|
||||
}
|
||||
}
|
||||
|
||||
//Read Configuration File
|
||||
$xmlConfiguration = file_get_contents( $configurationFile );
|
||||
$xmlConfigurationObj = g::xmlParser( $xmlConfiguration );
|
||||
$baseSkinDirectory = dirname( $configurationFile );
|
||||
$directorySize = g::getDirectorySize( $baseSkinDirectory );
|
||||
$mtime = $directorySize['maxmtime'];
|
||||
|
||||
//if userAgent (BROWSER) is MSIE we need special headers to avoid MSIE behaivor.
|
||||
//$userAgent = strtolower($_SERVER['HTTP_USER_AGENT']);
|
||||
|
||||
$gmt_mtime = gmdate( "D, d M Y H:i:s", $mtime ) . " GMT";
|
||||
header( 'Pragma: cache' );
|
||||
header( 'ETag: "' . md5( $mtime . $filename ) . '"' );
|
||||
@@ -974,6 +960,16 @@ class G
|
||||
}
|
||||
}
|
||||
|
||||
//Read Configuration File
|
||||
$xmlConfiguration = file_get_contents( $configurationFile );
|
||||
$xmlConfigurationObj = Bootstrap::xmlParser( $xmlConfiguration );
|
||||
$baseSkinDirectory = dirname( $configurationFile );
|
||||
$directorySize = Bootstrap::getDirectorySize( $baseSkinDirectory );
|
||||
$mtime = $directorySize['maxmtime'];
|
||||
|
||||
//if userAgent (BROWSER) is MSIE we need special headers to avoid MSIE behaivor.
|
||||
//$userAgent = strtolower($_SERVER['HTTP_USER_AGENT']);
|
||||
|
||||
$outputHeader = "/* Autogenerated CSS file by gulliver framework \n";
|
||||
$outputHeader .= " Skin: $filename\n";
|
||||
$outputHeader .= " Configuration: $configurationFile\n";
|
||||
@@ -981,46 +977,11 @@ class G
|
||||
$gmt_mtimeNow = gmdate( "D, d M Y H:i:s", $mtimeNow ) . " GMT";
|
||||
$outputHeader .= " Date: $gmt_mtimeNow*/\n";
|
||||
$output = "";
|
||||
|
||||
//Base files
|
||||
switch (strtolower( $skinVariant )) {
|
||||
case "extjs":
|
||||
//Basepublic function getDirectorySize ($path, $maxmtime = 0)
|
||||
{
|
||||
$totalsize = 0;
|
||||
$totalcount = 0;
|
||||
$dircount = 0;
|
||||
if ($handle = opendir( $path )) {
|
||||
while (false !== ($file = readdir( $handle ))) {
|
||||
$nextpath = $path . '/' . $file;
|
||||
if ($file != '.' && $file != '..' && ! is_link( $nextpath ) && $file != '.svn') {
|
||||
if (is_dir( $nextpath )) {
|
||||
$dircount ++;
|
||||
$result = g::getDirectorySize( $nextpath, $maxmtime );
|
||||
$totalsize += $result['size'];
|
||||
$totalcount += $result['count'];
|
||||
$dircount += $result['dircount'];
|
||||
$maxmtime = $result['maxmtime'] > $maxmtime ? $result['maxmtime'] : $maxmtime;
|
||||
} elseif (is_file( $nextpath )) {
|
||||
$totalsize += filesize( $nextpath );
|
||||
$totalcount ++;
|
||||
|
||||
$mtime = filemtime( $nextpath );
|
||||
if ($mtime > $maxmtime) {
|
||||
$maxmtime = $mtime;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
closedir( $handle );
|
||||
$total['size'] = $totalsize;
|
||||
$total['count'] = $totalcount;
|
||||
$total['dircount'] = $dircount;
|
||||
$total['maxmtime'] = $maxmtime;
|
||||
|
||||
return $total;
|
||||
}
|
||||
|
||||
//Base
|
||||
$baseCSSPath = PATH_SKIN_ENGINE . "base" . PATH_SEP . "baseCss" . PATH_SEP;
|
||||
$output .= file_get_contents( $baseCSSPath . 'ext-all-notheme.css' );
|
||||
//$output .= file_get_contents ( $publicExtPath . 'ext-all.css' );
|
||||
@@ -1030,13 +991,11 @@ class G
|
||||
|
||||
break;
|
||||
default:
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
//Get Browser Info
|
||||
$infoBrowser = g::get_current_browser();
|
||||
$infoBrowser = Bootstrap::get_current_browser();
|
||||
$browserName = $infoBrowser['browser_working'];
|
||||
if (isset( $infoBrowser[$browserName . '_data'] )) {
|
||||
if ($infoBrowser[$browserName . '_data'][0] != "") {
|
||||
@@ -1046,7 +1005,7 @@ class G
|
||||
|
||||
//Read Configuration File
|
||||
$xmlConfiguration = file_get_contents ( $configurationFile );
|
||||
$xmlConfigurationObj = g::xmlParser($xmlConfiguration);
|
||||
$xmlConfigurationObj = Bootstrap::xmlParser($xmlConfiguration);
|
||||
|
||||
$skinFilesArray=$xmlConfigurationObj->result['skinConfiguration']['__CONTENT__']['cssFiles']['__CONTENT__'][$skinVariant]['__CONTENT__']['cssFile'] ;
|
||||
foreach ($skinFilesArray as $keyFile => $cssFileInfo) {
|
||||
@@ -1055,7 +1014,7 @@ class G
|
||||
|
||||
if (((in_array($browserName, $enabledBrowsers))||(in_array('ALL', $enabledBrowsers)))&&(!(in_array($browserName, $disabledBrowsers)))) {
|
||||
if ($cssFileInfo['__ATTRIBUTES__']['file'] == 'rtl.css') {
|
||||
g::LoadClass('serverConfiguration');
|
||||
Bootstrap::LoadClass('serverConfiguration');
|
||||
$oServerConf =& serverConf::getSingleton();
|
||||
if (!(defined('SYS_LANG'))) {
|
||||
if (isset($_SERVER['HTTP_REFERER'])) {
|
||||
@@ -1126,9 +1085,9 @@ class G
|
||||
}
|
||||
|
||||
if (! $download) {
|
||||
|
||||
|
||||
header ( 'Pragma: cache' );
|
||||
|
||||
|
||||
if (file_exists ( $filename )) {
|
||||
$mtime = filemtime ( $filename );
|
||||
} else {
|
||||
@@ -1145,7 +1104,7 @@ class G
|
||||
exit ();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (isset ( $_SERVER ['HTTP_IF_NONE_MATCH'] )) {
|
||||
if (str_replace ( '"', '', stripslashes ( $_SERVER ['HTTP_IF_NONE_MATCH'] ) ) == md5 ( $mtime . $filename )) {
|
||||
header ( "HTTP/1.1 304 Not Modified" );
|
||||
@@ -1162,7 +1121,7 @@ class G
|
||||
*/
|
||||
public function getCheckSum ($files)
|
||||
{
|
||||
g::LoadClass( 'system' );
|
||||
Bootstrap::LoadClass( 'system' );
|
||||
$key = System::getVersion();
|
||||
|
||||
if (! is_array( $files )) {
|
||||
@@ -1252,7 +1211,7 @@ class G
|
||||
if (is_array( $vVar )) {
|
||||
foreach ($vVar as $sKey => $vValue) {
|
||||
if (is_array( $vValue )) {
|
||||
g::strip_slashes( $vVar[$sKey] );
|
||||
Bootstrap::strip_slashes( $vVar[$sKey] );
|
||||
} else {
|
||||
$vVar[$sKey] = stripslashes( $vVar[$sKey] );
|
||||
}
|
||||
@@ -1321,7 +1280,7 @@ class G
|
||||
$paths = glob($path.'*', GLOB_MARK|GLOB_ONLYDIR|GLOB_NOSORT);
|
||||
$files = glob($path.$pattern, $flags);
|
||||
foreach ($paths as $path) {
|
||||
$files = array_merge($files, g::rglob($pattern, $flags, $path));
|
||||
$files = array_merge($files, Bootstrap::rglob($pattern, $flags, $path));
|
||||
}
|
||||
return $files;
|
||||
}
|
||||
@@ -1336,7 +1295,7 @@ class G
|
||||
if ( function_exists('json_encode') ) {
|
||||
return json_encode($Json);
|
||||
} else {
|
||||
g::LoadThirdParty('pear/json', 'class.json');
|
||||
Bootstrap::LoadThirdParty('pear/json', 'class.json');
|
||||
$oJSON = new Services_JSON();
|
||||
return $oJSON->encode($Json);
|
||||
}
|
||||
@@ -1352,7 +1311,7 @@ class G
|
||||
if (function_exists('json_decode')) {
|
||||
return json_decode($Json);
|
||||
} else {
|
||||
g::LoadThirdParty('pear/json', 'class.json');
|
||||
Bootstrap::LoadThirdParty('pear/json', 'class.json');
|
||||
$oJSON = new Services_JSON();
|
||||
return $oJSON->decode($Json);
|
||||
}
|
||||
@@ -1453,7 +1412,7 @@ class G
|
||||
if ($file != '.' && $file != '..' && ! is_link( $nextpath ) && $file != '.svn') {
|
||||
if (is_dir( $nextpath )) {
|
||||
$dircount ++;
|
||||
$result = g::getDirectorySize( $nextpath, $maxmtime );
|
||||
$result = Bootstrap::getDirectorySize( $nextpath, $maxmtime );
|
||||
$totalsize += $result['size'];
|
||||
$totalcount += $result['count'];
|
||||
$dircount += $result['dircount'];
|
||||
@@ -1501,14 +1460,14 @@ class G
|
||||
|
||||
/**
|
||||
* Refactor function
|
||||
* @author Ralph A.
|
||||
* @author Ralph A.
|
||||
* @return multitype:array containing browser name and type
|
||||
*/
|
||||
public function get_current_browser()
|
||||
{
|
||||
static $a_full_assoc_data, $a_mobile_data, $browser_user_agent;
|
||||
static $browser_working, $moz_type, $webkit_type;
|
||||
|
||||
|
||||
//initialize all variables with default values to prevent error
|
||||
$a_full_assoc_data = '';
|
||||
$a_mobile_data = '';
|
||||
@@ -1518,14 +1477,14 @@ class G
|
||||
$moz_type = '';
|
||||
$ua_type = 'bot';// default to bot since you never know with bots
|
||||
$webkit_type = '';
|
||||
|
||||
|
||||
/*
|
||||
make navigator user agent string lower case to make sure all versions get caught
|
||||
isset protects against blank user agent failure. tolower also lets the script use
|
||||
strstr instead of stristr, which drops overhead slightly.
|
||||
*/
|
||||
$browser_user_agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );
|
||||
|
||||
|
||||
// known browsers, list will be updated routinely, check back now and then
|
||||
$a_browser_types = array(
|
||||
array( 'opera', true, 'op', 'bro' ),
|
||||
@@ -1651,11 +1610,11 @@ class G
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
$mobile_test = g::check_is_mobile( $browser_user_agent );
|
||||
}
|
||||
|
||||
$mobile_test = Bootstrap::check_is_mobile( $browser_user_agent );
|
||||
if ( $mobile_test ) {
|
||||
$a_mobile_data = g::get_mobile_data( $browser_user_agent );
|
||||
$a_mobile_data = Bootstrap::get_mobile_data( $browser_user_agent );
|
||||
$ua_type = 'mobile';
|
||||
}
|
||||
|
||||
@@ -1666,10 +1625,10 @@ class G
|
||||
'webkit_data' => array($webkit_type),
|
||||
'mobile_data' => array($a_mobile_data),
|
||||
);
|
||||
|
||||
|
||||
return $a_full_assoc_data;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* track total script execution time
|
||||
*/
|
||||
@@ -1719,7 +1678,7 @@ class G
|
||||
}
|
||||
}
|
||||
|
||||
$start_pos += g::get_set_count( 'get' );
|
||||
$start_pos += Bootstrap::get_set_count( 'get' );
|
||||
$string_working_number = substr( $pv_browser_user_agent, $start_pos, $substring_length );
|
||||
$string_working_number = substr( $string_working_number, 0, strcspn($string_working_number, ' );/') );
|
||||
if (!is_numeric( substr( $string_working_number, 0, 1 ))) {
|
||||
@@ -1841,7 +1800,7 @@ class G
|
||||
case 'mac':
|
||||
if (strstr($pv_browser_string, 'os x')) {
|
||||
if (strstr($pv_browser_string, 'os x ')) {
|
||||
$os_working_number = str_replace( '_', '.', g::get_item_version( $pv_browser_string, 'os x' ) );
|
||||
$os_working_number = str_replace( '_', '.', Bootstrap::get_item_version( $pv_browser_string, 'os x' ) );
|
||||
} else {
|
||||
$os_working_number = 10;
|
||||
}
|
||||
@@ -1940,7 +1899,7 @@ class G
|
||||
for ($k = 0; $k < $k_count; $k++) {
|
||||
if (strstr( $pv_browser_user_agent, $a_mobile_browser[$k] )) {
|
||||
$mobile_browser = $a_mobile_browser[$k];
|
||||
$mobile_browser_number = g::get_item_version( $pv_browser_user_agent, $mobile_browser );
|
||||
$mobile_browser_number = Bootstrap::get_item_version( $pv_browser_user_agent, $mobile_browser );
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1949,9 +1908,9 @@ class G
|
||||
if (strstr( $pv_browser_user_agent, $a_mobile_device[$k] )) {
|
||||
$mobile_device = trim ( $a_mobile_device[$k], '-_' ); // but not space trims yet
|
||||
if ($mobile_device == 'blackberry') {
|
||||
g::get_set_count( 'set', 0 );
|
||||
Bootstrap::get_set_count( 'set', 0 );
|
||||
}
|
||||
$mobile_device_number = g::get_item_version( $pv_browser_user_agent, $mobile_device );
|
||||
$mobile_device_number = Bootstrap::get_item_version( $pv_browser_user_agent, $mobile_device );
|
||||
$mobile_device = trim( $mobile_device ); // some of the id search strings have white space
|
||||
break;
|
||||
}
|
||||
@@ -1960,7 +1919,7 @@ class G
|
||||
for ($k = 0; $k < $k_count; $k++) {
|
||||
if (strstr( $pv_browser_user_agent, $a_mobile_os[$k] )) {
|
||||
$mobile_os = $a_mobile_os[$k];
|
||||
$mobile_os_number = str_replace( '_', '.', g::get_item_version( $pv_browser_user_agent, $mobile_os ) );
|
||||
$mobile_os_number = str_replace( '_', '.', Bootstrap::get_item_version( $pv_browser_user_agent, $mobile_os ) );
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -1968,14 +1927,14 @@ class G
|
||||
for ($k = 0; $k < $k_count; $k++) {
|
||||
if (strstr( $pv_browser_user_agent, $a_mobile_server[$k] )) {
|
||||
$mobile_server = $a_mobile_server[$k];
|
||||
$mobile_server_number = g::get_item_version( $pv_browser_user_agent, $mobile_server );
|
||||
$mobile_server_number = Bootstrap::get_item_version( $pv_browser_user_agent, $mobile_server );
|
||||
break;
|
||||
}
|
||||
}
|
||||
// just for cases where we know it's a mobile device already
|
||||
if (!$mobile_os && ( $mobile_browser || $mobile_device || $mobile_server ) && strstr( $pv_browser_user_agent, 'linux' ) ) {
|
||||
$mobile_os = 'linux';
|
||||
$mobile_os_number = g::get_item_version( $pv_browser_user_agent, 'linux' );
|
||||
$mobile_os_number = Bootstrap::get_item_version( $pv_browser_user_agent, 'linux' );
|
||||
}
|
||||
|
||||
$a_mobile_data = array( $mobile_device, $mobile_browser, $mobile_browser_number, $mobile_os, $mobile_os_number, $mobile_server, $mobile_server_number, $mobile_device_number );
|
||||
@@ -2020,7 +1979,7 @@ class G
|
||||
$plain = '/sys' . SYS_TEMP;
|
||||
|
||||
for ($i = 2; $i < count( $aRequestUri ); $i ++) {
|
||||
$decoded = g::decrypt( urldecode( $aRequestUri[$i] ), URL_KEY );
|
||||
$decoded = Bootstrap::decrypt( urldecode( $aRequestUri[$i] ), URL_KEY );
|
||||
if ($decoded == 'sWì›') {
|
||||
$decoded = $VARS[$i]; //this is for the string "../"
|
||||
}
|
||||
@@ -2169,7 +2128,7 @@ class G
|
||||
public function createUID ($scope, $id)
|
||||
{
|
||||
$e = $scope . $id;
|
||||
$e = g::encrypt( $e, URL_KEY );
|
||||
$e = Bootstrap::encrypt( $e, URL_KEY );
|
||||
$e = str_replace( array ('+','/','='
|
||||
), array ('__','_','___'
|
||||
), base64_encode( $e ) );
|
||||
@@ -2192,7 +2151,7 @@ class G
|
||||
), array ('___','__','_'
|
||||
), $uid );
|
||||
$e = base64_decode( $e );
|
||||
$e = g::decrypt( $e, URL_KEY );
|
||||
$e = Bootstrap::decrypt( $e, URL_KEY );
|
||||
$e = substr( $e, strlen( $scope ) );
|
||||
return $e;
|
||||
}
|
||||
@@ -2210,7 +2169,7 @@ class G
|
||||
$arrays = & func_get_args();
|
||||
foreach ($arrays as $array_i) {
|
||||
if (is_array( $array_i )) {
|
||||
g::array_merge_2( $array, $array_i );
|
||||
Bootstrap::array_merge_2( $array, $array_i );
|
||||
}
|
||||
}
|
||||
return $array;
|
||||
@@ -2232,7 +2191,7 @@ class G
|
||||
if (! isset( $array[$k] )) {
|
||||
$array[$k] = array ();
|
||||
}
|
||||
g::array_merge_2( $array[$k], $v );
|
||||
Bootstrap::array_merge_2( $array[$k], $v );
|
||||
} else {
|
||||
if (isset( $array[$k] ) && is_array( $array[$k] )) {
|
||||
$array[$k][0] = $v;
|
||||
@@ -2265,7 +2224,7 @@ class G
|
||||
if (! is_array( $result )) {
|
||||
$result = array ();
|
||||
}
|
||||
$result = $result + g::getSystemConstants();
|
||||
$result = $result + Bootstrap::getSystemConstants();
|
||||
$__textoEval = "";
|
||||
$u = 0;
|
||||
//$count=preg_match_all('/\@(?:([\@\%\#\!Qq])([a-zA-Z\_]\w*)|([a-zA-Z\_][\w\-\>\:]*)\(((?:[^\\\\\)]*(?:[\\\\][\w\W])?)*)\))/',$sqlString,$match,PREG_PATTERN_ORDER | PREG_OFFSET_CAPTURE);
|
||||
@@ -2280,7 +2239,7 @@ class G
|
||||
$u = $match[0][$r][1] + strlen( $match[0][$r][0] );
|
||||
//Mysql quotes scape
|
||||
if (($match[1][$r][0] == '@') && (isset( $result[$match[2][$r][0]] ))) {
|
||||
$__textoEval .= "\"" . g::sqlEscape( $result[$match[2][$r][0]], $DBEngine ) . "\"";
|
||||
$__textoEval .= "\"" . Bootstrap::sqlEscape( $result[$match[2][$r][0]], $DBEngine ) . "\"";
|
||||
continue;
|
||||
}
|
||||
//URL encode
|
||||
@@ -2300,14 +2259,14 @@ class G
|
||||
}
|
||||
//Substring (Sub replaceDataField)
|
||||
if (($match[1][$r][0]=='!')&&(isset($result[$match[2][$r][0]]))) {
|
||||
$__textoEval.=g::replaceDataField($result[$match[2][$r][0]],$result);
|
||||
$__textoEval.=Bootstrap::replaceDataField($result[$match[2][$r][0]],$result);
|
||||
continue;
|
||||
}
|
||||
//Call function
|
||||
if (($match[1][$r][0]==='')&&($match[2][$r][0]==='')&&($match[3][$r][0]!=='')) {
|
||||
eval('$strAux = ' . $match[3][$r][0] . '(\'' . addcslashes(g::replaceDataField(stripslashes($match[4][$r][0]),$result),'\\\'') . '\');');
|
||||
eval('$strAux = ' . $match[3][$r][0] . '(\'' . addcslashes(Bootstrap::replaceDataField(stripslashes($match[4][$r][0]),$result),'\\\'') . '\');');
|
||||
|
||||
if ($match[3][$r][0] == "g::LoadTranslation") {
|
||||
if ($match[3][$r][0] == "Bootstrap::LoadTranslation") {
|
||||
$arraySearch = array("'");
|
||||
$arrayReplace = array("\\'");
|
||||
$strAux = str_replace($arraySearch, $arrayReplace, $strAux);
|
||||
@@ -2318,12 +2277,12 @@ class G
|
||||
}
|
||||
//Non-quoted
|
||||
if (($match[1][$r][0]=='#')&&(isset($result[$match[2][$r][0]]))) {
|
||||
$__textoEval.=g::replaceDataField($result[$match[2][$r][0]],$result);
|
||||
$__textoEval.=Bootstrap::replaceDataField($result[$match[2][$r][0]],$result);
|
||||
continue;
|
||||
}
|
||||
//Non-quoted =
|
||||
if (($match[1][$r][0]=='=')&&(isset($result[$match[2][$r][0]]))) {
|
||||
$__textoEval.=g::replaceDataField($result[$match[2][$r][0]],$result);
|
||||
$__textoEval.=Bootstrap::replaceDataField($result[$match[2][$r][0]],$result);
|
||||
continue;
|
||||
}
|
||||
}
|
||||
@@ -2351,7 +2310,7 @@ class G
|
||||
*/
|
||||
public function getSystemConstants($params = null)
|
||||
{
|
||||
$t1 = g::microtime_float();
|
||||
$t1 = Bootstrap::microtime_float();
|
||||
$sysCon = array();
|
||||
|
||||
if (defined("SYS_LANG")) {
|
||||
@@ -2382,7 +2341,7 @@ class G
|
||||
switch ($params->option) {
|
||||
case "STORED SESSION":
|
||||
if (isset($params->SID)) {
|
||||
g::LoadClass("sessions");
|
||||
Bootstrap::LoadClass("sessions");
|
||||
|
||||
$oSessions = new Sessions($params->SID);
|
||||
$sysCon = array_merge($sysCon, $oSessions->getGlobals());
|
||||
@@ -2446,7 +2405,7 @@ class G
|
||||
}
|
||||
|
||||
$temp = $strTemplateName . ".php";
|
||||
$file = g::ExpandPath( 'templates' ) . $temp;
|
||||
$file = Bootstrap::ExpandPath( 'templates' ) . $temp;
|
||||
// Check if its a user template
|
||||
if (file_exists( $file )) {
|
||||
//require_once( $file );
|
||||
@@ -2479,7 +2438,7 @@ class G
|
||||
} else {
|
||||
if ($createPath) {
|
||||
//TODO:: Define Environment constants: Devel (0777), Production (0770), ...
|
||||
G::mk_dir( $strPath, 0777 );
|
||||
Bootstrap::mk_dir( $strPath, 0777 );
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
@@ -2555,18 +2514,18 @@ class G
|
||||
|
||||
$MONTHS = Array ();
|
||||
for ($i = 1; $i <= 12; $i ++) {
|
||||
$MONTHS[$i] = g::LoadTranslation( "ID_MONTH_$i", $lang );
|
||||
$MONTHS[$i] = Bootstrap::LoadTranslation( "ID_MONTH_$i", $lang );
|
||||
}
|
||||
|
||||
$d = (int) $day;
|
||||
$dd = g::complete_field( $day, 2, 1 );
|
||||
$dd = Bootstrap::complete_field( $day, 2, 1 );
|
||||
|
||||
//missing D
|
||||
|
||||
|
||||
$M = $MONTHS[$month];
|
||||
$m = (int) $month;
|
||||
$mm = g::complete_field( $month, 2, 1 );
|
||||
$mm = Bootstrap::complete_field( $month, 2, 1 );
|
||||
|
||||
$yy = substr( $year, strlen( $year ) - 2, 2 );
|
||||
$yyyy = $year;
|
||||
@@ -2667,7 +2626,7 @@ class G
|
||||
{
|
||||
print ("<script language=\"javascript\">{$c}</script>") ;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Generate random number
|
||||
*
|
||||
@@ -2683,7 +2642,7 @@ class G
|
||||
return $sUID;
|
||||
//return strtoupper(substr(uniqid(rand(0, 9), false),0,14));
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Encrypt URL
|
||||
*
|
||||
@@ -2695,7 +2654,7 @@ class G
|
||||
public function encryptlink ($url)
|
||||
{
|
||||
if (defined( 'ENABLE_ENCRYPT' ) && ENABLE_ENCRYPT == 'yes') {
|
||||
return urlencode( G::encrypt( $url, URL_KEY ) );
|
||||
return urlencode( Bootstrap::encrypt( $url, URL_KEY ) );
|
||||
} else {
|
||||
return $url;
|
||||
}
|
||||
|
||||
@@ -214,231 +214,6 @@ class G
|
||||
{
|
||||
return array_sum( explode( ' ', microtime() ) );
|
||||
}
|
||||
/* custom error functions */
|
||||
|
||||
/**
|
||||
* &setFatalErrorHandler
|
||||
*
|
||||
* @param string $newFatalErrorHandler default value null
|
||||
*
|
||||
* @return boolean true
|
||||
*/
|
||||
public function &setFatalErrorHandler ($newFatalErrorHandler = null)
|
||||
{
|
||||
if (isset( $newFatalErrorHandler )) {
|
||||
set_error_handler( $newFatalErrorHandler );
|
||||
} else {
|
||||
ob_start( array ('G','fatalErrorHandler'
|
||||
) );
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* setErrorHandler
|
||||
*
|
||||
* @param string setErrorHandler
|
||||
* @param object $newCustomErrorHandler
|
||||
*
|
||||
* @return boolean true
|
||||
*/
|
||||
/*public static*/
|
||||
public function setErrorHandler ($newCustomErrorHandler = null)
|
||||
{
|
||||
if (isset( $newCustomErrorHandler )) {
|
||||
set_error_handler( $newCustomErrorHandler );
|
||||
} else {
|
||||
set_error_handler( array ("G","customErrorHandler") );
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* fatalErrorHandler
|
||||
*
|
||||
* @param string $buffer
|
||||
*
|
||||
* @return string $errorBox or $buffer
|
||||
*/
|
||||
/*public static*/
|
||||
public function fatalErrorHandler ($buffer)
|
||||
{
|
||||
// The ereg function has been DEPRECATED as of PHP 5.3.0.
|
||||
// if (ereg("(error</b>:)(.+)(<br)", $buffer, $regs) ) {
|
||||
if (preg_match( "/(error</b>:)(.+)(<br)/", $buffer, $regs )) {
|
||||
$err = preg_replace( "/<.*?>/", "", $regs[2] );
|
||||
G::customErrorLog( 'FATAL', $err, '', 0, '' );
|
||||
$ip_addr = G::getIpAddress();
|
||||
$errorBox = "<table cellpadding=1 cellspacing=0 border=0 bgcolor=#808080 width=250><tr><td >" . "<table cellpadding=2 cellspacing=0 border=0 bgcolor=white width=100%>" . "<tr bgcolor=#d04040><td colspan=2 nowrap><font color=#ffffaa><code> ERROR CAUGHT check log file</code></font></td></tr>" . "<tr ><td colspan=2 nowrap><font color=black><code>IP address: $ip_addr</code></font></td></tr> " . "</table></td></tr></table>";
|
||||
return $errorBox;
|
||||
}
|
||||
return $buffer;
|
||||
}
|
||||
/**
|
||||
* customErrorHandler
|
||||
*
|
||||
* @param string $errno
|
||||
* @param string $msg
|
||||
* @param string $file
|
||||
* @param string $line
|
||||
* @param string $context
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
/*public static*/
|
||||
public function customErrorHandler ($errno, $msg, $file, $line, $context)
|
||||
{
|
||||
switch ($errno) {
|
||||
case E_ERROR:
|
||||
case E_USER_ERROR:
|
||||
$type = "FATAL";
|
||||
G::customErrorLog( $type, $msg, $file, $line );
|
||||
G::verboseError( $type, $errno, $msg, $file, $line, $context );
|
||||
if (defined( "ERROR_SHOW_SOURCE_CODE" ) && ERROR_SHOW_SOURCE_CODE) {
|
||||
G::showErrorSource( $type, $msg, $file, $line, "#c00000" );
|
||||
}
|
||||
die();
|
||||
break;
|
||||
case E_WARNING:
|
||||
case E_USER_WARNING:
|
||||
$type = "WARNING";
|
||||
G::customErrorLog( $type, $msg, $file, $line );
|
||||
break;
|
||||
case E_NOTICE:
|
||||
case E_USER_NOTICE:
|
||||
$type = "NOTICE";
|
||||
if (defined( "ERROR_LOG_NOTICE_ERROR" ) && ERROR_LOG_NOTICE_ERROR) {
|
||||
G::customErrorLog( $type, $msg, $file, $line );
|
||||
}
|
||||
break;
|
||||
case E_STRICT:
|
||||
$type = "STRICT"; //dont show STRICT Errors
|
||||
break;
|
||||
default:
|
||||
$type = "ERROR ($errno)";
|
||||
G::customErrorLog( $type, $msg, $file, $line );
|
||||
break;
|
||||
}
|
||||
if (defined( "ERROR_SHOW_SOURCE_CODE" ) && ERROR_SHOW_SOURCE_CODE && $errno != E_STRICT) {
|
||||
G::showErrorSource( $type, $msg, $file, $line );
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* public function showErrorSource
|
||||
*
|
||||
* @author David S. Callizaya S. <davidsantos@colosa.com>
|
||||
* @access public
|
||||
* @param eter string type
|
||||
* @param eter string msg
|
||||
* @param eter string file
|
||||
* @param eter string line
|
||||
* @return string
|
||||
*/
|
||||
public function showErrorSource ($type, $msg, $file, $line)
|
||||
{
|
||||
global $__src_array;
|
||||
$line_offset = 3;
|
||||
|
||||
if (! isset( $__src_array[$file] )) {
|
||||
$__src_array[$file] = @file( $file );
|
||||
}
|
||||
if (! $__src_array[$file]) {
|
||||
return;
|
||||
}
|
||||
if ($line - $line_offset < 1) {
|
||||
$start = 1;
|
||||
} else {
|
||||
$start = $line - $line_offset;
|
||||
}
|
||||
if ($line + $line_offset > count( $__src_array[$file] )) {
|
||||
$end = count( $__src_array[$file] );
|
||||
} else {
|
||||
$end = $line + $line_offset;
|
||||
}
|
||||
print "<table cellpadding=1 cellspacing=0 border=0 bgcolor=#808080 width=80%><tr><td >";
|
||||
print "<table cellpadding=2 cellspacing=0 border=0 bgcolor=white width=100%>";
|
||||
print "<tr bgcolor=#d04040>
|
||||
<td colspan=2 nowrap><font color=#ffffaa><code> $type: $msg</code></font></td></tr>
|
||||
<tr >
|
||||
<td colspan=2 nowrap><font color=gray>File: $file</font></td></tr>";
|
||||
for ($i = $start; $i <= $end; $i ++) {
|
||||
$str = @highlight_string( "<?php" . $__src_array[$file][$i - 1] . "?>", true );
|
||||
|
||||
$pos1 = strpos( $str, "<?" );
|
||||
$pos2 = strrpos( $str, "?>" );
|
||||
|
||||
$str = substr( $str, 0, $pos1 ) . substr( $str, $pos1 + 5, $pos2 - ($pos1 + 5) ) . substr( $str, $pos2 + 5 );
|
||||
|
||||
($i == $line) ? $bgcolor = "bgcolor=#ffccaa" : $bgcolor = "bgcolor=#ffffff";
|
||||
print "<tr><td bgcolor=#d0d0d0 width=15 align=right><code>$i</code></td>
|
||||
<td $bgcolor>$str</td></tr>";
|
||||
}
|
||||
|
||||
print "</table></td></tr></table><p>";
|
||||
}
|
||||
|
||||
/**
|
||||
* customErrorLog
|
||||
*
|
||||
* @param string $type
|
||||
* @param string $msg
|
||||
* @param string $file
|
||||
* @param string $line
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function customErrorLog ($type, $msg, $file, $line)
|
||||
{
|
||||
global $HTTP_X_FORWARDED_FOR, $REMOTE_ADDR, $HTTP_USER_AGENT, $REQUEST_URI;
|
||||
|
||||
$ip_addr = G::getIpAddress();
|
||||
|
||||
if (defined( 'APPLICATION_CODE' )) {
|
||||
$name = APPLICATION_CODE;
|
||||
} else {
|
||||
$name = "php";
|
||||
}
|
||||
if ($file != '') {
|
||||
$msg .= " in $file:$line ";
|
||||
}
|
||||
$date = date( 'Y-m-d H:i:s' );
|
||||
$REQUEST_URI = getenv( 'REQUEST_URI' );
|
||||
$HTTP_USER_AGENT = getenv( 'HTTP_USER_AGENT' );
|
||||
error_log( "[$date] [$ip_addr] [$name] $type: $msg [$HTTP_USER_AGENT] URI: $REQUEST_URI", 0 );
|
||||
}
|
||||
|
||||
/**
|
||||
* verboseError
|
||||
*
|
||||
* @param string $type
|
||||
* @param string $errno
|
||||
* @param string $msg
|
||||
* @param string $file
|
||||
* @param string $line
|
||||
* @param string $context
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
/*public static*/
|
||||
public function verboseError ($type, $errno, $msg, $file, $line, $context)
|
||||
{
|
||||
global $SERVER_ADMIN;
|
||||
|
||||
print "<h1>Error!</h1>";
|
||||
print "An error occurred while executing this script. Please
|
||||
contact the <a href=mailto:$SERVER_ADMIN>$SERVER_ADMIN</a> to
|
||||
report this error.";
|
||||
print "<p>";
|
||||
print "Here is the information provided by the script:";
|
||||
print "<hr><pre>";
|
||||
print "Error type: $type (code: $errno)<br>";
|
||||
print "Error message: $msg<br>";
|
||||
print "Script name and line number of error: $file:$line<br>";
|
||||
print "Variable context when error occurred: <br>";
|
||||
print_r( $context );
|
||||
print "</pre><hr>";
|
||||
}
|
||||
|
||||
/**
|
||||
* * Encrypt and decrypt functions ***
|
||||
@@ -1330,129 +1105,10 @@ class G
|
||||
G::header( "location: /errors/error404.php?l=" . $_SERVER['REQUEST_URI'] );
|
||||
}
|
||||
|
||||
switch (strtolower( $typefile )) {
|
||||
case "js":
|
||||
$paths = explode( '/', $filename );
|
||||
$jsName = $paths[count( $paths ) - 1];
|
||||
$output = '';
|
||||
$pathJs = PATH_GULLIVER_HOME . PATH_SEP . 'js' . PATH_SEP;
|
||||
switch ($jsName) {
|
||||
case 'draw2d.js':
|
||||
$filename = PATH_GULLIVER_HOME . 'js/ext/min/draw2d.js';
|
||||
@readfile( $filename );
|
||||
/* this code is commented, because in run time we dont generate the file ext-all.js
|
||||
the file was generate once and the committed to git. If there are changes in the included
|
||||
files we need to regenerate the file manually.
|
||||
$cachePath = PATH_C . 'ExtJs' . PATH_SEP;
|
||||
$checksum = G::getCheckSum( array ($pathJs . 'ext/wz_jsgraphics.js',$pathJs . 'ext/mootools.js',$pathJs . 'ext/moocanvas.js'
|
||||
) );
|
||||
|
||||
$cf = $cachePath . "ext-draw2d-cache.$checksum.js";
|
||||
$cfStored = G::getCacheFileNameByPattern( $cachePath, 'ext-draw2d-cache.*.js' );
|
||||
//error_log("draw2d.js ".$checksum ."==". $cfStored['checksum']);
|
||||
if (is_file( $cfStored['filename'] ) && $checksum == $cfStored['checksum']) {
|
||||
$output = file_get_contents( $cf );
|
||||
} else {
|
||||
if (is_file( $cfStored['filename'] )) {
|
||||
@unlink( $cfStored['filename'] );
|
||||
}
|
||||
$output .= JSMin::minify( file_get_contents( $pathJs . 'ext/wz_jsgraphics.js' ) );
|
||||
$output .= JSMin::minify( file_get_contents( $pathJs . 'ext/mootools.js' ) );
|
||||
$output .= JSMin::minify( file_get_contents( $pathJs . 'ext/moocanvas.js' ) );
|
||||
$output .= file_get_contents( $pathJs . 'ext/draw2d.js' ); //already minified
|
||||
file_put_contents( $cf, $output );
|
||||
}
|
||||
*/
|
||||
break;
|
||||
case 'ext-all.js':
|
||||
$filename = PATH_GULLIVER_HOME . 'js/ext/min/ext-all.js';
|
||||
@readfile( $filename );
|
||||
/* this code is commented, because in run time we dont generate the file ext-all.js
|
||||
the file was generate once and the committed to git. If there are changes in the included
|
||||
files we need to regenerate the file manually.
|
||||
$cachePath = PATH_C . 'ExtJs' . PATH_SEP;
|
||||
$checksum = G::getCheckSum( array ($pathJs . 'ext/pmos-common.js',$pathJs . 'ext/ux/miframe.js',$pathJs . 'ext/ux.locationbar/Ext.ux.LocationBar.js',$pathJs . 'ext/ux.statusbar/ext-statusbar.js',$pathJs . 'ext/ux.treefilterx/Ext.ux.tree.TreeFilterX.js'
|
||||
) );
|
||||
|
||||
$cfStored = G::getCacheFileNameByPattern( $cachePath, 'ext-all-cache.*.js' );
|
||||
$cf = PATH_C . 'ExtJs' . PATH_SEP . "ext-all-cache.$checksum.js";
|
||||
if (is_file( $cfStored['filename'] ) && $checksum == $cfStored['checksum']) {
|
||||
$output = file_get_contents( $cf );
|
||||
} else {
|
||||
if (is_file( $cfStored['filename'] )) {
|
||||
@unlink( $cfStored['filename'] );
|
||||
}
|
||||
$output .= file_get_contents( $pathJs . 'ext/ext-all.js' ); //already minified
|
||||
$output .= file_get_contents( $pathJs . 'ext/ux/ux-all.js' ); //already minified
|
||||
$output .= JSMin::minify( file_get_contents( $pathJs . 'ext/pmos-common.js' ) );
|
||||
$output .= JSMin::minify( file_get_contents( $pathJs . 'ext/ux/miframe.js' ) );
|
||||
$output .= JSMin::minify( file_get_contents( $pathJs . 'ext/ux.locationbar/Ext.ux.LocationBar.js' ) );
|
||||
$output .= JSMin::minify( file_get_contents( $pathJs . 'ext/ux.statusbar/ext-statusbar.js' ) );
|
||||
$output .= JSMin::minify( file_get_contents( $pathJs . 'ext/ux.treefilterx/Ext.ux.tree.TreeFilterX.js' ) );
|
||||
file_put_contents( $cf, $output );
|
||||
}
|
||||
*/
|
||||
break;
|
||||
default:
|
||||
@readfile( $filename );
|
||||
break;
|
||||
}
|
||||
print $output;
|
||||
break;
|
||||
case 'css':
|
||||
print G::trimSourceCodeFile( $filename );
|
||||
break;
|
||||
default:
|
||||
@readfile( $filename );
|
||||
break;
|
||||
if ( substr($filename,-10) == "ext-all.js" ) {
|
||||
$filename = PATH_GULLIVER_HOME . 'js/ext/min/ext-all.js';
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* trimSourceCodeFile
|
||||
*
|
||||
* @param string $filename
|
||||
*
|
||||
* @return string $output
|
||||
*/
|
||||
public function trimSourceCodeFile ($filename)
|
||||
{
|
||||
$handle = fopen( $filename, "r" );
|
||||
$lastChar = '';
|
||||
$firstChar = '';
|
||||
$content = '';
|
||||
$line = '';
|
||||
|
||||
if ($handle) {
|
||||
while (! feof( $handle )) {
|
||||
//$line = trim( fgets($handle, 16096) ) . "\n" ;
|
||||
$line = fgets( $handle, 16096 );
|
||||
$content .= $line;
|
||||
}
|
||||
fclose( $handle );
|
||||
}
|
||||
return $content;
|
||||
|
||||
$index = 0;
|
||||
$output = '';
|
||||
while ($index < strlen( $content )) {
|
||||
$car = $content[$index];
|
||||
$index ++;
|
||||
if ($car == '/' && isset( $content[$index] ) && $content[$index] == '*') {
|
||||
$endComment = false;
|
||||
$index ++;
|
||||
while ($endComment == false && $index < strlen( $content )) {
|
||||
if ($content[$index] == '*' && isset( $content[$index + 1] ) && $content[$index + 1] == '/') {
|
||||
$endComment = true;
|
||||
$index ++;
|
||||
}
|
||||
$index ++;
|
||||
}
|
||||
$car = '';
|
||||
}
|
||||
$output .= $car;
|
||||
}
|
||||
return $output;
|
||||
@readfile( $filename );
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -3371,7 +3027,7 @@ class G
|
||||
/**
|
||||
* Validate and emai address in complete forms,
|
||||
*
|
||||
* @author Erik A.O. <erik@gmail.com, aortiz.erik@gmail.com>
|
||||
* @author Erik A.O. <erik@colosa.com>
|
||||
* i.e. if the param. is 'erik a.o. <erik@colosa.com>'
|
||||
* -> returns a object within $o->email => erik@colosa.com and $o->name => erik A.O. in other case returns false
|
||||
*
|
||||
@@ -3404,7 +3060,7 @@ class G
|
||||
/**
|
||||
* JSON encode
|
||||
*
|
||||
* @author Erik A.O. <erik@gmail.com, aortiz.erik@gmail.com>
|
||||
* @author Erik A.O. <erik@colosa.com>
|
||||
*/
|
||||
public function json_encode($Json)
|
||||
{
|
||||
@@ -3420,7 +3076,7 @@ class G
|
||||
/**
|
||||
* JSON decode
|
||||
*
|
||||
* @author Erik A.O. <erik@gmail.com, aortiz.erik@gmail.com>
|
||||
* @author Erik A.O. <erik@colosa.com>
|
||||
*/
|
||||
public function json_decode($Json)
|
||||
{
|
||||
@@ -3689,11 +3345,11 @@ class G
|
||||
return $infoUser;
|
||||
}
|
||||
|
||||
public function getModel($model)
|
||||
{
|
||||
require_once "classes/model/$model.php";
|
||||
return new $model();
|
||||
}
|
||||
//public function getModel($model)
|
||||
//{
|
||||
// require_once "classes/model/$model.php";
|
||||
// return new $model();
|
||||
//}
|
||||
|
||||
/**
|
||||
* Recursive Is writeable function
|
||||
|
||||
@@ -4922,8 +4922,9 @@ class XmlForm
|
||||
}
|
||||
}
|
||||
|
||||
$oJSON = new Services_JSON();
|
||||
$this->objectRequiredFields = str_replace( '"', "%27", str_replace( "'", "%39", $oJSON->encode( $this->requiredFields ) ) );
|
||||
//$oJSON = new Services_JSON();
|
||||
$jsonRequired = G::json_encode( $this->requiredFields );
|
||||
$this->objectRequiredFields = str_replace( '"', "%27", str_replace( "'", "%39", $jsonRequired ) );
|
||||
|
||||
//Load the default values
|
||||
//$this->setDefaultValues();
|
||||
|
||||
@@ -50,8 +50,8 @@ class dashletRssReader implements DashletInterface
|
||||
curl_setopt( $pCurl, CURLOPT_CONNECTTIMEOUT, 10 );
|
||||
curl_setopt( $pCurl, CURLOPT_TIMEOUT, 20 );
|
||||
|
||||
curl_setopt( $pCurl, CURLOPT_NOPROGRESS, false );
|
||||
curl_setopt( $pCurl, CURLOPT_VERBOSE, true );
|
||||
curl_setopt( $pCurl, CURLOPT_NOPROGRESS, true );
|
||||
curl_setopt( $pCurl, CURLOPT_VERBOSE, false );
|
||||
|
||||
//Apply proxy settings
|
||||
$sysConf = System::getSystemConfiguration();
|
||||
|
||||
@@ -66,7 +66,7 @@ class PMmemcached
|
||||
$this->version = $this->mem->getVersion();
|
||||
}
|
||||
} else {
|
||||
G::Loadclass( 'fileCache' );
|
||||
require_once ('classes/class.fileCache.php');
|
||||
// create cache folder
|
||||
$cacheFolder = PATH_DATA . "sites/" . $workspace . "/cachefiles/";
|
||||
if (! file_exists( $cacheFolder )) {
|
||||
|
||||
@@ -1102,7 +1102,7 @@ class PMPluginRegistry
|
||||
{
|
||||
try {
|
||||
$iPlugins = 0;
|
||||
G::LoadClass( 'serverConfiguration' );
|
||||
require_once ( 'class.serverConfiguration.php' );
|
||||
$oServerConf = & serverConf::getSingleton();
|
||||
$oServerConf->addPlugin( SYS_SYS, $this->_aPluginDetails );
|
||||
foreach ($this->_aPluginDetails as $namespace => $detail) {
|
||||
|
||||
@@ -120,7 +120,9 @@ if (strlen($msgType) > 0) {
|
||||
$_SESSION['FAILED_LOGINS'] = $sFailedLogins;
|
||||
|
||||
//translation
|
||||
$Translations = G::getModel("Translation");
|
||||
//$Translations = G::getModel("Translation");
|
||||
require_once "classes/model/Translation.php";
|
||||
$Translations = new Translation();
|
||||
$translationsTable = $Translations->getTranslationEnvironments();
|
||||
|
||||
$availableLangArray = array ();
|
||||
|
||||
@@ -83,10 +83,13 @@ function getWorkspacesAvailable()
|
||||
sort ($filesArray, SORT_STRING);
|
||||
return $filesArray;
|
||||
}
|
||||
|
||||
$availableWorkspace = getWorkspacesAvailable ();
|
||||
|
||||
//Translations
|
||||
$Translations = G::getModel("Translation");
|
||||
//$Translations = G::getModel("Translation"); <-- ugly way to get a class
|
||||
require_once "classes/model/Translation.php";
|
||||
$Translations = new Translation();
|
||||
$translationsTable = $Translations->getTranslationEnvironments();
|
||||
|
||||
$availableLangArray = array ();
|
||||
@@ -103,7 +106,6 @@ foreach ($translationsTable as $locale) {
|
||||
$availableLangArray [] = $aFields;
|
||||
}
|
||||
|
||||
|
||||
$availableWorkspaceArray = array ();
|
||||
$availableWorkspaceArray [] = array ('ENV_ID' => 'char', 'ENV_NAME' => 'char');
|
||||
foreach ($availableWorkspace as $envKey => $envName) {
|
||||
@@ -120,8 +122,9 @@ $_SESSION ['_DBArray'] = $_DBArray;
|
||||
|
||||
$aField ['LOGIN_VERIFY_MSG'] = G::loadTranslation ('LOGIN_VERIFY_MSG');
|
||||
$aField['USER_LANG'] = SYS_LANG;
|
||||
|
||||
//Get Server Configuration
|
||||
G::LoadClass ('serverConfiguration');
|
||||
//G::LoadClass ('serverConfiguration'); //already called
|
||||
$oServerConf = & serverConf::getSingleton ();
|
||||
|
||||
$G_PUBLISH = new Publisher ();
|
||||
@@ -131,8 +134,8 @@ if ($oServerConf->getProperty ('LOGIN_NO_WS')) {
|
||||
$G_PUBLISH->AddContent ('xmlform', 'xmlform', 'login/sysLogin', '', $aField, 'sysLogin');
|
||||
}
|
||||
|
||||
|
||||
G::RenderPage ("publish");
|
||||
|
||||
?>
|
||||
<script type="text/javascript">
|
||||
var oInfoPanel;
|
||||
|
||||
@@ -36,9 +36,11 @@ try {
|
||||
die;
|
||||
break;
|
||||
}*/
|
||||
$oJSON = new Services_JSON();
|
||||
//$oJSON = new Services_JSON();
|
||||
|
||||
if (isset( $_REQUEST['data'] )) {
|
||||
$oData = $oJSON->decode( stripslashes( $_REQUEST['data'] ) );
|
||||
$oData = G::json_decode( stripslashes( $_REQUEST['data'] ) );
|
||||
//$oData = $oJSON->decode( stripslashes( $_REQUEST['data'] ) );
|
||||
$sOutput = '';
|
||||
}
|
||||
|
||||
|
||||
@@ -15,8 +15,9 @@ try {
|
||||
break;
|
||||
}
|
||||
|
||||
$oJSON = new Services_JSON();
|
||||
$aData = get_object_vars( $oJSON->decode( $_POST['oData'] ) );
|
||||
//$oJSON = new Services_JSON();
|
||||
$aData = get_object_vars( G::json_decode( $_POST['oData'] ));
|
||||
//$aData = get_object_vars( $oJSON->decode( $_POST['oData'] ) );
|
||||
|
||||
if (isset( $_POST['function'] )) {
|
||||
$sAction = $_POST['function'];
|
||||
|
||||
@@ -23,7 +23,7 @@
|
||||
*/
|
||||
|
||||
/**
|
||||
* sysGeneric - ProcessMaker Bootstrap
|
||||
* bootstrap - ProcessMaker Bootstrap
|
||||
* this file is used initialize main variables, redirect and dispatch all requests
|
||||
*/
|
||||
|
||||
@@ -49,6 +49,24 @@ define( 'PATH_HOME', $pathhome );
|
||||
define( 'PATH_TRUNK', $pathTrunk );
|
||||
define( 'PATH_OUTTRUNK', $pathOutTrunk );
|
||||
|
||||
//we are focusing in have this behaivour
|
||||
//1. if the uri is a existing file return the file inmediately
|
||||
//2. if the uri point to png, jpg, js, or css mapped in other place, return it inmediately
|
||||
//3. process the uri,
|
||||
|
||||
//here we are putting approved CONSTANTS, I mean constants be sure we need,
|
||||
define( 'PATH_HTML', PATH_HOME . 'public_html' . PATH_SEP );
|
||||
|
||||
//this is the first path, if the file exists...
|
||||
if (file_exists(PATH_HTML . $_SERVER['REQUEST_URI'])) {
|
||||
//we are missing the header part
|
||||
//to do: add header mime part
|
||||
readfile(PATH_HTML . $_SERVER['REQUEST_URI']);
|
||||
die;
|
||||
|
||||
}
|
||||
|
||||
|
||||
// Defining RBAC Paths constants
|
||||
define( 'PATH_RBAC_HOME', PATH_TRUNK . 'rbac' . PATH_SEP );
|
||||
|
||||
@@ -60,7 +78,6 @@ define( 'PATH_TEMPLATE', PATH_GULLIVER_HOME . 'templates' . PATH_SEP );
|
||||
define( 'PATH_THIRDPARTY', PATH_GULLIVER_HOME . 'thirdparty' . PATH_SEP );
|
||||
define( 'PATH_RBAC', PATH_RBAC_HOME . 'engine' . PATH_SEP . 'classes' . PATH_SEP ); //to enable rbac version 2
|
||||
define( 'PATH_RBAC_CORE', PATH_RBAC_HOME . 'engine' . PATH_SEP );
|
||||
define( 'PATH_HTML', PATH_HOME . 'public_html' . PATH_SEP );
|
||||
|
||||
// Defining PMCore Path constants
|
||||
define( 'PATH_CORE', PATH_HOME . 'engine' . PATH_SEP );
|
||||
@@ -92,38 +109,37 @@ define( 'PATH_SERVICES_REST', PATH_CORE . 'services' . PATH_SEP . 'rest' . PATH_
|
||||
require_once (PATH_GULLIVER . PATH_SEP . 'class.bootstrap.php');
|
||||
|
||||
if (file_exists( FILE_PATHS_INSTALLED )) {
|
||||
// backward compatibility; parsing old definitions in the compiled path constant
|
||||
$tmp = file_get_contents( FILE_PATHS_INSTALLED );
|
||||
|
||||
if (strpos( $tmp, 'PATH_OUTTRUNK' ) !== false) {
|
||||
@file_put_contents( FILE_PATHS_INSTALLED, str_replace( 'PATH_OUTTRUNK', 'PATH_DATA', $tmp ) );
|
||||
}
|
||||
// end backward compatibility
|
||||
|
||||
|
||||
// include the workspace installed configuration
|
||||
// include the server installed configuration
|
||||
require_once FILE_PATHS_INSTALLED;
|
||||
|
||||
// defining system constant when a valid workspace environment exists
|
||||
|
||||
// defining system constant when a valid server environment exists
|
||||
define( 'PATH_LANGUAGECONT', PATH_DATA . "META-INF" . PATH_SEP );
|
||||
define( 'PATH_CUSTOM_SKINS', PATH_DATA . 'skins' . PATH_SEP );
|
||||
define( 'PATH_TEMPORAL', PATH_C . 'dynEditor/' );
|
||||
define( 'PATH_DB', PATH_DATA . 'sites' . PATH_SEP );
|
||||
|
||||
// smarty constants
|
||||
define( 'PATH_SMARTY_C', PATH_C . 'smarty' . PATH_SEP . 'c' );
|
||||
define( 'PATH_SMARTY_CACHE', PATH_C . 'smarty' . PATH_SEP . 'cache' );
|
||||
|
||||
/* To do:
|
||||
if (! is_dir( PATH_SMARTY_C )) {
|
||||
G::mk_dir( PATH_SMARTY_C );
|
||||
}
|
||||
|
||||
|
||||
if (! is_dir( PATH_SMARTY_CACHE )) {
|
||||
G::mk_dir( PATH_SMARTY_CACHE );
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
// set include path
|
||||
set_include_path( PATH_CORE . PATH_SEPARATOR . PATH_THIRDPARTY . PATH_SEPARATOR . PATH_THIRDPARTY . 'pear' . PATH_SEPARATOR . PATH_RBAC_CORE . PATH_SEPARATOR . get_include_path() );
|
||||
set_include_path( PATH_CORE . PATH_SEPARATOR .
|
||||
PATH_THIRDPARTY . PATH_SEPARATOR .
|
||||
PATH_THIRDPARTY . 'pear' . PATH_SEPARATOR .
|
||||
PATH_RBAC_CORE . PATH_SEPARATOR .
|
||||
get_include_path()
|
||||
);
|
||||
|
||||
/**
|
||||
* Global definitions, before it was the defines.php file
|
||||
@@ -158,13 +174,10 @@ define( 'PML_WSDL_URL', PML_SERVER . '/syspmLibrary/en/green/services/wsdl' );
|
||||
define( 'PML_UPLOAD_URL', PML_SERVER . '/syspmLibrary/en/green/services/uploadProcess' );
|
||||
define( 'PML_DOWNLOAD_URL', PML_SERVER . '/syspmLibrary/en/green/services/download' );
|
||||
|
||||
// Including these files we get the PM paths and definitions (that should be just one file.
|
||||
require_once PATH_CORE . 'classes' . PATH_SEP . 'class.system.php';
|
||||
|
||||
// starting session
|
||||
session_start();
|
||||
|
||||
$config = System::getSystemConfiguration();
|
||||
$config = Bootstrap::getSystemConfiguration();
|
||||
|
||||
$e_all = defined( 'E_DEPRECATED' ) ? E_ALL & ~ E_DEPRECATED : E_ALL;
|
||||
$e_all = defined( 'E_STRICT' ) ? $e_all & ~ E_STRICT : $e_all;
|
||||
@@ -191,15 +204,10 @@ $_SERVER['SERVER_ADDR'] = isset( $_SERVER['SERVER_ADDR'] ) ? $_SERVER['SERVER_AD
|
||||
|
||||
//to do: make different environments. sys
|
||||
|
||||
|
||||
define( 'ERROR_SHOW_SOURCE_CODE', true ); // enable ERROR_SHOW_SOURCE_CODE to display the source code for any WARNING OR NOTICE
|
||||
//define ( 'ERROR_LOG_NOTICE_ERROR', true ); //enable ERROR_LOG_NOTICE_ERROR to log Notices messages in default apache log
|
||||
|
||||
|
||||
//check if it is a installation instance
|
||||
if (! defined( 'PATH_C' )) {
|
||||
// is a intallation instance, so we need to define PATH_C and PATH_LANGUAGECONT constants temporarily
|
||||
define( 'PATH_C', (rtrim( G::sys_get_temp_dir(), PATH_SEP ) . PATH_SEP) );
|
||||
define( 'PATH_C', (rtrim( Bootstrap::sys_get_temp_dir(), PATH_SEP ) . PATH_SEP) );
|
||||
define( 'PATH_LANGUAGECONT', PATH_HOME . 'engine/content/languages/' );
|
||||
}
|
||||
|
||||
@@ -216,7 +224,7 @@ if (defined( 'PATH_C' )) {
|
||||
}
|
||||
|
||||
$virtualURITable['/htmlarea/(*)'] = PATH_THIRDPARTY . 'htmlarea/';
|
||||
$virtualURITable['/sys[a-zA-Z][a-zA-Z0-9]{0,}()/'] = 'sysNamed';
|
||||
//$virtualURITable['/sys[a-zA-Z][a-zA-Z0-9]{0,}()/'] = 'sysNamed';
|
||||
$virtualURITable['/(sys*)'] = FALSE;
|
||||
$virtualURITable['/errors/(*)'] = PATH_GULLIVER_HOME . 'methods/errors/';
|
||||
$virtualURITable['/gulliver/(*)'] = PATH_GULLIVER_HOME . 'methods/';
|
||||
@@ -225,15 +233,15 @@ $virtualURITable['/html2ps_pdf/(*)'] = PATH_THIRDPARTY . 'html2ps_pdf/';
|
||||
$virtualURITable['/images/'] = 'errorFile';
|
||||
$virtualURITable['/skins/'] = 'errorFile';
|
||||
$virtualURITable['/files/'] = 'errorFile';
|
||||
$virtualURITable['/[a-zA-Z][a-zA-Z0-9]{0,}()'] = 'sysUnnamed';
|
||||
//$virtualURITable['/[a-zA-Z][a-zA-Z0-9]{0,}()'] = 'sysUnnamed';
|
||||
$virtualURITable['/rest/(*)'] = 'rest-service';
|
||||
$virtualURITable['/update/(*)'] = PATH_GULLIVER_HOME . 'methods/update/';
|
||||
$virtualURITable['/(*)'] = PATH_HTML;
|
||||
//$virtualURITable['/(*)'] = PATH_HTML;
|
||||
$virtualURITable['/css/(*)'] = PATH_HTML . 'css/'; //ugly
|
||||
|
||||
$isRestRequest = false;
|
||||
|
||||
// Verify if we need to redirect or stream the file, if G:VirtualURI returns true means we are going to redirect the page
|
||||
if (G::virtualURI( $_SERVER['REQUEST_URI'], $virtualURITable, $realPath )) {
|
||||
if (Bootstrap::virtualURI( $_SERVER['REQUEST_URI'], $virtualURITable, $realPath )) {
|
||||
// review if the file requested belongs to public_html plugin
|
||||
if (substr( $realPath, 0, 6 ) == 'plugin') {
|
||||
// Another way to get the path of Plugin public_html and stream the correspondent file, By JHL Jul 14, 08
|
||||
@@ -245,7 +253,7 @@ if (G::virtualURI( $_SERVER['REQUEST_URI'], $virtualURITable, $realPath )) {
|
||||
if (isset( $forQuery[1] )) {
|
||||
$pathsQuery = $forQuery[1];
|
||||
}
|
||||
|
||||
|
||||
//Get that path in array
|
||||
$paths = explode( PATH_SEP, $forQuery[0] );
|
||||
//remove the "plugin" word from
|
||||
@@ -255,15 +263,15 @@ if (G::virtualURI( $_SERVER['REQUEST_URI'], $virtualURITable, $realPath )) {
|
||||
//The other parts are the realpath into public_html (no matter how many elements)
|
||||
$filePath = implode( PATH_SEP, $paths );
|
||||
$pluginFilename = PATH_PLUGINS . $pluginFolder . PATH_SEP . 'public_html' . PATH_SEP . $filePath;
|
||||
|
||||
|
||||
if (file_exists( $pluginFilename )) {
|
||||
G::streamFile( $pluginFilename );
|
||||
Bootstrap::streamFile( $pluginFilename );
|
||||
}
|
||||
die();
|
||||
}
|
||||
|
||||
|
||||
$requestUriArray = explode( "/", $_SERVER['REQUEST_URI'] );
|
||||
|
||||
|
||||
if ((isset( $requestUriArray[1] )) && ($requestUriArray[1] == 'skin')) {
|
||||
// This will allow to public images of Custom Skins, By JHL Feb 28, 11
|
||||
$pathsQuery = "";
|
||||
@@ -273,13 +281,13 @@ if (G::virtualURI( $_SERVER['REQUEST_URI'], $virtualURITable, $realPath )) {
|
||||
if (isset( $forQuery[1] )) {
|
||||
$pathsQuery = $forQuery[1];
|
||||
}
|
||||
|
||||
|
||||
//Get that path in array
|
||||
$paths = explode( PATH_SEP, $forQuery[0] );
|
||||
$fileToBeStreamed = str_replace( "/skin/", PATH_CUSTOM_SKINS, $_SERVER['REQUEST_URI'] );
|
||||
|
||||
|
||||
if (file_exists( $fileToBeStreamed )) {
|
||||
G::streamFile( $fileToBeStreamed );
|
||||
Bootstrap::streamFile( $fileToBeStreamed );
|
||||
}
|
||||
die();
|
||||
}
|
||||
@@ -293,15 +301,15 @@ if (G::virtualURI( $_SERVER['REQUEST_URI'], $virtualURITable, $realPath )) {
|
||||
die();
|
||||
break;
|
||||
case 'jsMethod':
|
||||
G::parseURI( getenv( "REQUEST_URI" ) );
|
||||
Bootstrap::parseURI( getenv( "REQUEST_URI" ) );
|
||||
$filename = PATH_METHODS . SYS_COLLECTION . '/' . SYS_TARGET . '.js';
|
||||
G::streamFile( $filename );
|
||||
Bootstrap::streamFile( $filename );
|
||||
die();
|
||||
break;
|
||||
case 'errorFile':
|
||||
header( "location: /errors/error404.php?url=" . urlencode( $_SERVER['REQUEST_URI'] ) );
|
||||
if (DEBUG_TIME_LOG)
|
||||
G::logTimeByPage(); //log this page
|
||||
Bootstrap::logTimeByPage(); //log this page
|
||||
die();
|
||||
break;
|
||||
default:
|
||||
@@ -310,26 +318,25 @@ if (G::virtualURI( $_SERVER['REQUEST_URI'], $virtualURITable, $realPath )) {
|
||||
} else {
|
||||
$realPath = explode( '?', $realPath );
|
||||
$realPath[0] .= strpos( basename( $realPath[0] ), '.' ) === false ? '.php' : '';
|
||||
G::streamFile( $realPath[0] );
|
||||
Bootstrap::streamFile( $realPath[0] );
|
||||
die();
|
||||
}
|
||||
}
|
||||
} //virtual URI parser
|
||||
|
||||
|
||||
// the request correspond to valid php page, now parse the URI
|
||||
G::parseURI( getenv( "REQUEST_URI" ), $isRestRequest );
|
||||
Bootstrap::parseURI( getenv( "REQUEST_URI" ), $isRestRequest );
|
||||
|
||||
if (G::isPMUnderUpdating()) {
|
||||
if (Bootstrap::isPMUnderUpdating()) {
|
||||
header( "location: /update/updating.php" );
|
||||
if (DEBUG_TIME_LOG)
|
||||
G::logTimeByPage();
|
||||
Bootstrap::logTimeByPage();
|
||||
die();
|
||||
}
|
||||
|
||||
// verify if index.html exists
|
||||
if (! file_exists( PATH_HTML . 'index.html' )) { // if not, create it from template
|
||||
file_put_contents( PATH_HTML . 'index.html', G::parseTemplate( PATH_TPL . 'index.html', array ('lang' => SYS_LANG,'skin' => SYS_SKIN
|
||||
file_put_contents( PATH_HTML . 'index.html', Bootstrap::parseTemplate( PATH_TPL . 'index.html', array ('lang' => SYS_LANG,'skin' => SYS_SKIN
|
||||
) ) );
|
||||
}
|
||||
|
||||
@@ -338,55 +345,54 @@ define( 'SYS_URI', '/sys' . SYS_TEMP . '/' . SYS_LANG . '/' . SYS_SKIN . '/' );
|
||||
// defining the serverConf singleton
|
||||
if (defined( 'PATH_DATA' ) && file_exists( PATH_DATA )) {
|
||||
//Instance Server Configuration Singleton
|
||||
G::LoadClass( 'serverConfiguration' );
|
||||
Bootstrap::LoadClass( 'serverConfiguration' );
|
||||
$oServerConf = & serverConf::getSingleton();
|
||||
}
|
||||
|
||||
// Call Gulliver Classes
|
||||
G::LoadThirdParty( 'pear/json', 'class.json' );
|
||||
G::LoadThirdParty( 'smarty/libs', 'Smarty.class' );
|
||||
G::LoadSystem( 'error' );
|
||||
G::LoadSystem( 'dbconnection' );
|
||||
G::LoadSystem( 'dbsession' );
|
||||
G::LoadSystem( 'dbrecordset' );
|
||||
G::LoadSystem( 'dbtable' );
|
||||
G::LoadSystem( 'rbac' );
|
||||
G::LoadSystem( 'publisher' );
|
||||
G::LoadSystem( 'templatePower' );
|
||||
G::LoadSystem( 'xmlDocument' );
|
||||
G::LoadSystem( 'xmlform' );
|
||||
G::LoadSystem( 'xmlformExtension' );
|
||||
G::LoadSystem( 'form' );
|
||||
G::LoadSystem( 'menu' );
|
||||
G::LoadSystem( "xmlMenu" );
|
||||
G::LoadSystem( 'dvEditor' );
|
||||
G::LoadSystem( 'controller' );
|
||||
G::LoadSystem( 'httpProxyController' );
|
||||
G::LoadSystem( 'pmException' );
|
||||
Bootstrap::LoadThirdParty( 'smarty/libs', 'Smarty.class' );
|
||||
//Bootstrap::LoadSystem( 'error' );
|
||||
//Bootstrap::LoadSystem( 'dbconnection' );
|
||||
//Bootstrap::LoadSystem( 'dbsession' );
|
||||
//Bootstrap::LoadSystem( 'dbrecordset' );
|
||||
//Bootstrap::LoadSystem( 'dbtable' );
|
||||
|
||||
//* Bootstrap::LoadSystem( 'publisher' );
|
||||
//Bootstrap::LoadSystem( 'templatePower' );
|
||||
//* Bootstrap::LoadSystem( 'xmlDocument' );
|
||||
//* Bootstrap::LoadSystem( 'xmlform' );
|
||||
//Bootstrap::LoadSystem( 'xmlformExtension' );
|
||||
//* Bootstrap::LoadSystem( 'form' );
|
||||
//* Bootstrap::LoadSystem( 'menu' );
|
||||
//Bootstrap::LoadSystem( "xmlMenu" );
|
||||
//Bootstrap::LoadSystem( 'dvEditor' );
|
||||
//Bootstrap::LoadSystem( 'controller' );
|
||||
//Bootstrap::LoadSystem( 'httpProxyController' );
|
||||
//Bootstrap::LoadSystem( 'pmException' );
|
||||
//
|
||||
// Create headPublisher singleton
|
||||
G::LoadSystem( 'headPublisher' );
|
||||
Bootstrap::LoadSystem( 'headPublisher' );
|
||||
$oHeadPublisher = & headPublisher::getSingleton();
|
||||
|
||||
// Installer, redirect to install if we don't have a valid shared data folder
|
||||
if (! defined( 'PATH_DATA' ) || ! file_exists( PATH_DATA )) {
|
||||
|
||||
|
||||
// new installer, extjs based
|
||||
define( 'PATH_DATA', PATH_C );
|
||||
require_once (PATH_CONTROLLERS . 'installer.php');
|
||||
$controller = 'Installer';
|
||||
|
||||
|
||||
// if the method name is empty set default to index method
|
||||
if (strpos( SYS_TARGET, '/' ) !== false) {
|
||||
list ($controller, $controllerAction) = explode( '/', SYS_TARGET );
|
||||
} else {
|
||||
$controllerAction = SYS_TARGET;
|
||||
}
|
||||
|
||||
|
||||
$controllerAction = ($controllerAction != '' && $controllerAction != 'login') ? $controllerAction : 'index';
|
||||
|
||||
|
||||
// create the installer controller and call its method
|
||||
if (is_callable( Array ('Installer',$controllerAction
|
||||
if (is_callable( Array ('Installer',$controllerAction
|
||||
) )) {
|
||||
$installer = new $controller();
|
||||
$installer->setHttpRequestData( $_REQUEST );
|
||||
@@ -399,14 +405,14 @@ if (! defined( 'PATH_DATA' ) || ! file_exists( PATH_DATA )) {
|
||||
}
|
||||
|
||||
// Load Language Translation
|
||||
G::LoadTranslationObject( defined( 'SYS_LANG' ) ? SYS_LANG : "en" );
|
||||
Bootstrap::LoadTranslationObject( defined( 'SYS_LANG' ) ? SYS_LANG : "en" );
|
||||
|
||||
// look for a disabled workspace
|
||||
if ($oServerConf->isWSDisabled( SYS_TEMP )) {
|
||||
$aMessage['MESSAGE'] = G::LoadTranslation( 'ID_DISB_WORKSPACE' );
|
||||
$aMessage['MESSAGE'] = Bootstrap::LoadTranslation( 'ID_DISB_WORKSPACE' );
|
||||
$G_PUBLISH = new Publisher();
|
||||
$G_PUBLISH->AddContent( 'xmlform', 'xmlform', 'login/showMessage', '', $aMessage );
|
||||
G::RenderPage( 'publish' );
|
||||
Bootstrap::RenderPage( 'publish' );
|
||||
die();
|
||||
}
|
||||
|
||||
@@ -417,14 +423,14 @@ if (defined( 'SYS_TEMP' ) && SYS_TEMP != '') {
|
||||
if (file_exists( PATH_DB . SYS_TEMP . '/db.php' )) {
|
||||
require_once (PATH_DB . SYS_TEMP . '/db.php');
|
||||
define( 'SYS_SYS', SYS_TEMP );
|
||||
|
||||
|
||||
// defining constant for workspace shared directory
|
||||
define( 'PATH_WORKSPACE', PATH_DB . SYS_SYS . PATH_SEP );
|
||||
// including workspace shared classes -> particularlly for pmTables
|
||||
set_include_path( get_include_path() . PATH_SEPARATOR . PATH_WORKSPACE );
|
||||
} else {
|
||||
G::SendTemporalMessage( 'ID_NOT_WORKSPACE', "error" );
|
||||
G::header( 'location: /sys/' . SYS_LANG . '/' . SYS_SKIN . '/main/sysLogin?errno=2' );
|
||||
Bootstrap::SendTemporalMessage( 'ID_NOT_WORKSPACE', "error" );
|
||||
Bootstrap::header( 'location: /sys/' . SYS_LANG . '/' . SYS_SKIN . '/main/sysLogin?errno=2' );
|
||||
die();
|
||||
}
|
||||
} else { //when we are in global pages, outside any valid workspace
|
||||
@@ -436,25 +442,30 @@ if (defined( 'SYS_TEMP' ) && SYS_TEMP != '') {
|
||||
if (SYS_TARGET == "dbInfo") { //Show dbInfo when no SYS_SYS
|
||||
require_once (PATH_METHODS . "login/dbInfo.php");
|
||||
} else {
|
||||
|
||||
|
||||
if (substr( SYS_SKIN, 0, 2 ) === 'ux' && SYS_TARGET != 'sysLoginVerify') { // new ux sysLogin - extjs based form
|
||||
require_once PATH_CONTROLLERS . 'main.php';
|
||||
$controllerClass = 'Main';
|
||||
$controllerAction = SYS_TARGET == 'sysLoginVerify' ? SYS_TARGET : 'sysLogin';
|
||||
//if the method exists
|
||||
if (is_callable( Array ($controllerClass,$controllerAction
|
||||
if (is_callable( Array ($controllerClass,$controllerAction
|
||||
) )) {
|
||||
$controller = new $controllerClass();
|
||||
$controller->setHttpRequestData( $_REQUEST );
|
||||
$controller->call( $controllerAction );
|
||||
}
|
||||
} else { // classic sysLogin interface
|
||||
Bootstrap::LoadSystem( 'g');
|
||||
Bootstrap::LoadSystem( 'publisher' );
|
||||
Bootstrap::LoadSystem( 'xmlform' );
|
||||
Bootstrap::LoadSystem( 'form' );
|
||||
Bootstrap::LoadSystem( 'menu' );
|
||||
require_once (PATH_METHODS . "login/sysLogin.php");
|
||||
die();
|
||||
}
|
||||
}
|
||||
if (DEBUG_TIME_LOG)
|
||||
G::logTimeByPage(); //log this page
|
||||
Bootstrap::logTimeByPage(); //log this page
|
||||
die();
|
||||
}
|
||||
}
|
||||
@@ -472,7 +483,7 @@ define( 'SERVER_NAME', $_SERVER['SERVER_NAME'] );
|
||||
define( 'SERVER_PORT', $_SERVER['SERVER_PORT'] );
|
||||
|
||||
// create memcached singleton
|
||||
G::LoadClass( 'memcached' );
|
||||
Bootstrap::LoadClass( 'memcached' );
|
||||
$memcache = & PMmemcached::getSingleton( SYS_SYS );
|
||||
|
||||
// verify configuration for rest service
|
||||
@@ -481,7 +492,7 @@ if ($isRestRequest) {
|
||||
$isRestRequest = false;
|
||||
$confFile = '';
|
||||
$restApiClassPath = '';
|
||||
|
||||
|
||||
// try load and getting rest configuration
|
||||
if (file_exists( PATH_DATA_SITE . 'rest-config.ini' )) {
|
||||
$confFile = PATH_DATA_SITE . 'rest-config.ini';
|
||||
@@ -499,7 +510,7 @@ if ($isRestRequest) {
|
||||
}
|
||||
|
||||
// load Plugins base class
|
||||
G::LoadClass( 'plugin' );
|
||||
Bootstrap::LoadClass( 'plugin' );
|
||||
|
||||
//here we are loading all plugins registered
|
||||
//the singleton has a list of enabled plugins
|
||||
@@ -517,13 +528,13 @@ require_once ("creole/Creole.php");
|
||||
if (defined( 'DEBUG_SQL_LOG' ) && DEBUG_SQL_LOG) {
|
||||
define( 'PM_PID', mt_rand( 1, 999999 ) );
|
||||
require_once 'Log.php';
|
||||
|
||||
|
||||
// register debug connection decorator driver
|
||||
Creole::registerDriver( '*', 'creole.contrib.DebugConnection' );
|
||||
|
||||
|
||||
// initialize Propel with converted config file
|
||||
Propel::init( PATH_CORE . "config/databases.php" );
|
||||
|
||||
|
||||
// unified log file for all databases
|
||||
$logFile = PATH_DATA . 'log' . PATH_SEP . 'propel.log';
|
||||
$logger = Log::singleton( 'file', $logFile, 'wf ' . SYS_SYS, null, PEAR_LOG_INFO );
|
||||
@@ -535,11 +546,11 @@ if (defined( 'DEBUG_SQL_LOG' ) && DEBUG_SQL_LOG) {
|
||||
}
|
||||
// log file for rbac database
|
||||
$con = Propel::getConnection( 'rbac' );
|
||||
|
||||
|
||||
if ($con instanceof DebugConnection) {
|
||||
$con->setLogger( $logger );
|
||||
}
|
||||
|
||||
|
||||
// log file for report database
|
||||
$con = Propel::getConnection( 'rp' );
|
||||
if ($con instanceof DebugConnection) {
|
||||
@@ -576,7 +587,7 @@ $oPluginRegistry->setupPlugins(); //get and setup enabled plugins
|
||||
$avoidChangedWorkspaceValidation = false;
|
||||
|
||||
// Load custom Classes and Model from Plugins.
|
||||
G::LoadAllPluginModelClasses();
|
||||
Bootstrap::LoadAllPluginModelClasses();
|
||||
|
||||
// jump to php file in methods directory
|
||||
$collectionPlugin = '';
|
||||
@@ -586,16 +597,16 @@ if ($oPluginRegistry->isRegisteredFolder( SYS_COLLECTION )) {
|
||||
$collectionPlugin = $targetPlugin[0];
|
||||
$avoidChangedWorkspaceValidation = true;
|
||||
} else {
|
||||
$phpFile = G::ExpandPath( 'methods' ) . SYS_COLLECTION . PATH_SEP . SYS_TARGET . '.php';
|
||||
$phpFile = Bootstrap::ExpandPath( 'methods' ) . SYS_COLLECTION . PATH_SEP . SYS_TARGET . '.php';
|
||||
}
|
||||
|
||||
// services is a special folder,
|
||||
if (SYS_COLLECTION == 'services') {
|
||||
$avoidChangedWorkspaceValidation = true;
|
||||
$targetPlugin = explode( '/', SYS_TARGET );
|
||||
|
||||
|
||||
if ($targetPlugin[0] == 'webdav') {
|
||||
$phpFile = G::ExpandPath( 'methods' ) . SYS_COLLECTION . PATH_SEP . 'webdav.php';
|
||||
$phpFile = Bootstrap::ExpandPath( 'methods' ) . SYS_COLLECTION . PATH_SEP . 'webdav.php';
|
||||
}
|
||||
}
|
||||
|
||||
@@ -603,12 +614,6 @@ if (SYS_COLLECTION == 'login' && SYS_TARGET == 'login') {
|
||||
$avoidChangedWorkspaceValidation = true;
|
||||
}
|
||||
|
||||
//the index.php file, this new feature will allow automatically redirects to valid php file inside any methods folder
|
||||
/* DEPRECATED
|
||||
if ( SYS_TARGET == '' ) {
|
||||
$phpFile = str_replace ( '.php', 'index.php', $phpFile );
|
||||
$phpFile = include ( $phpFile );
|
||||
}*/
|
||||
$bWE = false;
|
||||
$isControllerCall = false;
|
||||
if (substr( SYS_COLLECTION, 0, 8 ) === 'gulliver') {
|
||||
@@ -625,30 +630,31 @@ if (substr( SYS_COLLECTION, 0, 8 ) === 'gulliver') {
|
||||
$phpFile = PATH_DATA_SITE . 'public' . PATH_SEP . SYS_COLLECTION . PATH_SEP . urldecode( $auxPart[count( $auxPart ) - 1] );
|
||||
$aAux = explode( '?', $phpFile );
|
||||
$phpFile = $aAux[0];
|
||||
|
||||
|
||||
if ($extension != 'php') {
|
||||
G::streamFile( $phpFile );
|
||||
Bootstrap::streamFile( $phpFile );
|
||||
die();
|
||||
}
|
||||
|
||||
|
||||
$avoidChangedWorkspaceValidation = true;
|
||||
$bWE = true;
|
||||
//$phpFile = PATH_DATA_SITE . 'public' . PATH_SEP . SYS_COLLECTION . PATH_SEP . $auxPart[ count($auxPart)-1];
|
||||
}
|
||||
|
||||
|
||||
//erik: verify if it is a Controller Class or httpProxyController Class
|
||||
if (is_file( PATH_CONTROLLERS . SYS_COLLECTION . '.php' )) {
|
||||
Bootstrap::LoadSystem( 'controller' );
|
||||
require_once PATH_CONTROLLERS . SYS_COLLECTION . '.php';
|
||||
$controllerClass = SYS_COLLECTION;
|
||||
//if the method name is empty set default to index method
|
||||
$controllerAction = SYS_TARGET != '' ? SYS_TARGET : 'index';
|
||||
//if the method exists
|
||||
if (is_callable( Array ($controllerClass,$controllerAction
|
||||
if (is_callable( Array ($controllerClass,$controllerAction
|
||||
) )) {
|
||||
$isControllerCall = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (! $isControllerCall && ! file_exists( $phpFile ) && ! $isRestRequest) {
|
||||
$_SESSION['phpFileNotFound'] = $_SERVER['REQUEST_URI'];
|
||||
header( "location: /errors/error404.php?url=" . urlencode( $_SERVER['REQUEST_URI'] ) );
|
||||
@@ -659,18 +665,40 @@ if (substr( SYS_COLLECTION, 0, 8 ) === 'gulliver') {
|
||||
//redirect to login, if user changed the workspace in the URL
|
||||
if (! $avoidChangedWorkspaceValidation && isset( $_SESSION['WORKSPACE'] ) && $_SESSION['WORKSPACE'] != SYS_SYS) {
|
||||
$_SESSION['WORKSPACE'] = SYS_SYS;
|
||||
G::SendTemporalMessage( 'ID_USER_HAVENT_RIGHTS_SYSTEM', "error" );
|
||||
Bootstrap::SendTemporalMessage( 'ID_USER_HAVENT_RIGHTS_SYSTEM', "error" );
|
||||
// verify if the current skin is a 'ux' variant
|
||||
$urlPart = substr( SYS_SKIN, 0, 2 ) == 'ux' && SYS_SKIN != 'uxs' ? '/main/login' : '/login/login';
|
||||
|
||||
|
||||
header( 'Location: /sys' . SYS_SYS . '/' . SYS_LANG . '/' . SYS_SKIN . $urlPart );
|
||||
die();
|
||||
}
|
||||
|
||||
// enable rbac
|
||||
Bootstrap::LoadSystem( 'rbac' );
|
||||
$RBAC = &RBAC::getSingleton( PATH_DATA, session_id() );
|
||||
$RBAC->sSystem = 'PROCESSMAKER';
|
||||
|
||||
Bootstrap::LoadSystem( 'g');
|
||||
Bootstrap::LoadSystem( 'publisher' );
|
||||
Bootstrap::LoadSystem( 'xmlDocument' );
|
||||
Bootstrap::LoadSystem( 'xmlform' );
|
||||
Bootstrap::LoadSystem( 'form' );
|
||||
Bootstrap::LoadSystem( 'menu' );
|
||||
|
||||
Bootstrap::LoadSystem( 'templatePower' );
|
||||
//Bootstrap::LoadSystem( 'xmlformExtension' );
|
||||
//Bootstrap::LoadSystem( "xmlMenu" );
|
||||
//Bootstrap::LoadSystem( 'dvEditor' );
|
||||
//Bootstrap::LoadSystem( 'httpProxyController' );
|
||||
//Bootstrap::LoadSystem( 'pmException' );
|
||||
|
||||
//Bootstrap::LoadSystem( 'dbconnection' );
|
||||
//Bootstrap::LoadSystem( 'dbsession' );
|
||||
//Bootstrap::LoadSystem( 'dbrecordset' );
|
||||
Bootstrap::LoadSystem( 'dbtable' );
|
||||
Bootstrap::LoadClass( 'system' );
|
||||
|
||||
|
||||
// define and send Headers for all pages
|
||||
if (! defined( 'EXECUTE_BY_CRON' )) {
|
||||
header( "Expires: " . gmdate( "D, d M Y H:i:s", mktime( 0, 0, 0, date( 'm' ), date( 'd' ) - 1, date( 'Y' ) ) ) . " GMT" );
|
||||
@@ -678,10 +706,10 @@ if (! defined( 'EXECUTE_BY_CRON' )) {
|
||||
header( "Cache-Control: no-store, no-cache, must-revalidate" );
|
||||
header( "Cache-Control: post-check=0, pre-check=0", false );
|
||||
header( "Pragma: no-cache" );
|
||||
|
||||
|
||||
// get the language direction from ServerConf
|
||||
define( 'SYS_LANG_DIRECTION', $oServerConf->getLanDirection() );
|
||||
|
||||
|
||||
if ((isset( $_SESSION['USER_LOGGED'] )) && (! (isset( $_GET['sid'] )))) {
|
||||
$RBAC->initRBAC();
|
||||
//using optimization with memcache, the user data will be in memcache 8 hours, or until session id goes invalid
|
||||
@@ -708,17 +736,17 @@ if (! defined( 'EXECUTE_BY_CRON' )) {
|
||||
$noLoginFiles[] = 'retrivePassword';
|
||||
$noLoginFiles[] = 'defaultAjaxDynaform';
|
||||
$noLoginFiles[] = 'dynaforms_checkDependentFields';
|
||||
|
||||
|
||||
$noLoginFolders[] = 'services';
|
||||
$noLoginFolders[] = 'tracker';
|
||||
$noLoginFolders[] = 'installer';
|
||||
|
||||
|
||||
// This sentence is used when you lost the Session
|
||||
if (! in_array( SYS_TARGET, $noLoginFiles ) && ! in_array( SYS_COLLECTION, $noLoginFolders ) && $bWE != true && $collectionPlugin != 'services' && ! $isRestRequest) {
|
||||
$bRedirect = true;
|
||||
|
||||
|
||||
if (isset( $_GET['sid'] )) {
|
||||
G::LoadClass( 'sessions' );
|
||||
Bootstrap::LoadClass( 'sessions' );
|
||||
$oSessions = new Sessions();
|
||||
if ($aSession = $oSessions->verifySession( $_GET['sid'] )) {
|
||||
require_once 'classes/model/Users.php';
|
||||
@@ -733,7 +761,7 @@ if (! defined( 'EXECUTE_BY_CRON' )) {
|
||||
$memcache->set( $memKey, $RBAC->aUserInfo, PMmemcached::EIGHT_HOURS );
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if ($bRedirect) {
|
||||
if (substr( SYS_SKIN, 0, 2 ) == 'ux' && SYS_SKIN != 'uxs') { // verify if the current skin is a 'ux' variant
|
||||
$loginUrl = 'main/login';
|
||||
@@ -742,10 +770,10 @@ if (! defined( 'EXECUTE_BY_CRON' )) {
|
||||
} else {
|
||||
$loginUrl = 'login/login'; // just set up the classic login
|
||||
}
|
||||
|
||||
|
||||
if (empty( $_POST )) {
|
||||
header( 'location: ' . SYS_URI . $loginUrl . '?u=' . urlencode( $_SERVER['REQUEST_URI'] ) );
|
||||
|
||||
|
||||
} else {
|
||||
if ($isControllerCall) {
|
||||
header( "HTTP/1.0 302 session lost in controller" );
|
||||
@@ -758,30 +786,30 @@ if (! defined( 'EXECUTE_BY_CRON' )) {
|
||||
}
|
||||
}
|
||||
$_SESSION['phpLastFileFound'] = $_SERVER['REQUEST_URI'];
|
||||
|
||||
|
||||
/**
|
||||
* New feature for Gulliver framework to support Controllers & HttpProxyController classes handling
|
||||
*
|
||||
* @author Erik Amaru Ortiz <erik@colosa.com, aortiz.erik@gmail.com>
|
||||
*
|
||||
* @author <erik@colosa.com
|
||||
*/
|
||||
if ($isControllerCall) { //Instance the Controller object and call the request method
|
||||
$controller = new $controllerClass();
|
||||
$controller->setHttpRequestData( $_REQUEST );
|
||||
$controller->call( $controllerAction );
|
||||
} elseif ($isRestRequest) {
|
||||
G::dispatchRestService( SYS_TARGET, $restConfig, $restApiClassPath );
|
||||
Bootstrap::dispatchRestService( SYS_TARGET, $restConfig, $restApiClassPath );
|
||||
} else {
|
||||
require_once $phpFile;
|
||||
}
|
||||
|
||||
|
||||
if (defined( 'SKIP_HEADERS' )) {
|
||||
header( "Expires: " . gmdate( "D, d M Y H:i:s", mktime( 0, 0, 0, date( 'm' ), date( 'd' ), date( 'Y' ) + 1 ) ) . " GMT" );
|
||||
header( 'Cache-Control: public' );
|
||||
header( 'Pragma: ' );
|
||||
}
|
||||
|
||||
|
||||
ob_end_flush();
|
||||
if (DEBUG_TIME_LOG) {
|
||||
G::logTimeByPage(); //log this page
|
||||
bootstrap::logTimeByPage(); //log this page
|
||||
}
|
||||
}
|
||||
|
||||
@@ -234,7 +234,6 @@
|
||||
}
|
||||
|
||||
// Call Gulliver Classes
|
||||
G::LoadThirdParty('pear/json','class.json');
|
||||
G::LoadThirdParty('smarty/libs','Smarty.class');
|
||||
G::LoadSystem('error');
|
||||
G::LoadSystem('dbconnection');
|
||||
|
||||
Reference in New Issue
Block a user