SPEEDY first version of boostrap.php, with many changes

This commit is contained in:
Fernando Ontiveros
2012-11-12 14:44:44 -04:00
parent bdceea960f
commit b5c11b4198
12 changed files with 444 additions and 793 deletions

View File

@@ -1,14 +1,101 @@
<?php <?php
/** /**
* class.util.php * class.bootstrap.php
* *
* @package gulliver.system * @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 * mk_dir , copied from class.G.php
* *
@@ -217,191 +304,101 @@ class G
* @param string $downloadFileName * @param string $downloadFileName
* @return string * @return string
*/ */
public function streamFile($file, $download = false, $downloadFileName = '') { public function streamFile ($file, $download = false, $downloadFileName = '')
require_once (PATH_THIRDPARTY . 'jsmin/jsmin.php'); {
$folderarray = explode ( '/', $file ); $folderarray = explode( '/', $file );
$typearray = explode ( '.', basename ( $file ) ); $typearray = explode( '.', basename( $file ) );
$typefile = $typearray [count ( $typearray ) - 1]; $typefile = $typearray[count( $typearray ) - 1];
$filename = $file; $filename = $file;
// trick to generate the translation.language.js file , merging two //trick to generate the translation.language.js file , merging two files
// files and then minified the content. if (strtolower( $typefile ) == 'js' && $typearray[0] == 'translation') {
if (strtolower ( $typefile ) == 'js' && $typearray [0] == 'translation') { Bootstrap::sendHeaders( $filename, 'text/javascript', $download, $downloadFileName );
$output = g::streamJSTranslationFile ( $filename, $typearray [1] ); $output = Bootstrap::streamJSTranslationFile( $filename, $typearray[1] );
print $output; print $output;
return; return;
} }
// trick to generate the big css file for ext style . //trick to generate the big css file for ext style .
if (strtolower ( $typefile ) == 'css' && $folderarray [count ( $folderarray ) - 2] == 'css') { if (strtolower( $typefile ) == 'css' && $folderarray[count( $folderarray ) - 2] == 'css') {
$output = g::streamCSSBigFile ( $typearray [0] ); Bootstrap::sendHeaders( $filename, 'text/css', $download, $downloadFileName );
print $output; $output = Bootstrap::streamCSSBigFile( $typearray[0] );
return; print $output;
} return;
}
if (file_exists ( $filename )) { if (file_exists( $filename )) {
switch (strtolower ( $typefile )) { switch (strtolower( $typefile )) {
case 'swf' : case 'swf':
g::sendHeaders ( $filename, 'application/x-shockwave-flash', $download, $downloadFileName ); Bootstrap::sendHeaders( $filename, 'application/x-shockwave-flash', $download, $downloadFileName );
break; break;
case 'js' : case 'js':
g::sendHeaders ( $filename, 'text/javascript', $download, $downloadFileName ); Bootstrap::sendHeaders( $filename, 'text/javascript', $download, $downloadFileName );
break; break;
case 'htm' : case 'htm':
case 'html' : case 'html':
g::sendHeaders ( $filename, 'text/html', $download, $downloadFileName ); Bootstrap::sendHeaders( $filename, 'text/html', $download, $downloadFileName );
break; break;
case 'htc' : case 'htc':
g::sendHeaders ( $filename, 'text/plain', $download, $downloadFileName ); Bootstrap::sendHeaders( $filename, 'text/plain', $download, $downloadFileName );
break; break;
case 'json' : case 'json':
g::sendHeaders ( $filename, 'text/plain', $download, $downloadFileName ); Bootstrap::sendHeaders( $filename, 'text/plain', $download, $downloadFileName );
break; break;
case 'gif' : case 'gif':
g::sendHeaders ( $filename, 'image/gif', $download, $downloadFileName ); Bootstrap::sendHeaders( $filename, 'image/gif', $download, $downloadFileName );
break; break;
case 'png' : case 'png':
g::sendHeaders ( $filename, 'image/png', $download, $downloadFileName ); Bootstrap::sendHeaders( $filename, 'image/png', $download, $downloadFileName );
break; break;
case 'jpg' : case 'jpg':
g::sendHeaders ( $filename, 'image/jpg', $download, $downloadFileName ); Bootstrap::sendHeaders( $filename, 'image/jpg', $download, $downloadFileName );
break; break;
case 'css' : case 'css':
g::sendHeaders ( $filename, 'text/css', $download, $downloadFileName ); Bootstrap::sendHeaders( $filename, 'text/css', $download, $downloadFileName );
break; break;
case 'css' : case 'xml':
g::sendHeaders ( $filename, 'text/css', $download, $downloadFileName ); Bootstrap::sendHeaders( $filename, 'text/xml', $download, $downloadFileName );
break; break;
case 'xml' : case 'txt':
g::sendHeaders ( $filename, 'text/xml', $download, $downloadFileName ); Bootstrap::sendHeaders( $filename, 'text/html', $download, $downloadFileName );
break; break;
case 'txt' : case 'doc':
g::sendHeaders ( $filename, 'text/html', $download, $downloadFileName ); case 'pdf':
break; case 'pm':
case 'doc' : case 'po':
case 'pdf' : Bootstrap::sendHeaders( $filename, 'application/octet-stream', $download, $downloadFileName );
case 'pm' : break;
case 'po' : case 'php':
g::sendHeaders ( $filename, 'application/octet-stream', $download, $downloadFileName ); if ($download) {
break; G::sendHeaders( $filename, 'text/plain', $download, $downloadFileName );
case 'php' : } else {
if ($download) { require_once ($filename);
g::sendHeaders ( $filename, 'text/plain', $download, $downloadFileName ); return;
} else { }
require_once ($filename); break;
return; case 'tar':
} Bootstrap::sendHeaders( $filename, 'application/x-tar', $download, $downloadFileName );
break; break;
case 'tar' : default:
g::sendHeaders ( $filename, 'application/x-tar', $download, $downloadFileName ); //throw new Exception ( "Unknown type of file '$file'. " );
break; Bootstrap::sendHeaders( $filename, 'application/octet-stream', $download, $downloadFileName );
default : break;
// throw new Exception ( "Unknown type of file '$file'. " ); }
g::sendHeaders ( $filename, 'application/octet-stream', $download, $downloadFileName ); } else {
break; if (strpos( $file, 'gulliver' ) !== false) {
break; list ($path, $filename) = explode( 'gulliver', $file );
} }
} else {
if (strpos ( $file, 'gulliver' ) !== false) {
list ( $path, $filename ) = explode ( 'gulliver', $file );
}
$_SESSION ['phpFileNotFound'] = $file; $_SESSION['phpFileNotFound'] = $file;
g::header ( "location: /errors/error404.php?l=" . $_SERVER ['REQUEST_URI'] ); Bootstrap::header( "location: /errors/error404.php?l=" . $_SERVER['REQUEST_URI'] );
} }
switch (strtolower ( $typefile )) { if ( substr($filename,-10) == "ext-all.js" ) {
case "js" : $filename = PATH_GULLIVER_HOME . 'js/ext/min/ext-all.js';
$paths = explode ( '/', $filename ); }
$jsName = $paths [count ( $paths ) - 1]; @readfile( $filename );
$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;
}
}
/** /**
* Parsing the URI * Parsing the URI
@@ -496,7 +493,7 @@ class G
* @return void * @return void
*/ */
public function LoadClass($strClass) { 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 ( $classfile )) {
if (file_exists ( PATH_GULLIVER . 'class.' . $strClass . '.php' )) { if (file_exists ( PATH_GULLIVER . 'class.' . $strClass . '.php' )) {
return require_once (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> * @author Hugo Loza. <hugo@colosa.com>
* @access public * @access public
* @param * @param string lang
* eter string lang
* @return void * @return void
*/ */
public function LoadTranslationObject($lang = SYS_LANG) { public function LoadTranslationObject($lang = SYS_LANG) {
@@ -584,7 +580,7 @@ class G
$G_SKIN = $strSkin; $G_SKIN = $strSkin;
try { try {
$file = g::ExpandPath ( 'skinEngine' ) . 'skinEngine.php'; $file = Bootstrap::ExpandPath ( 'skinEngine' ) . 'skinEngine.php';
include $file; include $file;
$skinEngine = new SkinEngine ( $G_TEMPLATE, $G_SKIN, $G_CONTENT ); $skinEngine = new SkinEngine ( $G_TEMPLATE, $G_SKIN, $G_CONTENT );
$skinEngine->setLayout ( $layout ); $skinEngine->setLayout ( $layout );
@@ -641,7 +637,7 @@ class G
case 'label' : case 'label' :
case 'labels' : case 'labels' :
$_SESSION ['G_MESSAGE_TYPE'] = $strType; $_SESSION ['G_MESSAGE_TYPE'] = $strType;
$_SESSION ['G_MESSAGE'] = nl2br ( g::LoadTranslation ( $msgID ) ); $_SESSION ['G_MESSAGE'] = nl2br ( Bootstrap::LoadTranslation ( $msgID ) );
break; break;
case 'string' : case 'string' :
$_SESSION ['G_MESSAGE_TYPE'] = $strType; $_SESSION ['G_MESSAGE_TYPE'] = $strType;
@@ -667,7 +663,7 @@ class G
*/ */
public function header($parameter) { public function header($parameter) {
if (defined ( 'ENABLE_ENCRYPT' ) && (ENABLE_ENCRYPT == 'yes') && (substr ( $parameter, 0, 9 ) == 'location:')) { 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 ); header ( 'location:' . $url );
} else { } else {
header ( $parameter ); header ( $parameter );
@@ -742,7 +738,7 @@ class G
$rest->setSupportedFormats( 'JsonFormat', 'XmlFormat' ); $rest->setSupportedFormats( 'JsonFormat', 'XmlFormat' );
// getting all services class // getting all services class
$restClasses = array (); $restClasses = array ();
$restClassesList = g::rglob( '*', 0, PATH_CORE . 'services/' ); $restClassesList = Bootstrap::rglob( '*', 0, PATH_CORE . 'services/' );
foreach ($restClassesList as $classFile) { foreach ($restClassesList as $classFile) {
if (substr( $classFile, - 4 ) === '.php') { if (substr( $classFile, - 4 ) === '.php') {
$restClasses[str_replace( '.php', '', basename( $classFile ) )] = $classFile; $restClasses[str_replace( '.php', '', basename( $classFile ) )] = $classFile;
@@ -750,7 +746,7 @@ class G
} }
if (! empty( $apiClassesPath )) { if (! empty( $apiClassesPath )) {
$pluginRestClasses = array (); $pluginRestClasses = array ();
$restClassesList = g::rglob( '*', 0, $apiClassesPath . 'services/' ); $restClassesList = Bootstrap::rglob( '*', 0, $apiClassesPath . 'services/' );
foreach ($restClassesList as $classFile) { foreach ($restClassesList as $classFile) {
if (substr( $classFile, - 4 ) === '.php') { if (substr( $classFile, - 4 ) === '.php') {
$pluginRestClasses[str_replace( '.php', '', basename( $classFile ) )] = $classFile; $pluginRestClasses[str_replace( '.php', '', basename( $classFile ) )] = $classFile;
@@ -864,7 +860,7 @@ class G
public function streamJSTranslationFile($filename, $locale = 'en') { public function streamJSTranslationFile($filename, $locale = 'en') {
header ( 'Content-Type: text/javascript' ); header ( 'Content-Type: text/javascript' );
if (! g::LoadTranslationObject ( $locale )) { if (! Bootstrap::LoadTranslationObject ( $locale )) {
header ( 'Cache-Control: no-cache' ); header ( 'Cache-Control: no-cache' );
header ( 'Pragma: no-cache' ); header ( 'Pragma: no-cache' );
return; 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"; $skinName = "classic";
} }
if ($skinName == "classic") { if ($skinName == "classic") {
$configurationFile = g::ExpandPath( "skinEngine" ) . 'base' . PATH_SEP . 'config.xml'; $configurationFile = Bootstrap::ExpandPath( "skinEngine" ) . 'base' . PATH_SEP . 'config.xml';
} else { } else {
$configurationFile = PATH_CUSTOM_SKINS . $skinName . PATH_SEP . 'config.xml'; $configurationFile = PATH_CUSTOM_SKINS . $skinName . PATH_SEP . 'config.xml';
if (! is_file( $configurationFile )) { 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"; $gmt_mtime = gmdate( "D, d M Y H:i:s", $mtime ) . " GMT";
header( 'Pragma: cache' ); header( 'Pragma: cache' );
header( 'ETag: "' . md5( $mtime . $filename ) . '"' ); 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 = "/* Autogenerated CSS file by gulliver framework \n";
$outputHeader .= " Skin: $filename\n"; $outputHeader .= " Skin: $filename\n";
$outputHeader .= " Configuration: $configurationFile\n"; $outputHeader .= " Configuration: $configurationFile\n";
@@ -981,46 +977,11 @@ class G
$gmt_mtimeNow = gmdate( "D, d M Y H:i:s", $mtimeNow ) . " GMT"; $gmt_mtimeNow = gmdate( "D, d M Y H:i:s", $mtimeNow ) . " GMT";
$outputHeader .= " Date: $gmt_mtimeNow*/\n"; $outputHeader .= " Date: $gmt_mtimeNow*/\n";
$output = ""; $output = "";
//Base files //Base files
switch (strtolower( $skinVariant )) { switch (strtolower( $skinVariant )) {
case "extjs": case "extjs":
//Basepublic function getDirectorySize ($path, $maxmtime = 0) //Base
{
$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;
}
$baseCSSPath = PATH_SKIN_ENGINE . "base" . PATH_SEP . "baseCss" . PATH_SEP; $baseCSSPath = PATH_SKIN_ENGINE . "base" . PATH_SEP . "baseCss" . PATH_SEP;
$output .= file_get_contents( $baseCSSPath . 'ext-all-notheme.css' ); $output .= file_get_contents( $baseCSSPath . 'ext-all-notheme.css' );
//$output .= file_get_contents ( $publicExtPath . 'ext-all.css' ); //$output .= file_get_contents ( $publicExtPath . 'ext-all.css' );
@@ -1030,13 +991,11 @@ class G
break; break;
default: default:
break; break;
} }
//Get Browser Info //Get Browser Info
$infoBrowser = g::get_current_browser(); $infoBrowser = Bootstrap::get_current_browser();
$browserName = $infoBrowser['browser_working']; $browserName = $infoBrowser['browser_working'];
if (isset( $infoBrowser[$browserName . '_data'] )) { if (isset( $infoBrowser[$browserName . '_data'] )) {
if ($infoBrowser[$browserName . '_data'][0] != "") { if ($infoBrowser[$browserName . '_data'][0] != "") {
@@ -1046,7 +1005,7 @@ class G
//Read Configuration File //Read Configuration File
$xmlConfiguration = file_get_contents ( $configurationFile ); $xmlConfiguration = file_get_contents ( $configurationFile );
$xmlConfigurationObj = g::xmlParser($xmlConfiguration); $xmlConfigurationObj = Bootstrap::xmlParser($xmlConfiguration);
$skinFilesArray=$xmlConfigurationObj->result['skinConfiguration']['__CONTENT__']['cssFiles']['__CONTENT__'][$skinVariant]['__CONTENT__']['cssFile'] ; $skinFilesArray=$xmlConfigurationObj->result['skinConfiguration']['__CONTENT__']['cssFiles']['__CONTENT__'][$skinVariant]['__CONTENT__']['cssFile'] ;
foreach ($skinFilesArray as $keyFile => $cssFileInfo) { 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 (((in_array($browserName, $enabledBrowsers))||(in_array('ALL', $enabledBrowsers)))&&(!(in_array($browserName, $disabledBrowsers)))) {
if ($cssFileInfo['__ATTRIBUTES__']['file'] == 'rtl.css') { if ($cssFileInfo['__ATTRIBUTES__']['file'] == 'rtl.css') {
g::LoadClass('serverConfiguration'); Bootstrap::LoadClass('serverConfiguration');
$oServerConf =& serverConf::getSingleton(); $oServerConf =& serverConf::getSingleton();
if (!(defined('SYS_LANG'))) { if (!(defined('SYS_LANG'))) {
if (isset($_SERVER['HTTP_REFERER'])) { if (isset($_SERVER['HTTP_REFERER'])) {
@@ -1126,9 +1085,9 @@ class G
} }
if (! $download) { if (! $download) {
header ( 'Pragma: cache' ); header ( 'Pragma: cache' );
if (file_exists ( $filename )) { if (file_exists ( $filename )) {
$mtime = filemtime ( $filename ); $mtime = filemtime ( $filename );
} else { } else {
@@ -1145,7 +1104,7 @@ class G
exit (); exit ();
} }
} }
if (isset ( $_SERVER ['HTTP_IF_NONE_MATCH'] )) { if (isset ( $_SERVER ['HTTP_IF_NONE_MATCH'] )) {
if (str_replace ( '"', '', stripslashes ( $_SERVER ['HTTP_IF_NONE_MATCH'] ) ) == md5 ( $mtime . $filename )) { if (str_replace ( '"', '', stripslashes ( $_SERVER ['HTTP_IF_NONE_MATCH'] ) ) == md5 ( $mtime . $filename )) {
header ( "HTTP/1.1 304 Not Modified" ); header ( "HTTP/1.1 304 Not Modified" );
@@ -1162,7 +1121,7 @@ class G
*/ */
public function getCheckSum ($files) public function getCheckSum ($files)
{ {
g::LoadClass( 'system' ); Bootstrap::LoadClass( 'system' );
$key = System::getVersion(); $key = System::getVersion();
if (! is_array( $files )) { if (! is_array( $files )) {
@@ -1252,7 +1211,7 @@ class G
if (is_array( $vVar )) { if (is_array( $vVar )) {
foreach ($vVar as $sKey => $vValue) { foreach ($vVar as $sKey => $vValue) {
if (is_array( $vValue )) { if (is_array( $vValue )) {
g::strip_slashes( $vVar[$sKey] ); Bootstrap::strip_slashes( $vVar[$sKey] );
} else { } else {
$vVar[$sKey] = stripslashes( $vVar[$sKey] ); $vVar[$sKey] = stripslashes( $vVar[$sKey] );
} }
@@ -1321,7 +1280,7 @@ class G
$paths = glob($path.'*', GLOB_MARK|GLOB_ONLYDIR|GLOB_NOSORT); $paths = glob($path.'*', GLOB_MARK|GLOB_ONLYDIR|GLOB_NOSORT);
$files = glob($path.$pattern, $flags); $files = glob($path.$pattern, $flags);
foreach ($paths as $path) { foreach ($paths as $path) {
$files = array_merge($files, g::rglob($pattern, $flags, $path)); $files = array_merge($files, Bootstrap::rglob($pattern, $flags, $path));
} }
return $files; return $files;
} }
@@ -1336,7 +1295,7 @@ class G
if ( function_exists('json_encode') ) { if ( function_exists('json_encode') ) {
return json_encode($Json); return json_encode($Json);
} else { } else {
g::LoadThirdParty('pear/json', 'class.json'); Bootstrap::LoadThirdParty('pear/json', 'class.json');
$oJSON = new Services_JSON(); $oJSON = new Services_JSON();
return $oJSON->encode($Json); return $oJSON->encode($Json);
} }
@@ -1352,7 +1311,7 @@ class G
if (function_exists('json_decode')) { if (function_exists('json_decode')) {
return json_decode($Json); return json_decode($Json);
} else { } else {
g::LoadThirdParty('pear/json', 'class.json'); Bootstrap::LoadThirdParty('pear/json', 'class.json');
$oJSON = new Services_JSON(); $oJSON = new Services_JSON();
return $oJSON->decode($Json); return $oJSON->decode($Json);
} }
@@ -1453,7 +1412,7 @@ class G
if ($file != '.' && $file != '..' && ! is_link( $nextpath ) && $file != '.svn') { if ($file != '.' && $file != '..' && ! is_link( $nextpath ) && $file != '.svn') {
if (is_dir( $nextpath )) { if (is_dir( $nextpath )) {
$dircount ++; $dircount ++;
$result = g::getDirectorySize( $nextpath, $maxmtime ); $result = Bootstrap::getDirectorySize( $nextpath, $maxmtime );
$totalsize += $result['size']; $totalsize += $result['size'];
$totalcount += $result['count']; $totalcount += $result['count'];
$dircount += $result['dircount']; $dircount += $result['dircount'];
@@ -1501,14 +1460,14 @@ class G
/** /**
* Refactor function * Refactor function
* @author Ralph A. * @author Ralph A.
* @return multitype:array containing browser name and type * @return multitype:array containing browser name and type
*/ */
public function get_current_browser() public function get_current_browser()
{ {
static $a_full_assoc_data, $a_mobile_data, $browser_user_agent; static $a_full_assoc_data, $a_mobile_data, $browser_user_agent;
static $browser_working, $moz_type, $webkit_type; static $browser_working, $moz_type, $webkit_type;
//initialize all variables with default values to prevent error //initialize all variables with default values to prevent error
$a_full_assoc_data = ''; $a_full_assoc_data = '';
$a_mobile_data = ''; $a_mobile_data = '';
@@ -1518,14 +1477,14 @@ class G
$moz_type = ''; $moz_type = '';
$ua_type = 'bot';// default to bot since you never know with bots $ua_type = 'bot';// default to bot since you never know with bots
$webkit_type = ''; $webkit_type = '';
/* /*
make navigator user agent string lower case to make sure all versions get caught 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 isset protects against blank user agent failure. tolower also lets the script use
strstr instead of stristr, which drops overhead slightly. strstr instead of stristr, which drops overhead slightly.
*/ */
$browser_user_agent = strtolower( $_SERVER['HTTP_USER_AGENT'] ); $browser_user_agent = strtolower( $_SERVER['HTTP_USER_AGENT'] );
// known browsers, list will be updated routinely, check back now and then // known browsers, list will be updated routinely, check back now and then
$a_browser_types = array( $a_browser_types = array(
array( 'opera', true, 'op', 'bro' ), array( 'opera', true, 'op', 'bro' ),
@@ -1651,11 +1610,11 @@ class G
} }
break; break;
} }
} }
$mobile_test = g::check_is_mobile( $browser_user_agent ); $mobile_test = Bootstrap::check_is_mobile( $browser_user_agent );
if ( $mobile_test ) { 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'; $ua_type = 'mobile';
} }
@@ -1666,10 +1625,10 @@ class G
'webkit_data' => array($webkit_type), 'webkit_data' => array($webkit_type),
'mobile_data' => array($a_mobile_data), 'mobile_data' => array($a_mobile_data),
); );
return $a_full_assoc_data; return $a_full_assoc_data;
} }
/** /**
* track total script execution time * 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( $pv_browser_user_agent, $start_pos, $substring_length );
$string_working_number = substr( $string_working_number, 0, strcspn($string_working_number, ' );/') ); $string_working_number = substr( $string_working_number, 0, strcspn($string_working_number, ' );/') );
if (!is_numeric( substr( $string_working_number, 0, 1 ))) { if (!is_numeric( substr( $string_working_number, 0, 1 ))) {
@@ -1841,7 +1800,7 @@ class G
case 'mac': case 'mac':
if (strstr($pv_browser_string, 'os x')) { if (strstr($pv_browser_string, 'os x')) {
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 { } else {
$os_working_number = 10; $os_working_number = 10;
} }
@@ -1940,7 +1899,7 @@ class G
for ($k = 0; $k < $k_count; $k++) { for ($k = 0; $k < $k_count; $k++) {
if (strstr( $pv_browser_user_agent, $a_mobile_browser[$k] )) { if (strstr( $pv_browser_user_agent, $a_mobile_browser[$k] )) {
$mobile_browser = $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; break;
} }
} }
@@ -1949,9 +1908,9 @@ class G
if (strstr( $pv_browser_user_agent, $a_mobile_device[$k] )) { if (strstr( $pv_browser_user_agent, $a_mobile_device[$k] )) {
$mobile_device = trim ( $a_mobile_device[$k], '-_' ); // but not space trims yet $mobile_device = trim ( $a_mobile_device[$k], '-_' ); // but not space trims yet
if ($mobile_device == 'blackberry') { 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 $mobile_device = trim( $mobile_device ); // some of the id search strings have white space
break; break;
} }
@@ -1960,7 +1919,7 @@ class G
for ($k = 0; $k < $k_count; $k++) { for ($k = 0; $k < $k_count; $k++) {
if (strstr( $pv_browser_user_agent, $a_mobile_os[$k] )) { if (strstr( $pv_browser_user_agent, $a_mobile_os[$k] )) {
$mobile_os = $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; break;
} }
} }
@@ -1968,14 +1927,14 @@ class G
for ($k = 0; $k < $k_count; $k++) { for ($k = 0; $k < $k_count; $k++) {
if (strstr( $pv_browser_user_agent, $a_mobile_server[$k] )) { if (strstr( $pv_browser_user_agent, $a_mobile_server[$k] )) {
$mobile_server = $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; break;
} }
} }
// just for cases where we know it's a mobile device already // 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' ) ) { if (!$mobile_os && ( $mobile_browser || $mobile_device || $mobile_server ) && strstr( $pv_browser_user_agent, 'linux' ) ) {
$mobile_os = '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 ); $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; $plain = '/sys' . SYS_TEMP;
for ($i = 2; $i < count( $aRequestUri ); $i ++) { 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ì') { if ($decoded == 'sWì') {
$decoded = $VARS[$i]; //this is for the string "../" $decoded = $VARS[$i]; //this is for the string "../"
} }
@@ -2169,7 +2128,7 @@ class G
public function createUID ($scope, $id) public function createUID ($scope, $id)
{ {
$e = $scope . $id; $e = $scope . $id;
$e = g::encrypt( $e, URL_KEY ); $e = Bootstrap::encrypt( $e, URL_KEY );
$e = str_replace( array ('+','/','=' $e = str_replace( array ('+','/','='
), array ('__','_','___' ), array ('__','_','___'
), base64_encode( $e ) ); ), base64_encode( $e ) );
@@ -2192,7 +2151,7 @@ class G
), array ('___','__','_' ), array ('___','__','_'
), $uid ); ), $uid );
$e = base64_decode( $e ); $e = base64_decode( $e );
$e = g::decrypt( $e, URL_KEY ); $e = Bootstrap::decrypt( $e, URL_KEY );
$e = substr( $e, strlen( $scope ) ); $e = substr( $e, strlen( $scope ) );
return $e; return $e;
} }
@@ -2210,7 +2169,7 @@ class G
$arrays = & func_get_args(); $arrays = & func_get_args();
foreach ($arrays as $array_i) { foreach ($arrays as $array_i) {
if (is_array( $array_i )) { if (is_array( $array_i )) {
g::array_merge_2( $array, $array_i ); Bootstrap::array_merge_2( $array, $array_i );
} }
} }
return $array; return $array;
@@ -2232,7 +2191,7 @@ class G
if (! isset( $array[$k] )) { if (! isset( $array[$k] )) {
$array[$k] = array (); $array[$k] = array ();
} }
g::array_merge_2( $array[$k], $v ); Bootstrap::array_merge_2( $array[$k], $v );
} else { } else {
if (isset( $array[$k] ) && is_array( $array[$k] )) { if (isset( $array[$k] ) && is_array( $array[$k] )) {
$array[$k][0] = $v; $array[$k][0] = $v;
@@ -2265,7 +2224,7 @@ class G
if (! is_array( $result )) { if (! is_array( $result )) {
$result = array (); $result = array ();
} }
$result = $result + g::getSystemConstants(); $result = $result + Bootstrap::getSystemConstants();
$__textoEval = ""; $__textoEval = "";
$u = 0; $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); //$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] ); $u = $match[0][$r][1] + strlen( $match[0][$r][0] );
//Mysql quotes scape //Mysql quotes scape
if (($match[1][$r][0] == '@') && (isset( $result[$match[2][$r][0]] ))) { 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; continue;
} }
//URL encode //URL encode
@@ -2300,14 +2259,14 @@ class G
} }
//Substring (Sub replaceDataField) //Substring (Sub replaceDataField)
if (($match[1][$r][0]=='!')&&(isset($result[$match[2][$r][0]]))) { 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; continue;
} }
//Call function //Call function
if (($match[1][$r][0]==='')&&($match[2][$r][0]==='')&&($match[3][$r][0]!=='')) { 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("'"); $arraySearch = array("'");
$arrayReplace = array("\\'"); $arrayReplace = array("\\'");
$strAux = str_replace($arraySearch, $arrayReplace, $strAux); $strAux = str_replace($arraySearch, $arrayReplace, $strAux);
@@ -2318,12 +2277,12 @@ class G
} }
//Non-quoted //Non-quoted
if (($match[1][$r][0]=='#')&&(isset($result[$match[2][$r][0]]))) { 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; continue;
} }
//Non-quoted = //Non-quoted =
if (($match[1][$r][0]=='=')&&(isset($result[$match[2][$r][0]]))) { 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; continue;
} }
} }
@@ -2351,7 +2310,7 @@ class G
*/ */
public function getSystemConstants($params = null) public function getSystemConstants($params = null)
{ {
$t1 = g::microtime_float(); $t1 = Bootstrap::microtime_float();
$sysCon = array(); $sysCon = array();
if (defined("SYS_LANG")) { if (defined("SYS_LANG")) {
@@ -2382,7 +2341,7 @@ class G
switch ($params->option) { switch ($params->option) {
case "STORED SESSION": case "STORED SESSION":
if (isset($params->SID)) { if (isset($params->SID)) {
g::LoadClass("sessions"); Bootstrap::LoadClass("sessions");
$oSessions = new Sessions($params->SID); $oSessions = new Sessions($params->SID);
$sysCon = array_merge($sysCon, $oSessions->getGlobals()); $sysCon = array_merge($sysCon, $oSessions->getGlobals());
@@ -2446,7 +2405,7 @@ class G
} }
$temp = $strTemplateName . ".php"; $temp = $strTemplateName . ".php";
$file = g::ExpandPath( 'templates' ) . $temp; $file = Bootstrap::ExpandPath( 'templates' ) . $temp;
// Check if its a user template // Check if its a user template
if (file_exists( $file )) { if (file_exists( $file )) {
//require_once( $file ); //require_once( $file );
@@ -2479,7 +2438,7 @@ class G
} else { } else {
if ($createPath) { if ($createPath) {
//TODO:: Define Environment constants: Devel (0777), Production (0770), ... //TODO:: Define Environment constants: Devel (0777), Production (0770), ...
G::mk_dir( $strPath, 0777 ); Bootstrap::mk_dir( $strPath, 0777 );
} else { } else {
return false; return false;
} }
@@ -2555,18 +2514,18 @@ class G
$MONTHS = Array (); $MONTHS = Array ();
for ($i = 1; $i <= 12; $i ++) { 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; $d = (int) $day;
$dd = g::complete_field( $day, 2, 1 ); $dd = Bootstrap::complete_field( $day, 2, 1 );
//missing D //missing D
$M = $MONTHS[$month]; $M = $MONTHS[$month];
$m = (int) $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 ); $yy = substr( $year, strlen( $year ) - 2, 2 );
$yyyy = $year; $yyyy = $year;
@@ -2667,7 +2626,7 @@ class G
{ {
print ("<script language=\"javascript\">{$c}</script>") ; print ("<script language=\"javascript\">{$c}</script>") ;
} }
/** /**
* Generate random number * Generate random number
* *
@@ -2683,7 +2642,7 @@ class G
return $sUID; return $sUID;
//return strtoupper(substr(uniqid(rand(0, 9), false),0,14)); //return strtoupper(substr(uniqid(rand(0, 9), false),0,14));
} }
/** /**
* Encrypt URL * Encrypt URL
* *
@@ -2695,7 +2654,7 @@ class G
public function encryptlink ($url) public function encryptlink ($url)
{ {
if (defined( 'ENABLE_ENCRYPT' ) && ENABLE_ENCRYPT == 'yes') { if (defined( 'ENABLE_ENCRYPT' ) && ENABLE_ENCRYPT == 'yes') {
return urlencode( G::encrypt( $url, URL_KEY ) ); return urlencode( Bootstrap::encrypt( $url, URL_KEY ) );
} else { } else {
return $url; return $url;
} }

View File

@@ -214,231 +214,6 @@ class G
{ {
return array_sum( explode( ' ', microtime() ) ); 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, "&lt;?" );
$pos2 = strrpos( $str, "?&gt;" );
$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 *** * * Encrypt and decrypt functions ***
@@ -1330,129 +1105,10 @@ class G
G::header( "location: /errors/error404.php?l=" . $_SERVER['REQUEST_URI'] ); G::header( "location: /errors/error404.php?l=" . $_SERVER['REQUEST_URI'] );
} }
switch (strtolower( $typefile )) { if ( substr($filename,-10) == "ext-all.js" ) {
case "js": $filename = PATH_GULLIVER_HOME . 'js/ext/min/ext-all.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;
} }
} @readfile( $filename );
/**
* 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;
} }
/** /**
@@ -3371,7 +3027,7 @@ class G
/** /**
* Validate and emai address in complete forms, * 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>' * 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 * -> 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 * 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) public function json_encode($Json)
{ {
@@ -3420,7 +3076,7 @@ class G
/** /**
* JSON decode * 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) public function json_decode($Json)
{ {
@@ -3689,11 +3345,11 @@ class G
return $infoUser; return $infoUser;
} }
public function getModel($model) //public function getModel($model)
{ //{
require_once "classes/model/$model.php"; // require_once "classes/model/$model.php";
return new $model(); // return new $model();
} //}
/** /**
* Recursive Is writeable function * Recursive Is writeable function

View File

@@ -4922,8 +4922,9 @@ class XmlForm
} }
} }
$oJSON = new Services_JSON(); //$oJSON = new Services_JSON();
$this->objectRequiredFields = str_replace( '"', "%27", str_replace( "'", "%39", $oJSON->encode( $this->requiredFields ) ) ); $jsonRequired = G::json_encode( $this->requiredFields );
$this->objectRequiredFields = str_replace( '"', "%27", str_replace( "'", "%39", $jsonRequired ) );
//Load the default values //Load the default values
//$this->setDefaultValues(); //$this->setDefaultValues();

View File

@@ -50,8 +50,8 @@ class dashletRssReader implements DashletInterface
curl_setopt( $pCurl, CURLOPT_CONNECTTIMEOUT, 10 ); curl_setopt( $pCurl, CURLOPT_CONNECTTIMEOUT, 10 );
curl_setopt( $pCurl, CURLOPT_TIMEOUT, 20 ); curl_setopt( $pCurl, CURLOPT_TIMEOUT, 20 );
curl_setopt( $pCurl, CURLOPT_NOPROGRESS, false ); curl_setopt( $pCurl, CURLOPT_NOPROGRESS, true );
curl_setopt( $pCurl, CURLOPT_VERBOSE, true ); curl_setopt( $pCurl, CURLOPT_VERBOSE, false );
//Apply proxy settings //Apply proxy settings
$sysConf = System::getSystemConfiguration(); $sysConf = System::getSystemConfiguration();

View File

@@ -66,7 +66,7 @@ class PMmemcached
$this->version = $this->mem->getVersion(); $this->version = $this->mem->getVersion();
} }
} else { } else {
G::Loadclass( 'fileCache' ); require_once ('classes/class.fileCache.php');
// create cache folder // create cache folder
$cacheFolder = PATH_DATA . "sites/" . $workspace . "/cachefiles/"; $cacheFolder = PATH_DATA . "sites/" . $workspace . "/cachefiles/";
if (! file_exists( $cacheFolder )) { if (! file_exists( $cacheFolder )) {

View File

@@ -1102,7 +1102,7 @@ class PMPluginRegistry
{ {
try { try {
$iPlugins = 0; $iPlugins = 0;
G::LoadClass( 'serverConfiguration' ); require_once ( 'class.serverConfiguration.php' );
$oServerConf = & serverConf::getSingleton(); $oServerConf = & serverConf::getSingleton();
$oServerConf->addPlugin( SYS_SYS, $this->_aPluginDetails ); $oServerConf->addPlugin( SYS_SYS, $this->_aPluginDetails );
foreach ($this->_aPluginDetails as $namespace => $detail) { foreach ($this->_aPluginDetails as $namespace => $detail) {

View File

@@ -120,7 +120,9 @@ if (strlen($msgType) > 0) {
$_SESSION['FAILED_LOGINS'] = $sFailedLogins; $_SESSION['FAILED_LOGINS'] = $sFailedLogins;
//translation //translation
$Translations = G::getModel("Translation"); //$Translations = G::getModel("Translation");
require_once "classes/model/Translation.php";
$Translations = new Translation();
$translationsTable = $Translations->getTranslationEnvironments(); $translationsTable = $Translations->getTranslationEnvironments();
$availableLangArray = array (); $availableLangArray = array ();

View File

@@ -83,10 +83,13 @@ function getWorkspacesAvailable()
sort ($filesArray, SORT_STRING); sort ($filesArray, SORT_STRING);
return $filesArray; return $filesArray;
} }
$availableWorkspace = getWorkspacesAvailable (); $availableWorkspace = getWorkspacesAvailable ();
//Translations //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(); $translationsTable = $Translations->getTranslationEnvironments();
$availableLangArray = array (); $availableLangArray = array ();
@@ -103,7 +106,6 @@ foreach ($translationsTable as $locale) {
$availableLangArray [] = $aFields; $availableLangArray [] = $aFields;
} }
$availableWorkspaceArray = array (); $availableWorkspaceArray = array ();
$availableWorkspaceArray [] = array ('ENV_ID' => 'char', 'ENV_NAME' => 'char'); $availableWorkspaceArray [] = array ('ENV_ID' => 'char', 'ENV_NAME' => 'char');
foreach ($availableWorkspace as $envKey => $envName) { foreach ($availableWorkspace as $envKey => $envName) {
@@ -120,8 +122,9 @@ $_SESSION ['_DBArray'] = $_DBArray;
$aField ['LOGIN_VERIFY_MSG'] = G::loadTranslation ('LOGIN_VERIFY_MSG'); $aField ['LOGIN_VERIFY_MSG'] = G::loadTranslation ('LOGIN_VERIFY_MSG');
$aField['USER_LANG'] = SYS_LANG; $aField['USER_LANG'] = SYS_LANG;
//Get Server Configuration //Get Server Configuration
G::LoadClass ('serverConfiguration'); //G::LoadClass ('serverConfiguration'); //already called
$oServerConf = & serverConf::getSingleton (); $oServerConf = & serverConf::getSingleton ();
$G_PUBLISH = new Publisher (); $G_PUBLISH = new Publisher ();
@@ -131,8 +134,8 @@ if ($oServerConf->getProperty ('LOGIN_NO_WS')) {
$G_PUBLISH->AddContent ('xmlform', 'xmlform', 'login/sysLogin', '', $aField, 'sysLogin'); $G_PUBLISH->AddContent ('xmlform', 'xmlform', 'login/sysLogin', '', $aField, 'sysLogin');
} }
G::RenderPage ("publish"); G::RenderPage ("publish");
?> ?>
<script type="text/javascript"> <script type="text/javascript">
var oInfoPanel; var oInfoPanel;

View File

@@ -36,9 +36,11 @@ try {
die; die;
break; break;
}*/ }*/
$oJSON = new Services_JSON(); //$oJSON = new Services_JSON();
if (isset( $_REQUEST['data'] )) { if (isset( $_REQUEST['data'] )) {
$oData = $oJSON->decode( stripslashes( $_REQUEST['data'] ) ); $oData = G::json_decode( stripslashes( $_REQUEST['data'] ) );
//$oData = $oJSON->decode( stripslashes( $_REQUEST['data'] ) );
$sOutput = ''; $sOutput = '';
} }

View File

@@ -15,8 +15,9 @@ try {
break; break;
} }
$oJSON = new Services_JSON(); //$oJSON = new Services_JSON();
$aData = get_object_vars( $oJSON->decode( $_POST['oData'] ) ); $aData = get_object_vars( G::json_decode( $_POST['oData'] ));
//$aData = get_object_vars( $oJSON->decode( $_POST['oData'] ) );
if (isset( $_POST['function'] )) { if (isset( $_POST['function'] )) {
$sAction = $_POST['function']; $sAction = $_POST['function'];

View File

@@ -23,7 +23,7 @@
*/ */
/** /**
* sysGeneric - ProcessMaker Bootstrap * bootstrap - ProcessMaker Bootstrap
* this file is used initialize main variables, redirect and dispatch all requests * 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_TRUNK', $pathTrunk );
define( 'PATH_OUTTRUNK', $pathOutTrunk ); 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 // Defining RBAC Paths constants
define( 'PATH_RBAC_HOME', PATH_TRUNK . 'rbac' . PATH_SEP ); 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_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', 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_RBAC_CORE', PATH_RBAC_HOME . 'engine' . PATH_SEP );
define( 'PATH_HTML', PATH_HOME . 'public_html' . PATH_SEP );
// Defining PMCore Path constants // Defining PMCore Path constants
define( 'PATH_CORE', PATH_HOME . 'engine' . PATH_SEP ); 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'); require_once (PATH_GULLIVER . PATH_SEP . 'class.bootstrap.php');
if (file_exists( FILE_PATHS_INSTALLED )) { 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; 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_LANGUAGECONT', PATH_DATA . "META-INF" . PATH_SEP );
define( 'PATH_CUSTOM_SKINS', PATH_DATA . 'skins' . PATH_SEP ); define( 'PATH_CUSTOM_SKINS', PATH_DATA . 'skins' . PATH_SEP );
define( 'PATH_TEMPORAL', PATH_C . 'dynEditor/' ); define( 'PATH_TEMPORAL', PATH_C . 'dynEditor/' );
define( 'PATH_DB', PATH_DATA . 'sites' . PATH_SEP ); define( 'PATH_DB', PATH_DATA . 'sites' . PATH_SEP );
// smarty constants // smarty constants
define( 'PATH_SMARTY_C', PATH_C . 'smarty' . PATH_SEP . 'c' ); define( 'PATH_SMARTY_C', PATH_C . 'smarty' . PATH_SEP . 'c' );
define( 'PATH_SMARTY_CACHE', PATH_C . 'smarty' . PATH_SEP . 'cache' ); define( 'PATH_SMARTY_CACHE', PATH_C . 'smarty' . PATH_SEP . 'cache' );
/* To do:
if (! is_dir( PATH_SMARTY_C )) { if (! is_dir( PATH_SMARTY_C )) {
G::mk_dir( PATH_SMARTY_C ); G::mk_dir( PATH_SMARTY_C );
} }
if (! is_dir( PATH_SMARTY_CACHE )) { if (! is_dir( PATH_SMARTY_CACHE )) {
G::mk_dir( PATH_SMARTY_CACHE ); G::mk_dir( PATH_SMARTY_CACHE );
} }
*/
} }
// set include path // 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 * 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_UPLOAD_URL', PML_SERVER . '/syspmLibrary/en/green/services/uploadProcess' );
define( 'PML_DOWNLOAD_URL', PML_SERVER . '/syspmLibrary/en/green/services/download' ); 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 // starting session
session_start(); session_start();
$config = System::getSystemConfiguration(); $config = Bootstrap::getSystemConfiguration();
$e_all = defined( 'E_DEPRECATED' ) ? E_ALL & ~ E_DEPRECATED : E_ALL; $e_all = defined( 'E_DEPRECATED' ) ? E_ALL & ~ E_DEPRECATED : E_ALL;
$e_all = defined( 'E_STRICT' ) ? $e_all & ~ E_STRICT : $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 //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 //check if it is a installation instance
if (! defined( 'PATH_C' )) { if (! defined( 'PATH_C' )) {
// is a intallation instance, so we need to define PATH_C and PATH_LANGUAGECONT constants temporarily // 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/' ); define( 'PATH_LANGUAGECONT', PATH_HOME . 'engine/content/languages/' );
} }
@@ -216,7 +224,7 @@ if (defined( 'PATH_C' )) {
} }
$virtualURITable['/htmlarea/(*)'] = PATH_THIRDPARTY . 'htmlarea/'; $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['/(sys*)'] = FALSE;
$virtualURITable['/errors/(*)'] = PATH_GULLIVER_HOME . 'methods/errors/'; $virtualURITable['/errors/(*)'] = PATH_GULLIVER_HOME . 'methods/errors/';
$virtualURITable['/gulliver/(*)'] = PATH_GULLIVER_HOME . 'methods/'; $virtualURITable['/gulliver/(*)'] = PATH_GULLIVER_HOME . 'methods/';
@@ -225,15 +233,15 @@ $virtualURITable['/html2ps_pdf/(*)'] = PATH_THIRDPARTY . 'html2ps_pdf/';
$virtualURITable['/images/'] = 'errorFile'; $virtualURITable['/images/'] = 'errorFile';
$virtualURITable['/skins/'] = 'errorFile'; $virtualURITable['/skins/'] = 'errorFile';
$virtualURITable['/files/'] = '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['/rest/(*)'] = 'rest-service';
$virtualURITable['/update/(*)'] = PATH_GULLIVER_HOME . 'methods/update/'; $virtualURITable['/update/(*)'] = PATH_GULLIVER_HOME . 'methods/update/';
$virtualURITable['/(*)'] = PATH_HTML; //$virtualURITable['/(*)'] = PATH_HTML;
$virtualURITable['/css/(*)'] = PATH_HTML . 'css/'; //ugly
$isRestRequest = false; $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 // 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 // review if the file requested belongs to public_html plugin
if (substr( $realPath, 0, 6 ) == '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 // 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] )) { if (isset( $forQuery[1] )) {
$pathsQuery = $forQuery[1]; $pathsQuery = $forQuery[1];
} }
//Get that path in array //Get that path in array
$paths = explode( PATH_SEP, $forQuery[0] ); $paths = explode( PATH_SEP, $forQuery[0] );
//remove the "plugin" word from //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) //The other parts are the realpath into public_html (no matter how many elements)
$filePath = implode( PATH_SEP, $paths ); $filePath = implode( PATH_SEP, $paths );
$pluginFilename = PATH_PLUGINS . $pluginFolder . PATH_SEP . 'public_html' . PATH_SEP . $filePath; $pluginFilename = PATH_PLUGINS . $pluginFolder . PATH_SEP . 'public_html' . PATH_SEP . $filePath;
if (file_exists( $pluginFilename )) { if (file_exists( $pluginFilename )) {
G::streamFile( $pluginFilename ); Bootstrap::streamFile( $pluginFilename );
} }
die(); die();
} }
$requestUriArray = explode( "/", $_SERVER['REQUEST_URI'] ); $requestUriArray = explode( "/", $_SERVER['REQUEST_URI'] );
if ((isset( $requestUriArray[1] )) && ($requestUriArray[1] == 'skin')) { if ((isset( $requestUriArray[1] )) && ($requestUriArray[1] == 'skin')) {
// This will allow to public images of Custom Skins, By JHL Feb 28, 11 // This will allow to public images of Custom Skins, By JHL Feb 28, 11
$pathsQuery = ""; $pathsQuery = "";
@@ -273,13 +281,13 @@ if (G::virtualURI( $_SERVER['REQUEST_URI'], $virtualURITable, $realPath )) {
if (isset( $forQuery[1] )) { if (isset( $forQuery[1] )) {
$pathsQuery = $forQuery[1]; $pathsQuery = $forQuery[1];
} }
//Get that path in array //Get that path in array
$paths = explode( PATH_SEP, $forQuery[0] ); $paths = explode( PATH_SEP, $forQuery[0] );
$fileToBeStreamed = str_replace( "/skin/", PATH_CUSTOM_SKINS, $_SERVER['REQUEST_URI'] ); $fileToBeStreamed = str_replace( "/skin/", PATH_CUSTOM_SKINS, $_SERVER['REQUEST_URI'] );
if (file_exists( $fileToBeStreamed )) { if (file_exists( $fileToBeStreamed )) {
G::streamFile( $fileToBeStreamed ); Bootstrap::streamFile( $fileToBeStreamed );
} }
die(); die();
} }
@@ -293,15 +301,15 @@ if (G::virtualURI( $_SERVER['REQUEST_URI'], $virtualURITable, $realPath )) {
die(); die();
break; break;
case 'jsMethod': case 'jsMethod':
G::parseURI( getenv( "REQUEST_URI" ) ); Bootstrap::parseURI( getenv( "REQUEST_URI" ) );
$filename = PATH_METHODS . SYS_COLLECTION . '/' . SYS_TARGET . '.js'; $filename = PATH_METHODS . SYS_COLLECTION . '/' . SYS_TARGET . '.js';
G::streamFile( $filename ); Bootstrap::streamFile( $filename );
die(); die();
break; break;
case 'errorFile': case 'errorFile':
header( "location: /errors/error404.php?url=" . urlencode( $_SERVER['REQUEST_URI'] ) ); header( "location: /errors/error404.php?url=" . urlencode( $_SERVER['REQUEST_URI'] ) );
if (DEBUG_TIME_LOG) if (DEBUG_TIME_LOG)
G::logTimeByPage(); //log this page Bootstrap::logTimeByPage(); //log this page
die(); die();
break; break;
default: default:
@@ -310,26 +318,25 @@ if (G::virtualURI( $_SERVER['REQUEST_URI'], $virtualURITable, $realPath )) {
} else { } else {
$realPath = explode( '?', $realPath ); $realPath = explode( '?', $realPath );
$realPath[0] .= strpos( basename( $realPath[0] ), '.' ) === false ? '.php' : ''; $realPath[0] .= strpos( basename( $realPath[0] ), '.' ) === false ? '.php' : '';
G::streamFile( $realPath[0] ); Bootstrap::streamFile( $realPath[0] );
die(); die();
} }
} }
} //virtual URI parser } //virtual URI parser
// the request correspond to valid php page, now parse the URI // 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" ); header( "location: /update/updating.php" );
if (DEBUG_TIME_LOG) if (DEBUG_TIME_LOG)
G::logTimeByPage(); Bootstrap::logTimeByPage();
die(); die();
} }
// verify if index.html exists // verify if index.html exists
if (! file_exists( PATH_HTML . 'index.html' )) { // if not, create it from template 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 // defining the serverConf singleton
if (defined( 'PATH_DATA' ) && file_exists( PATH_DATA )) { if (defined( 'PATH_DATA' ) && file_exists( PATH_DATA )) {
//Instance Server Configuration Singleton //Instance Server Configuration Singleton
G::LoadClass( 'serverConfiguration' ); Bootstrap::LoadClass( 'serverConfiguration' );
$oServerConf = & serverConf::getSingleton(); $oServerConf = & serverConf::getSingleton();
} }
// Call Gulliver Classes // Call Gulliver Classes
G::LoadThirdParty( 'pear/json', 'class.json' ); Bootstrap::LoadThirdParty( 'smarty/libs', 'Smarty.class' );
G::LoadThirdParty( 'smarty/libs', 'Smarty.class' ); //Bootstrap::LoadSystem( 'error' );
G::LoadSystem( 'error' ); //Bootstrap::LoadSystem( 'dbconnection' );
G::LoadSystem( 'dbconnection' ); //Bootstrap::LoadSystem( 'dbsession' );
G::LoadSystem( 'dbsession' ); //Bootstrap::LoadSystem( 'dbrecordset' );
G::LoadSystem( 'dbrecordset' ); //Bootstrap::LoadSystem( 'dbtable' );
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::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 // Create headPublisher singleton
G::LoadSystem( 'headPublisher' ); Bootstrap::LoadSystem( 'headPublisher' );
$oHeadPublisher = & headPublisher::getSingleton(); $oHeadPublisher = & headPublisher::getSingleton();
// Installer, redirect to install if we don't have a valid shared data folder // Installer, redirect to install if we don't have a valid shared data folder
if (! defined( 'PATH_DATA' ) || ! file_exists( PATH_DATA )) { if (! defined( 'PATH_DATA' ) || ! file_exists( PATH_DATA )) {
// new installer, extjs based // new installer, extjs based
define( 'PATH_DATA', PATH_C ); define( 'PATH_DATA', PATH_C );
require_once (PATH_CONTROLLERS . 'installer.php'); require_once (PATH_CONTROLLERS . 'installer.php');
$controller = 'Installer'; $controller = 'Installer';
// if the method name is empty set default to index method // if the method name is empty set default to index method
if (strpos( SYS_TARGET, '/' ) !== false) { if (strpos( SYS_TARGET, '/' ) !== false) {
list ($controller, $controllerAction) = explode( '/', SYS_TARGET ); list ($controller, $controllerAction) = explode( '/', SYS_TARGET );
} else { } else {
$controllerAction = SYS_TARGET; $controllerAction = SYS_TARGET;
} }
$controllerAction = ($controllerAction != '' && $controllerAction != 'login') ? $controllerAction : 'index'; $controllerAction = ($controllerAction != '' && $controllerAction != 'login') ? $controllerAction : 'index';
// create the installer controller and call its method // create the installer controller and call its method
if (is_callable( Array ('Installer',$controllerAction if (is_callable( Array ('Installer',$controllerAction
) )) { ) )) {
$installer = new $controller(); $installer = new $controller();
$installer->setHttpRequestData( $_REQUEST ); $installer->setHttpRequestData( $_REQUEST );
@@ -399,14 +405,14 @@ if (! defined( 'PATH_DATA' ) || ! file_exists( PATH_DATA )) {
} }
// Load Language Translation // Load Language Translation
G::LoadTranslationObject( defined( 'SYS_LANG' ) ? SYS_LANG : "en" ); Bootstrap::LoadTranslationObject( defined( 'SYS_LANG' ) ? SYS_LANG : "en" );
// look for a disabled workspace // look for a disabled workspace
if ($oServerConf->isWSDisabled( SYS_TEMP )) { 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 = new Publisher();
$G_PUBLISH->AddContent( 'xmlform', 'xmlform', 'login/showMessage', '', $aMessage ); $G_PUBLISH->AddContent( 'xmlform', 'xmlform', 'login/showMessage', '', $aMessage );
G::RenderPage( 'publish' ); Bootstrap::RenderPage( 'publish' );
die(); die();
} }
@@ -417,14 +423,14 @@ if (defined( 'SYS_TEMP' ) && SYS_TEMP != '') {
if (file_exists( PATH_DB . SYS_TEMP . '/db.php' )) { if (file_exists( PATH_DB . SYS_TEMP . '/db.php' )) {
require_once (PATH_DB . SYS_TEMP . '/db.php'); require_once (PATH_DB . SYS_TEMP . '/db.php');
define( 'SYS_SYS', SYS_TEMP ); define( 'SYS_SYS', SYS_TEMP );
// defining constant for workspace shared directory // defining constant for workspace shared directory
define( 'PATH_WORKSPACE', PATH_DB . SYS_SYS . PATH_SEP ); define( 'PATH_WORKSPACE', PATH_DB . SYS_SYS . PATH_SEP );
// including workspace shared classes -> particularlly for pmTables // including workspace shared classes -> particularlly for pmTables
set_include_path( get_include_path() . PATH_SEPARATOR . PATH_WORKSPACE ); set_include_path( get_include_path() . PATH_SEPARATOR . PATH_WORKSPACE );
} else { } else {
G::SendTemporalMessage( 'ID_NOT_WORKSPACE', "error" ); Bootstrap::SendTemporalMessage( 'ID_NOT_WORKSPACE', "error" );
G::header( 'location: /sys/' . SYS_LANG . '/' . SYS_SKIN . '/main/sysLogin?errno=2' ); Bootstrap::header( 'location: /sys/' . SYS_LANG . '/' . SYS_SKIN . '/main/sysLogin?errno=2' );
die(); die();
} }
} else { //when we are in global pages, outside any valid workspace } 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 if (SYS_TARGET == "dbInfo") { //Show dbInfo when no SYS_SYS
require_once (PATH_METHODS . "login/dbInfo.php"); require_once (PATH_METHODS . "login/dbInfo.php");
} else { } else {
if (substr( SYS_SKIN, 0, 2 ) === 'ux' && SYS_TARGET != 'sysLoginVerify') { // new ux sysLogin - extjs based form if (substr( SYS_SKIN, 0, 2 ) === 'ux' && SYS_TARGET != 'sysLoginVerify') { // new ux sysLogin - extjs based form
require_once PATH_CONTROLLERS . 'main.php'; require_once PATH_CONTROLLERS . 'main.php';
$controllerClass = 'Main'; $controllerClass = 'Main';
$controllerAction = SYS_TARGET == 'sysLoginVerify' ? SYS_TARGET : 'sysLogin'; $controllerAction = SYS_TARGET == 'sysLoginVerify' ? SYS_TARGET : 'sysLogin';
//if the method exists //if the method exists
if (is_callable( Array ($controllerClass,$controllerAction if (is_callable( Array ($controllerClass,$controllerAction
) )) { ) )) {
$controller = new $controllerClass(); $controller = new $controllerClass();
$controller->setHttpRequestData( $_REQUEST ); $controller->setHttpRequestData( $_REQUEST );
$controller->call( $controllerAction ); $controller->call( $controllerAction );
} }
} else { // classic sysLogin interface } 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"); require_once (PATH_METHODS . "login/sysLogin.php");
die(); die();
} }
} }
if (DEBUG_TIME_LOG) if (DEBUG_TIME_LOG)
G::logTimeByPage(); //log this page Bootstrap::logTimeByPage(); //log this page
die(); die();
} }
} }
@@ -472,7 +483,7 @@ define( 'SERVER_NAME', $_SERVER['SERVER_NAME'] );
define( 'SERVER_PORT', $_SERVER['SERVER_PORT'] ); define( 'SERVER_PORT', $_SERVER['SERVER_PORT'] );
// create memcached singleton // create memcached singleton
G::LoadClass( 'memcached' ); Bootstrap::LoadClass( 'memcached' );
$memcache = & PMmemcached::getSingleton( SYS_SYS ); $memcache = & PMmemcached::getSingleton( SYS_SYS );
// verify configuration for rest service // verify configuration for rest service
@@ -481,7 +492,7 @@ if ($isRestRequest) {
$isRestRequest = false; $isRestRequest = false;
$confFile = ''; $confFile = '';
$restApiClassPath = ''; $restApiClassPath = '';
// try load and getting rest configuration // try load and getting rest configuration
if (file_exists( PATH_DATA_SITE . 'rest-config.ini' )) { if (file_exists( PATH_DATA_SITE . 'rest-config.ini' )) {
$confFile = PATH_DATA_SITE . 'rest-config.ini'; $confFile = PATH_DATA_SITE . 'rest-config.ini';
@@ -499,7 +510,7 @@ if ($isRestRequest) {
} }
// load Plugins base class // load Plugins base class
G::LoadClass( 'plugin' ); Bootstrap::LoadClass( 'plugin' );
//here we are loading all plugins registered //here we are loading all plugins registered
//the singleton has a list of enabled plugins //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) { if (defined( 'DEBUG_SQL_LOG' ) && DEBUG_SQL_LOG) {
define( 'PM_PID', mt_rand( 1, 999999 ) ); define( 'PM_PID', mt_rand( 1, 999999 ) );
require_once 'Log.php'; require_once 'Log.php';
// register debug connection decorator driver // register debug connection decorator driver
Creole::registerDriver( '*', 'creole.contrib.DebugConnection' ); Creole::registerDriver( '*', 'creole.contrib.DebugConnection' );
// initialize Propel with converted config file // initialize Propel with converted config file
Propel::init( PATH_CORE . "config/databases.php" ); Propel::init( PATH_CORE . "config/databases.php" );
// unified log file for all databases // unified log file for all databases
$logFile = PATH_DATA . 'log' . PATH_SEP . 'propel.log'; $logFile = PATH_DATA . 'log' . PATH_SEP . 'propel.log';
$logger = Log::singleton( 'file', $logFile, 'wf ' . SYS_SYS, null, PEAR_LOG_INFO ); $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 // log file for rbac database
$con = Propel::getConnection( 'rbac' ); $con = Propel::getConnection( 'rbac' );
if ($con instanceof DebugConnection) { if ($con instanceof DebugConnection) {
$con->setLogger( $logger ); $con->setLogger( $logger );
} }
// log file for report database // log file for report database
$con = Propel::getConnection( 'rp' ); $con = Propel::getConnection( 'rp' );
if ($con instanceof DebugConnection) { if ($con instanceof DebugConnection) {
@@ -576,7 +587,7 @@ $oPluginRegistry->setupPlugins(); //get and setup enabled plugins
$avoidChangedWorkspaceValidation = false; $avoidChangedWorkspaceValidation = false;
// Load custom Classes and Model from Plugins. // Load custom Classes and Model from Plugins.
G::LoadAllPluginModelClasses(); Bootstrap::LoadAllPluginModelClasses();
// jump to php file in methods directory // jump to php file in methods directory
$collectionPlugin = ''; $collectionPlugin = '';
@@ -586,16 +597,16 @@ if ($oPluginRegistry->isRegisteredFolder( SYS_COLLECTION )) {
$collectionPlugin = $targetPlugin[0]; $collectionPlugin = $targetPlugin[0];
$avoidChangedWorkspaceValidation = true; $avoidChangedWorkspaceValidation = true;
} else { } 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, // services is a special folder,
if (SYS_COLLECTION == 'services') { if (SYS_COLLECTION == 'services') {
$avoidChangedWorkspaceValidation = true; $avoidChangedWorkspaceValidation = true;
$targetPlugin = explode( '/', SYS_TARGET ); $targetPlugin = explode( '/', SYS_TARGET );
if ($targetPlugin[0] == 'webdav') { 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; $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; $bWE = false;
$isControllerCall = false; $isControllerCall = false;
if (substr( SYS_COLLECTION, 0, 8 ) === 'gulliver') { 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] ); $phpFile = PATH_DATA_SITE . 'public' . PATH_SEP . SYS_COLLECTION . PATH_SEP . urldecode( $auxPart[count( $auxPart ) - 1] );
$aAux = explode( '?', $phpFile ); $aAux = explode( '?', $phpFile );
$phpFile = $aAux[0]; $phpFile = $aAux[0];
if ($extension != 'php') { if ($extension != 'php') {
G::streamFile( $phpFile ); Bootstrap::streamFile( $phpFile );
die(); die();
} }
$avoidChangedWorkspaceValidation = true; $avoidChangedWorkspaceValidation = true;
$bWE = true; $bWE = true;
//$phpFile = PATH_DATA_SITE . 'public' . PATH_SEP . SYS_COLLECTION . PATH_SEP . $auxPart[ count($auxPart)-1]; //$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 //erik: verify if it is a Controller Class or httpProxyController Class
if (is_file( PATH_CONTROLLERS . SYS_COLLECTION . '.php' )) { if (is_file( PATH_CONTROLLERS . SYS_COLLECTION . '.php' )) {
Bootstrap::LoadSystem( 'controller' );
require_once PATH_CONTROLLERS . SYS_COLLECTION . '.php'; require_once PATH_CONTROLLERS . SYS_COLLECTION . '.php';
$controllerClass = SYS_COLLECTION; $controllerClass = SYS_COLLECTION;
//if the method name is empty set default to index method //if the method name is empty set default to index method
$controllerAction = SYS_TARGET != '' ? SYS_TARGET : 'index'; $controllerAction = SYS_TARGET != '' ? SYS_TARGET : 'index';
//if the method exists //if the method exists
if (is_callable( Array ($controllerClass,$controllerAction if (is_callable( Array ($controllerClass,$controllerAction
) )) { ) )) {
$isControllerCall = true; $isControllerCall = true;
} }
} }
if (! $isControllerCall && ! file_exists( $phpFile ) && ! $isRestRequest) { if (! $isControllerCall && ! file_exists( $phpFile ) && ! $isRestRequest) {
$_SESSION['phpFileNotFound'] = $_SERVER['REQUEST_URI']; $_SESSION['phpFileNotFound'] = $_SERVER['REQUEST_URI'];
header( "location: /errors/error404.php?url=" . urlencode( $_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 //redirect to login, if user changed the workspace in the URL
if (! $avoidChangedWorkspaceValidation && isset( $_SESSION['WORKSPACE'] ) && $_SESSION['WORKSPACE'] != SYS_SYS) { if (! $avoidChangedWorkspaceValidation && isset( $_SESSION['WORKSPACE'] ) && $_SESSION['WORKSPACE'] != SYS_SYS) {
$_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 // verify if the current skin is a 'ux' variant
$urlPart = substr( SYS_SKIN, 0, 2 ) == 'ux' && SYS_SKIN != 'uxs' ? '/main/login' : '/login/login'; $urlPart = substr( SYS_SKIN, 0, 2 ) == 'ux' && SYS_SKIN != 'uxs' ? '/main/login' : '/login/login';
header( 'Location: /sys' . SYS_SYS . '/' . SYS_LANG . '/' . SYS_SKIN . $urlPart ); header( 'Location: /sys' . SYS_SYS . '/' . SYS_LANG . '/' . SYS_SKIN . $urlPart );
die(); die();
} }
// enable rbac // enable rbac
Bootstrap::LoadSystem( 'rbac' );
$RBAC = &RBAC::getSingleton( PATH_DATA, session_id() ); $RBAC = &RBAC::getSingleton( PATH_DATA, session_id() );
$RBAC->sSystem = 'PROCESSMAKER'; $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 // define and send Headers for all pages
if (! defined( 'EXECUTE_BY_CRON' )) { 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" ); 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: no-store, no-cache, must-revalidate" );
header( "Cache-Control: post-check=0, pre-check=0", false ); header( "Cache-Control: post-check=0, pre-check=0", false );
header( "Pragma: no-cache" ); header( "Pragma: no-cache" );
// get the language direction from ServerConf // get the language direction from ServerConf
define( 'SYS_LANG_DIRECTION', $oServerConf->getLanDirection() ); define( 'SYS_LANG_DIRECTION', $oServerConf->getLanDirection() );
if ((isset( $_SESSION['USER_LOGGED'] )) && (! (isset( $_GET['sid'] )))) { if ((isset( $_SESSION['USER_LOGGED'] )) && (! (isset( $_GET['sid'] )))) {
$RBAC->initRBAC(); $RBAC->initRBAC();
//using optimization with memcache, the user data will be in memcache 8 hours, or until session id goes invalid //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[] = 'retrivePassword';
$noLoginFiles[] = 'defaultAjaxDynaform'; $noLoginFiles[] = 'defaultAjaxDynaform';
$noLoginFiles[] = 'dynaforms_checkDependentFields'; $noLoginFiles[] = 'dynaforms_checkDependentFields';
$noLoginFolders[] = 'services'; $noLoginFolders[] = 'services';
$noLoginFolders[] = 'tracker'; $noLoginFolders[] = 'tracker';
$noLoginFolders[] = 'installer'; $noLoginFolders[] = 'installer';
// This sentence is used when you lost the Session // 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) { if (! in_array( SYS_TARGET, $noLoginFiles ) && ! in_array( SYS_COLLECTION, $noLoginFolders ) && $bWE != true && $collectionPlugin != 'services' && ! $isRestRequest) {
$bRedirect = true; $bRedirect = true;
if (isset( $_GET['sid'] )) { if (isset( $_GET['sid'] )) {
G::LoadClass( 'sessions' ); Bootstrap::LoadClass( 'sessions' );
$oSessions = new Sessions(); $oSessions = new Sessions();
if ($aSession = $oSessions->verifySession( $_GET['sid'] )) { if ($aSession = $oSessions->verifySession( $_GET['sid'] )) {
require_once 'classes/model/Users.php'; require_once 'classes/model/Users.php';
@@ -733,7 +761,7 @@ if (! defined( 'EXECUTE_BY_CRON' )) {
$memcache->set( $memKey, $RBAC->aUserInfo, PMmemcached::EIGHT_HOURS ); $memcache->set( $memKey, $RBAC->aUserInfo, PMmemcached::EIGHT_HOURS );
} }
} }
if ($bRedirect) { if ($bRedirect) {
if (substr( SYS_SKIN, 0, 2 ) == 'ux' && SYS_SKIN != 'uxs') { // verify if the current skin is a 'ux' variant if (substr( SYS_SKIN, 0, 2 ) == 'ux' && SYS_SKIN != 'uxs') { // verify if the current skin is a 'ux' variant
$loginUrl = 'main/login'; $loginUrl = 'main/login';
@@ -742,10 +770,10 @@ if (! defined( 'EXECUTE_BY_CRON' )) {
} else { } else {
$loginUrl = 'login/login'; // just set up the classic login $loginUrl = 'login/login'; // just set up the classic login
} }
if (empty( $_POST )) { if (empty( $_POST )) {
header( 'location: ' . SYS_URI . $loginUrl . '?u=' . urlencode( $_SERVER['REQUEST_URI'] ) ); header( 'location: ' . SYS_URI . $loginUrl . '?u=' . urlencode( $_SERVER['REQUEST_URI'] ) );
} else { } else {
if ($isControllerCall) { if ($isControllerCall) {
header( "HTTP/1.0 302 session lost in controller" ); header( "HTTP/1.0 302 session lost in controller" );
@@ -758,30 +786,30 @@ if (! defined( 'EXECUTE_BY_CRON' )) {
} }
} }
$_SESSION['phpLastFileFound'] = $_SERVER['REQUEST_URI']; $_SESSION['phpLastFileFound'] = $_SERVER['REQUEST_URI'];
/** /**
* New feature for Gulliver framework to support Controllers & HttpProxyController classes handling * 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 if ($isControllerCall) { //Instance the Controller object and call the request method
$controller = new $controllerClass(); $controller = new $controllerClass();
$controller->setHttpRequestData( $_REQUEST ); $controller->setHttpRequestData( $_REQUEST );
$controller->call( $controllerAction ); $controller->call( $controllerAction );
} elseif ($isRestRequest) { } elseif ($isRestRequest) {
G::dispatchRestService( SYS_TARGET, $restConfig, $restApiClassPath ); Bootstrap::dispatchRestService( SYS_TARGET, $restConfig, $restApiClassPath );
} else { } else {
require_once $phpFile; require_once $phpFile;
} }
if (defined( 'SKIP_HEADERS' )) { 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( "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( 'Cache-Control: public' );
header( 'Pragma: ' ); header( 'Pragma: ' );
} }
ob_end_flush(); ob_end_flush();
if (DEBUG_TIME_LOG) { if (DEBUG_TIME_LOG) {
G::logTimeByPage(); //log this page bootstrap::logTimeByPage(); //log this page
} }
} }

View File

@@ -234,7 +234,6 @@
} }
// Call Gulliver Classes // Call Gulliver Classes
G::LoadThirdParty('pear/json','class.json');
G::LoadThirdParty('smarty/libs','Smarty.class'); G::LoadThirdParty('smarty/libs','Smarty.class');
G::LoadSystem('error'); G::LoadSystem('error');
G::LoadSystem('dbconnection'); G::LoadSystem('dbconnection');