2012-11-08 18:06:09 -04:00
< ? php
2013-03-04 09:29:59 -04:00
2012-11-08 18:06:09 -04:00
/**
2012-11-12 14:44:44 -04:00
* class . bootstrap . php
2012-11-08 18:40:37 -04:00
*
2012-11-08 18:06:09 -04:00
* @ package gulliver . system
*
*/
2012-11-12 14:44:44 -04:00
class Bootstrap
2012-11-08 18:06:09 -04:00
{
2012-11-13 13:48:16 -04:00
2013-03-04 09:29:59 -04:00
public static $includeClassPaths = array ();
2012-11-13 13:48:16 -04:00
protected $relativeIncludePaths = array ();
2012-11-12 14:44:44 -04:00
//below here only approved methods
2012-11-13 13:48:16 -04:00
/* the autoloader functions */
2013-03-04 09:29:59 -04:00
public static function autoloadClass ( $class )
2012-11-13 13:48:16 -04:00
{
//error_log( "$class ");
$className = strtolower ( $class );
if ( array_key_exists ( $className , BootStrap :: $includeClassPaths )) {
require_once BootStrap :: $includeClassPaths [ $className ];
return true ;
} else {
2013-03-04 09:29:59 -04:00
//print "$class "; //die;
//print_r ( debug_backtrace(false));
2012-11-13 13:48:16 -04:00
}
return ;
}
public function registerClass ( $classname , $includeFile )
{
BootStrap :: $includeClassPaths [ strtolower ( $classname )] = $includeFile ;
return ;
}
2012-11-12 14:44:44 -04:00
/*
2012-11-13 13:48:16 -04:00
* these functions still under revision
2013-03-04 09:29:59 -04:00
*/
2013-04-30 10:49:13 -04:00
public static function getSystemConfiguration ( $globalIniFile = '' , $wsIniFile = '' , $wsName = '' )
2012-11-12 14:44:44 -04:00
{
$readGlobalIniFile = false ;
$readWsIniFile = false ;
2013-03-04 09:29:59 -04:00
if ( empty ( $globalIniFile )) {
2012-11-12 14:44:44 -04:00
$globalIniFile = PATH_CORE . 'config' . PATH_SEP . 'env.ini' ;
}
2013-03-04 09:29:59 -04:00
if ( empty ( $wsIniFile )) {
if ( defined ( 'PATH_DB' )) {
2012-11-12 14:44:44 -04:00
// if we're on a valid workspace env.
2013-03-04 09:29:59 -04:00
if ( empty ( $wsName )) {
$uriParts = explode ( '/' , getenv ( " REQUEST_URI " ));
if ( isset ( $uriParts [ 1 ])) {
if ( substr ( $uriParts [ 1 ], 0 , 3 ) == 'sys' ) {
$wsName = substr ( $uriParts [ 1 ], 3 );
2012-11-12 14:44:44 -04:00
}
}
}
$wsIniFile = PATH_DB . $wsName . PATH_SEP . 'env.ini' ;
}
}
2013-03-04 09:29:59 -04:00
$readGlobalIniFile = file_exists ( $globalIniFile ) ? true : false ;
$readWsIniFile = file_exists ( $wsIniFile ) ? true : false ;
2012-11-12 14:44:44 -04:00
2013-03-04 09:29:59 -04:00
if ( isset ( $_SESSION [ 'PROCESSMAKER_ENV' ])) {
$md5 = array ();
2012-11-12 14:44:44 -04:00
if ( $readGlobalIniFile ) {
2013-03-04 09:29:59 -04:00
$md5 [] = md5_file ( $globalIniFile );
2012-11-12 14:44:44 -04:00
}
if ( $readWsIniFile ) {
2013-03-04 09:29:59 -04:00
$md5 [] = md5_file ( $wsIniFile );
2012-11-12 14:44:44 -04:00
}
2013-03-04 09:29:59 -04:00
$hash = implode ( '-' , $md5 );
2012-11-12 14:44:44 -04:00
if ( $_SESSION [ 'PROCESSMAKER_ENV_HASH' ] === $hash ) {
$_SESSION [ 'PROCESSMAKER_ENV' ][ 'from_cache' ] = 1 ;
return $_SESSION [ 'PROCESSMAKER_ENV' ];
}
}
// default configuration
2013-08-27 16:58:13 -04:00
$config = array ( 'debug' => 0 , 'debug_sql' => 0 , 'debug_time' => 0 , 'debug_calendar' => 0 , 'wsdl_cache' => 1 , 'memory_limit' => " 256M " , 'time_zone' => 'America/New_York' , 'memcached' => 0 , 'memcached_server' => '' , 'default_skin' => 'neoclassic' , 'default_lang' => 'en' , 'proxy_host' => '' , 'proxy_port' => '' , 'proxy_user' => '' , 'proxy_pass' => '' );
2012-11-12 14:44:44 -04:00
// read the global env.ini configuration file
2013-03-04 09:29:59 -04:00
if ( $readGlobalIniFile && ( $globalConf = @ parse_ini_file ( $globalIniFile )) !== false ) {
$config = array_merge ( $config , $globalConf );
2012-11-12 14:44:44 -04:00
}
// Workspace environment configuration
2013-03-04 09:29:59 -04:00
if ( $readWsIniFile && ( $wsConf = @ parse_ini_file ( $wsIniFile )) !== false ) {
$config = array_merge ( $config , $wsConf );
2012-11-12 14:44:44 -04:00
}
// validation debug config, only binary value is valid; debug = 1, to enable
$config [ 'debug' ] = $config [ 'debug' ] == 1 ? 1 : 0 ;
if ( $config [ 'proxy_pass' ] != '' ) {
2013-03-04 09:29:59 -04:00
$config [ 'proxy_pass' ] = G :: decrypt ( $config [ 'proxy_pass' ], 'proxy_pass' );
2012-11-12 14:44:44 -04:00
}
2013-03-04 09:29:59 -04:00
$md5 = array ();
2012-11-12 14:44:44 -04:00
if ( $readGlobalIniFile ) {
2013-03-04 09:29:59 -04:00
$md5 [] = md5_file ( $globalIniFile );
2012-11-12 14:44:44 -04:00
}
if ( $readWsIniFile ) {
2013-03-04 09:29:59 -04:00
$md5 [] = md5_file ( $wsIniFile );
2012-11-12 14:44:44 -04:00
}
2013-03-04 09:29:59 -04:00
$hash = implode ( '-' , $md5 );
2012-11-12 14:44:44 -04:00
$_SESSION [ 'PROCESSMAKER_ENV' ] = $config ;
$_SESSION [ 'PROCESSMAKER_ENV_HASH' ] = $hash ;
return $config ;
}
2012-12-14 16:42:57 -04:00
public static function registerSystemClasses ()
{
2013-03-04 09:29:59 -04:00
self :: registerClass ( " Propel " , PATH_THIRDPARTY . " propel " . PATH_SEP . " Propel.php " );
self :: registerClass ( " Creole " , PATH_THIRDPARTY . " creole " . PATH_SEP . " Creole.php " );
2013-01-25 17:13:52 -04:00
self :: registerClass ( " Criteria " , PATH_THIRDPARTY . " propel " . PATH_SEP . " util " . PATH_SEP . " Criteria.php " );
2012-12-14 16:42:57 -04:00
//DATABASE propel classes used in "Cases" Options
2013-03-04 09:29:59 -04:00
self :: registerClass ( " Entity_Base " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " entities " . PATH_SEP . " Base.php " );
self :: registerClass ( " BaseContent " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseContent.php " );
self :: registerClass ( " Content " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " Content.php " );
self :: registerClass ( " BaseContentPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseContentPeer.php " );
self :: registerClass ( " ContentPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " ContentPeer.php " );
self :: registerClass ( " BaseApplication " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseApplication.php " );
self :: registerClass ( " ApplicationPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " ApplicationPeer.php " );
self :: registerClass ( " Application " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " Application.php " );
self :: registerClass ( " BaseAppDelegation " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseAppDelegation.php " );
self :: registerClass ( " BaseHoliday " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseHoliday.php " );
self :: registerClass ( " BaseHolidayPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseHolidayPeer.php " );
self :: registerClass ( " BaseTask " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseTask.php " );
self :: registerClass ( " BaseTaskPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseTaskPeer.php " );
self :: registerClass ( " HolidayPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " HolidayPeer.php " );
self :: registerClass ( " Holiday " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " Holiday.php " );
self :: registerClass ( " Task " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " Task.php " );
self :: registerClass ( " TaskPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " TaskPeer.php " );
self :: registerClass ( " dates " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " class.dates.php " );
self :: registerClass ( " AppDelegation " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " AppDelegation.php " );
self :: registerClass ( " BaseAppDelegationPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseAppDelegationPeer.php " );
self :: registerClass ( " AppDelegationPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " AppDelegationPeer.php " );
self :: registerClass ( " BaseAppDelay " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseAppDelay.php " );
self :: registerClass ( " AppDelayPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " AppDelayPeer.php " );
self :: registerClass ( " AppDelay " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " AppDelay.php " );
self :: registerClass ( " BaseAdditionalTables " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseAdditionalTables.php " );
self :: registerClass ( " AdditionalTables " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " AdditionalTables.php " );
2013-01-07 14:33:01 -04:00
self :: registerClass ( " AdditionalTablesPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " AdditionalTablesPeer.php " );
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseAppCacheView " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseAppCacheView.php " );
self :: registerClass ( " AppCacheView " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " AppCacheView.php " );
self :: registerClass ( " BaseAppCacheViewPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseAppCacheViewPeer.php " );
self :: registerClass ( " AppCacheViewPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " AppCacheViewPeer.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseInputDocument " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseInputDocument.php " );
self :: registerClass ( " InputDocument " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " InputDocument.php " );
self :: registerClass ( " BaseAppDocument " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseAppDocument.php " );
self :: registerClass ( " AppDocument " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " AppDocument.php " );
self :: registerClass ( " AppDocumentPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " AppDocumentPeer.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseAppEvent " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseAppEvent.php " );
self :: registerClass ( " AppEvent " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " AppEvent.php " );
self :: registerClass ( " AppEventPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " AppEventPeer.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseAppHistory " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseAppHistory.php " );
self :: registerClass ( " AppHistory " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " AppHistory.php " );
self :: registerClass ( " AppHistoryPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " AppHistoryPeer.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseAppFolder " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseAppFolder.php " );
self :: registerClass ( " AppFolder " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " AppFolder.php " );
self :: registerClass ( " AppFolderPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " AppFolderPeer.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseAppMessage " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseAppMessage.php " );
self :: registerClass ( " AppMessage " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " AppMessage.php " );
2012-12-14 16:42:57 -04:00
self :: registerClass ( " BaseAppMessagePeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseAppMessagePeer.php " );
2013-03-04 09:29:59 -04:00
self :: registerClass ( " AppMessagePeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " AppMessagePeer.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseAppNotesPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseAppNotesPeer.php " );
self :: registerClass ( " AppNotesPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " AppNotesPeer.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseAppNotes " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseAppNotes.php " );
self :: registerClass ( " AppNotes " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " AppNotes.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseAppOwner " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseAppOwner.php " );
self :: registerClass ( " AppOwner " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " AppOwner.php " );
self :: registerClass ( " AppOwnerPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " AppOwnerPeer.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseAppSolrQueue " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseAppSolrQueue.php " );
self :: registerClass ( " Entity_SolrRequestData " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " entities " . PATH_SEP . " SolrRequestData.php " );
2013-01-25 17:13:52 -04:00
self :: registerClass ( " Entity_SolrUpdateDocument " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " entities " . PATH_SEP . " SolrUpdateDocument.php " );
2013-03-04 09:29:59 -04:00
self :: registerClass ( " Entity_AppSolrQueue " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " entities " . PATH_SEP . " AppSolrQueue.php " );
self :: registerClass ( " AppSolrQueue " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " AppSolrQueue.php " );
self :: registerClass ( " AppSolrQueuePeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " AppSolrQueuePeer.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseAppThread " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseAppThread.php " );
self :: registerClass ( " AppThread " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " AppThread.php " );
self :: registerClass ( " AppThreadPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " AppThreadPeer.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseCaseScheduler " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseCaseScheduler.php " );
self :: registerClass ( " CaseScheduler " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " CaseScheduler.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseCaseSchedulerPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseCaseSchedulerPeer.php " );
self :: registerClass ( " CaseSchedulerPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " CaseSchedulerPeer.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseCaseTracker " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseCaseTracker.php " );
self :: registerClass ( " CaseTracker " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " CaseTracker.php " );
2012-12-14 16:42:57 -04:00
self :: registerClass ( " BaseCaseTrackerPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseCaseTrackerPeer.php " );
2013-03-04 09:29:59 -04:00
self :: registerClass ( " CaseTrackerPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " CaseTrackerPeer.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseCaseTrackerObject " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseCaseTrackerObject.php " );
self :: registerClass ( " CaseTrackerObject " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " CaseTrackerObject.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseCaseTrackerObjectPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseCaseTrackerObjectPeer.php " );
self :: registerClass ( " CaseTrackerObjectPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " CaseTrackerObjectPeer.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseConfiguration " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseConfiguration.php " );
self :: registerClass ( " Configuration " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " Configuration.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseDbSource " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseDbSource.php " );
self :: registerClass ( " DbSource " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " DbSource.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " XMLDB " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " class.xmlDb.php " );
self :: registerClass ( " dynaFormHandler " , PATH_GULLIVER . " class.dynaformhandler.php " );
self :: registerClass ( " DynaFormField " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " class.dynaFormField.php " );
self :: registerClass ( " BaseDynaform " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseDynaform.php " );
self :: registerClass ( " Dynaform " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " Dynaform.php " );
self :: registerClass ( " DynaformPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " DynaformPeer.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseEvent " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseEvent.php " );
self :: registerClass ( " Event " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " Event.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseEventPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseEventPeer.php " );
self :: registerClass ( " EventPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " EventPeer.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseFields " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseFields.php " );
self :: registerClass ( " Fields " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " Fields.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseGateway " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseGateway.php " );
self :: registerClass ( " Gateway " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " Gateway.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseGroupUser " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseGroupUser.php " );
self :: registerClass ( " Groupwf " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " Groupwf.php " );
self :: registerClass ( " GroupUser " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " GroupUser.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseGroupUserPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseGroupUserPeer.php " );
self :: registerClass ( " GroupUserPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " GroupUserPeer.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseGroupwfPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseGroupwfPeer.php " );
self :: registerClass ( " GroupwfPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " GroupwfPeer.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseInputDocumentPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseInputDocumentPeer.php " );
self :: registerClass ( " InputDocumentPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " InputDocumentPeer.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseIsoCountry " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseIsoCountry.php " );
self :: registerClass ( " IsoCountry " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " IsoCountry.php " );
self :: registerClass ( " BaseTranslation " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseTranslation.php " );
self :: registerClass ( " Translation " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " Translation.php " );
self :: registerClass ( " BaseLanguage " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseLanguage.php " );
self :: registerClass ( " Language " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " Language.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseLogCasesScheduler " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseLogCasesScheduler.php " );
self :: registerClass ( " LogCasesScheduler " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " LogCasesScheduler.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseObjectPermission " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseObjectPermission.php " );
self :: registerClass ( " ObjectPermission " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " ObjectPermission.php " );
self :: registerClass ( " ObjectPermissionPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " ObjectPermissionPeer.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseOutputDocument " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseOutputDocument.php " );
self :: registerClass ( " OutputDocument " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " OutputDocument.php " );
self :: registerClass ( " OutputDocumentPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " OutputDocumentPeer.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseProcess " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseProcess.php " );
2012-12-14 16:42:57 -04:00
self :: registerClass ( " BaseProcessCategory " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseProcessCategory.php " );
2013-03-04 09:29:59 -04:00
self :: registerClass ( " ProcessCategory " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " ProcessCategory.php " );
2012-12-14 16:42:57 -04:00
self :: registerClass ( " ProcessCategoryPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " ProcessCategoryPeer.php " );
2013-03-04 09:29:59 -04:00
self :: registerClass ( " ProcessPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " ProcessPeer.php " );
self :: registerClass ( " Process " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " Process.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseProcessUser " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseProcessUser.php " );
self :: registerClass ( " ProcessUser " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " ProcessUser.php " );
2012-12-14 16:42:57 -04:00
self :: registerClass ( " BaseProcessUserPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseProcessUserPeer.php " );
2013-03-04 09:29:59 -04:00
self :: registerClass ( " ProcessUserPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " ProcessUserPeer.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseReportTable " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseReportTable.php " );
self :: registerClass ( " ReportTable " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " ReportTable.php " );
self :: registerClass ( " ReportTablePeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " ReportTablePeer.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseReportVar " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseReportVar.php " );
self :: registerClass ( " ReportVar " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " ReportVar.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseReportVarPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseReportVarPeer.php " );
self :: registerClass ( " ReportVarPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " ReportVarPeer.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseRoute " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseRoute.php " );
self :: registerClass ( " Route " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " Route.php " );
self :: registerClass ( " RoutePeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " RoutePeer.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseStep " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseStep.php " );
self :: registerClass ( " Step " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " Step.php " );
self :: registerClass ( " StepPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " StepPeer.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseStepSupervisor " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseStepSupervisor.php " );
self :: registerClass ( " StepSupervisor " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " StepSupervisor.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseStepSupervisorPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseStepSupervisorPeer.php " );
self :: registerClass ( " StepSupervisorPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " StepSupervisorPeer.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseStepTrigger " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseStepTrigger.php " );
self :: registerClass ( " StepTrigger " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " StepTrigger.php " );
self :: registerClass ( " StepTriggerPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " StepTriggerPeer.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseSwimlanesElements " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseSwimlanesElements.php " );
self :: registerClass ( " SwimlanesElements " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " SwimlanesElements.php " );
self :: registerClass ( " BaseSwimlanesElementsPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseSwimlanesElementsPeer.php " );
self :: registerClass ( " SwimlanesElementsPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " SwimlanesElementsPeer.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseSubApplication " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseSubApplication.php " );
self :: registerClass ( " SubApplication " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " SubApplication.php " );
self :: registerClass ( " SubApplicationPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " SubApplicationPeer.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseSubProcess " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseSubProcess.php " );
self :: registerClass ( " SubProcess " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " SubProcess.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseSubProcessPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseSubProcessPeer.php " );
self :: registerClass ( " SubProcessPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " SubProcessPeer.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseTask " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseTask.php " );
self :: registerClass ( " Task " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " Task.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseTaskUser " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseTaskUser.php " );
self :: registerClass ( " TaskUserPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " TaskUserPeer.php " );
self :: registerClass ( " TaskUser " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " TaskUser.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseTriggers " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseTriggers.php " );
self :: registerClass ( " Triggers " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " Triggers.php " );
self :: registerClass ( " BaseTriggersPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseTriggersPeer.php " );
self :: registerClass ( " TriggersPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " TriggersPeer.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " BaseUsers " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseUsers.php " );
self :: registerClass ( " IsoCountry " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " IsoCountry.php " );
self :: registerClass ( " BaseIsoSubdivision " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseIsoSubdivision.php " );
self :: registerClass ( " IsoSubdivision " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " IsoSubdivision.php " );
self :: registerClass ( " BaseIsoLocation " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " om " . PATH_SEP . " BaseIsoLocation.php " );
self :: registerClass ( " IsoLocation " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " IsoLocation.php " );
self :: registerClass ( " Users " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " Users.php " );
self :: registerClass ( " UsersPeer " , PATH_HOME . " engine " . PATH_SEP . " classes " . PATH_SEP . " model " . PATH_SEP . " UsersPeer.php " );
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
self :: registerClass ( " Xml_Node " , PATH_GULLIVER . " class.xmlDocument.php " );
2012-12-14 16:42:57 -04:00
}
2012-11-12 14:44:44 -04:00
//below this line, still not approved methods
2013-03-04 09:29:59 -04:00
/**
* mk_dir , copied from class . G . php
*
* @ return void
*/
public function mk_dir ( $strPath , $rights = 0777 )
{
$folder_path = array ( $strPath );
$oldumask = umask ( 0 );
while ( !@ is_dir ( dirname ( end ( $folder_path ))) && dirname ( end ( $folder_path )) != '/' && dirname ( end ( $folder_path )) != '.' && dirname ( end ( $folder_path )) != '' ) {
array_push ( $folder_path , dirname ( end ( $folder_path )));
// var_dump($folder_path);
// die;
}
while ( $parent_folder_path = array_pop ( $folder_path )) {
if ( !@ is_dir ( $parent_folder_path )) {
if ( !@ mkdir ( $parent_folder_path , $rights )) {
// trigger_error ("Can't create folder
// \"$parent_folder_path\".", E_USER_WARNING);
umask ( $oldumask );
}
}
}
}
/**
* verify if all files & directories passed by param .
* are writable
*
* @ author Erik Amaru Ortiz < erik @ colosa . com >
* @ param $resources array
* a list of files to verify write access
*/
public function verifyWriteAccess ( $resources )
{
$noWritable = array ();
foreach ( $resources as $i => $resource ) {
if ( ! is_writable ( $resource )) {
$noWritable [] = $resource ;
}
}
if ( count ( $noWritable ) > 0 ) {
$e = new Exception ( " Write access not allowed for ProcessMaker resources " );
$e -> files = $noWritable ;
throw $e ;
}
}
/**
* render a smarty template
*
* @ author Erik Amaru Ortiz < erik @ colosa . com >
* @ param $template string
* containing the template filename on / gulliver / templates /
* directory
* @ param $data associative
* array containig the template data
*/
2013-08-23 10:03:45 -04:00
public static function renderTemplate ( $template , $data = array ())
2013-03-04 09:29:59 -04:00
{
if ( ! defined ( 'PATH_THIRDPARTY' )) {
throw new Exception ( 'System constant (PATH_THIRDPARTY) is not defined!' );
}
require_once PATH_THIRDPARTY . 'smarty/libs/Smarty.class.php' ;
2013-08-23 10:03:45 -04:00
2013-03-04 09:29:59 -04:00
// file has absolute path
if ( substr ( $template , 0 , 1 ) != PATH_SEP ) {
$template = PATH_TEMPLATE . $template ;
}
2013-08-23 10:03:45 -04:00
if ( ! file_exists ( $template )) {
2013-03-04 09:29:59 -04:00
throw new Exception ( " Template: $template , doesn't exist! " );
}
$smarty = new Smarty ();
$smarty -> compile_dir = Bootstrap :: sys_get_temp_dir ();
$smarty -> cache_dir = Bootstrap :: sys_get_temp_dir ();
$smarty -> config_dir = PATH_THIRDPARTY . 'smarty/configs' ;
$smarty -> template_dir = PATH_TEMPLATE ;
$smarty -> force_compile = true ;
foreach ( $data as $key => $value ) {
$smarty -> assign ( $key , $value );
}
$smarty -> display ( $template );
}
/**
* Load Gulliver Classes
*
* @ author Fernando Ontiveros Lira < fernando @ colosa . com >
* @ access public
* @ param string $strClass
* @ return void
*/
public function LoadSystem ( $strClass )
{
require_once ( PATH_GULLIVER . 'class.' . $strClass . '.php' );
}
/**
* Get the temporal directory path on differents O . S .
* i . e . / temp -> linux , C :/ Temp -> win
*
* @ author < erik @ colosa . com >
*/
2013-08-23 10:03:45 -04:00
public static function sys_get_temp_dir ()
2013-03-04 09:29:59 -04:00
{
if ( ! function_exists ( 'sys_get_temp_dir' )) {
// Based on http://www.phpit.net/
// article/creating-zip-tar-archives-dynamically-php/2/
// Try to get from environment variable
if ( ! empty ( $_ENV [ 'TMP' ])) {
return realpath ( $_ENV [ 'TMP' ]);
} elseif ( ! empty ( $_ENV [ 'TMPDIR' ])) {
return realpath ( $_ENV [ 'TMPDIR' ]);
} elseif ( ! empty ( $_ENV [ 'TEMP' ])) {
return realpath ( $_ENV [ 'TEMP' ]);
} else {
// Detect by creating a temporary file
// Try to use system's temporary directory as random name
// shouldn't exist
$temp_file = tempnam ( md5 ( uniqid ( rand (), true )), '' );
if ( $temp_file ) {
$temp_dir = realpath ( dirname ( $temp_file ));
unlink ( $temp_file );
return $temp_dir ;
} else {
return false ;
}
}
} else {
return sys_get_temp_dir ();
}
}
/**
* Transform a public URL into a local path .
*
* @ author David S . Callizaya S . < davidsantos @ colosa . com >
* @ access public
* @ param string $url
* @ param string $corvertionTable
* @ param string $realPath
* = local path
* @ return boolean
*/
public function virtualURI ( $url , $convertionTable , & $realPath )
2012-12-13 13:55:02 -04:00
{
foreach ( $convertionTable as $urlPattern => $localPath ) {
// $urlPattern = addcslashes( $urlPattern , '/');
2013-03-04 09:29:59 -04:00
$urlPattern = addcslashes ( $urlPattern , './' );
$urlPattern = '/^' . str_replace ( array ( '*' , '?' ), array ( '.*' , '.?' ), $urlPattern ) . '$/' ;
if ( preg_match ( $urlPattern , $url , $match )) {
2012-12-13 13:55:02 -04:00
if ( $localPath === false ) {
$realPath = $url ;
return false ;
}
if ( $localPath != 'jsMethod' ) {
$realPath = $localPath . $match [ 1 ];
} else {
$realPath = $localPath ;
}
return true ;
}
}
$realPath = $url ;
return false ;
}
2012-11-08 18:40:37 -04:00
2013-03-04 09:29:59 -04:00
/**
* streaming a file
*
* @ author Fernando Ontiveros Lira < fernando @ colosa . com >
* @ access public
* @ param string $file
* @ param boolean $download
* @ param string $downloadFileName
* @ return string
*/
2013-06-18 13:00:23 -04:00
public function streamFile ( $file , $download = false , $downloadFileName = '' , $forceLoad = false )
2012-11-12 14:44:44 -04:00
{
2013-06-12 16:58:48 -04:00
$fileNameIni = $file ;
$browserCacheFilesUid = G :: browserCacheFilesGetUid ();
if ( $browserCacheFilesUid != null ) {
$file = str_replace ( " . $browserCacheFilesUid " , null , $file );
}
2013-03-04 09:29:59 -04:00
$folderarray = explode ( '/' , $file );
$typearray = explode ( '.' , basename ( $file ));
$typefile = $typearray [ count ( $typearray ) - 1 ];
$filename = $file ;
2012-11-12 14:44:44 -04:00
//trick to generate the translation.language.js file , merging two files
2013-03-04 09:29:59 -04:00
if ( strtolower ( $typefile ) == 'js' && $typearray [ 0 ] == 'translation' ) {
2013-06-12 16:58:48 -04:00
Bootstrap :: sendHeaders ( $fileNameIni , " text/javascript " , $download , $downloadFileName );
2013-05-02 12:51:36 -04:00
$output = Bootstrap :: streamJSTranslationFile ( $filename , $typearray [ count ( $typearray ) - 2 ]);
2013-04-25 12:42:30 -04:00
2012-11-27 13:44:02 -04:00
echo $output ;
2013-04-25 12:42:30 -04:00
2012-11-12 14:44:44 -04:00
return ;
}
2012-11-08 18:40:37 -04:00
2012-11-12 14:44:44 -04:00
//trick to generate the big css file for ext style .
2013-06-18 13:00:23 -04:00
if ( strtolower ( $typefile ) == 'css' && $folderarray [ count ( $folderarray ) - 2 ] == 'css' && ! $forceLoad ) {
2013-06-12 16:58:48 -04:00
Bootstrap :: sendHeaders ( $fileNameIni , " text/css " , $download , $downloadFileName );
2013-03-04 09:29:59 -04:00
$output = Bootstrap :: streamCSSBigFile ( $typearray [ 0 ]);
2012-11-27 13:44:02 -04:00
echo $output ;
2012-11-12 14:44:44 -04:00
return ;
}
2012-11-08 18:40:37 -04:00
2013-03-04 09:29:59 -04:00
if ( file_exists ( $filename )) {
switch ( strtolower ( $typefile )) {
2012-11-12 14:44:44 -04:00
case 'swf' :
2013-06-12 16:58:48 -04:00
Bootstrap :: sendHeaders ( $fileNameIni , " application/x-shockwave-flash " , $download , $downloadFileName );
2012-11-12 14:44:44 -04:00
break ;
case 'js' :
2013-06-12 16:58:48 -04:00
Bootstrap :: sendHeaders ( $fileNameIni , " text/javascript " , $download , $downloadFileName );
2012-11-12 14:44:44 -04:00
break ;
case 'htm' :
case 'html' :
2013-06-12 16:58:48 -04:00
Bootstrap :: sendHeaders ( $fileNameIni , " text/html " , $download , $downloadFileName );
2012-11-12 14:44:44 -04:00
break ;
case 'htc' :
2013-06-12 16:58:48 -04:00
Bootstrap :: sendHeaders ( $fileNameIni , " text/plain " , $download , $downloadFileName );
2012-11-12 14:44:44 -04:00
break ;
case 'json' :
2013-06-12 16:58:48 -04:00
Bootstrap :: sendHeaders ( $fileNameIni , " text/plain " , $download , $downloadFileName );
2012-11-12 14:44:44 -04:00
break ;
case 'gif' :
2013-06-12 16:58:48 -04:00
Bootstrap :: sendHeaders ( $fileNameIni , " image/gif " , $download , $downloadFileName );
2012-11-12 14:44:44 -04:00
break ;
case 'png' :
2013-06-12 16:58:48 -04:00
Bootstrap :: sendHeaders ( $fileNameIni , " image/png " , $download , $downloadFileName );
2012-11-12 14:44:44 -04:00
break ;
case 'jpg' :
2013-06-12 16:58:48 -04:00
Bootstrap :: sendHeaders ( $fileNameIni , " image/jpg " , $download , $downloadFileName );
2012-11-12 14:44:44 -04:00
break ;
case 'css' :
2013-06-12 16:58:48 -04:00
Bootstrap :: sendHeaders ( $fileNameIni , " text/css " , $download , $downloadFileName );
2012-11-12 14:44:44 -04:00
break ;
case 'xml' :
2013-06-12 16:58:48 -04:00
Bootstrap :: sendHeaders ( $fileNameIni , " text/xml " , $download , $downloadFileName );
2012-11-12 14:44:44 -04:00
break ;
case 'txt' :
2013-06-12 16:58:48 -04:00
Bootstrap :: sendHeaders ( $fileNameIni , " text/html " , $download , $downloadFileName );
2012-11-12 14:44:44 -04:00
break ;
case 'doc' :
case 'pdf' :
case 'pm' :
case 'po' :
2013-06-12 16:58:48 -04:00
Bootstrap :: sendHeaders ( $fileNameIni , " application/octet-stream " , $download , $downloadFileName );
2012-11-12 14:44:44 -04:00
break ;
case 'php' :
if ( $download ) {
2013-06-12 16:58:48 -04:00
Bootstrap :: sendHeaders ( $fileNameIni , " text/plain " , $download , $downloadFileName );
2012-11-12 14:44:44 -04:00
} else {
require_once ( $filename );
return ;
}
break ;
case 'tar' :
2013-06-12 16:58:48 -04:00
Bootstrap :: sendHeaders ( $fileNameIni , " application/x-tar " , $download , $downloadFileName );
2012-11-12 14:44:44 -04:00
break ;
default :
//throw new Exception ( "Unknown type of file '$file'. " );
2013-06-12 16:58:48 -04:00
Bootstrap :: sendHeaders ( $fileNameIni , " application/octet-stream " , $download , $downloadFileName );
2012-11-12 14:44:44 -04:00
break ;
}
} else {
2013-03-04 09:29:59 -04:00
if ( strpos ( $file , 'gulliver' ) !== false ) {
list ( $path , $filename ) = explode ( 'gulliver' , $file );
2012-11-12 14:44:44 -04:00
}
2012-11-08 18:40:37 -04:00
2012-11-12 14:44:44 -04:00
$_SESSION [ 'phpFileNotFound' ] = $file ;
2013-03-04 09:29:59 -04:00
Bootstrap :: header ( " location: /errors/error404.php?l= " . $_SERVER [ 'REQUEST_URI' ]);
2012-11-12 14:44:44 -04:00
}
2012-11-08 18:40:37 -04:00
2013-03-04 09:29:59 -04:00
if ( substr ( $filename , - 10 ) == " ext-all.js " ) {
2012-11-12 14:44:44 -04:00
$filename = PATH_GULLIVER_HOME . 'js/ext/min/ext-all.js' ;
}
2013-06-12 16:58:48 -04:00
2013-03-04 09:29:59 -04:00
@ readfile ( $filename );
}
/**
* Parsing the URI
*
* @ author Fernando Ontiveros Lira < fernando @ colosa . com >
* @ access public
* @ param string $urlLink
* @ return string
*/
static public function parseURI ( $uri , $isRestRequest = false )
{
// *** process the $_POST with magic_quotes enabled
// The magic_quotes_gpc feature has been DEPRECATED as of PHP 5.3.0.
if ( get_magic_quotes_gpc () === 1 ) {
$_POST = g :: strip_slashes ( $_POST );
}
$aRequestUri = explode ( '/' , $uri );
if ( $isRestRequest ) {
$args = self :: parseRestUri ( $aRequestUri );
} else {
$args = self :: parseNormalUri ( $aRequestUri );
}
define ( " SYS_LANG " , $args [ 'SYS_LANG' ]);
2012-12-14 11:43:43 -04:00
define ( 'SYS_SKIN' , $args [ 'SYS_SKIN' ]);
2013-03-04 09:29:59 -04:00
define ( 'SYS_COLLECTION' , $args [ 'SYS_COLLECTION' ]);
define ( 'SYS_TARGET' , $args [ 'SYS_TARGET' ]);
if ( $args [ 'SYS_COLLECTION' ] == 'js2' ) {
print " ERROR " ;
die ();
}
}
/**
* isPMUnderUpdating , Used to set a file flag to check if PM is upgrading .
*
* @ setFlag Contains the flag to set or unset the temporary file :
* 0 to delete the temporary file flag
* 1 to set the temporary file flag .
* 2 or bigger to check if the temporary file exists .
* return true if the file exists , otherwise false .
*/
public function isPMUnderUpdating ( $setFlag = 2 )
{
2012-12-13 13:55:02 -04:00
if ( ! defined ( 'PATH_DATA' )) {
2013-03-04 09:29:59 -04:00
return false ;
}
2012-11-08 18:40:37 -04:00
2013-03-04 09:29:59 -04:00
$fileCheck = PATH_DATA . " UPDATE.dat " ;
if ( $setFlag == 0 ) {
if ( file_exists ( $fileCheck )) {
unlink ( $fileCheck );
}
} elseif ( $setFlag == 1 ) {
$fp = fopen ( $fileCheck , 'w' );
$line = fputs ( $fp , " true " );
2012-12-03 12:48:05 -04:00
}
2013-03-04 09:29:59 -04:00
// checking temporary file
if ( $setFlag >= 1 ) {
if ( file_exists ( $fileCheck )) {
return true ;
}
}
return false ;
}
/**
* parse a smarty template and return teh result as string
*
* @ author Erik Amaru Ortiz < erik @ colosa . com >
* @ param $template string
* containing the template filename on / gulliver / templates /
* directory
* @ param $data associative
* array containig the template data
* @ return $content string containing the parsed template content
*/
public function parseTemplate ( $template , $data = array ())
{
$content = '' ;
ob_start ();
g :: renderTemplate ( $template , $data );
$content = ob_get_contents ();
ob_get_clean ();
return $content ;
}
/**
* If the class is not defined by the aplication , it
* attempt to load the class from gulliver . system
*
* @ author Fernando Ontiveros Lira < fernando @ colosa . com > , David S . Callizaya
* @ access public
* @ param string $strClass
* @ return void
*/
public function LoadClass ( $strClass )
{
$classfile = Bootstrap :: ExpandPath ( " classes " ) . 'class.' . $strClass . '.php' ;
if ( ! file_exists ( $classfile )) {
if ( file_exists ( PATH_GULLIVER . 'class.' . $strClass . '.php' )) {
return require_once ( PATH_GULLIVER . 'class.' . $strClass . '.php' );
} else {
return false ;
}
} else {
return require_once ( $classfile );
}
}
/**
* Loads a Class .
* If the class is not defined by the aplication , it
* attempt to load the class from gulliver . system
*
* @ author Fernando Ontiveros Lira < fernando @ colosa . com > , David S . Callizaya
* @ access public
* @ param string $strClass
* @ return void
*/
public function LoadThirdParty ( $sPath , $sFile )
{
$classfile = PATH_THIRDPARTY . $sPath . '/' . $sFile . (( substr ( $sFile , 0 , - 4 ) !== '.php' ) ? '.php' : '' );
return require_once ( $classfile );
}
/**
* Function LoadTranslationObject
* It generates a global Translation variable that will be used in all the
* system .
* Per script
*
* @ author Hugo Loza . < hugo @ colosa . com >
* @ access public
* @ param string lang
* @ return void
*/
public function LoadTranslationObject ( $lang = SYS_LANG )
{
$defaultTranslations = Array ();
$foreignTranslations = Array ();
// if the default translations table doesn't exist we can't proceed
if ( ! is_file ( PATH_LANGUAGECONT . 'translation.en' )) {
return null ;
}
// load the translations table
2012-12-03 12:48:05 -04:00
require_once ( PATH_LANGUAGECONT . 'translation.en' );
$defaultTranslations = $translation ;
2013-03-04 09:29:59 -04:00
// if some foreign language was requested and its translation file
// exists
if ( $lang != 'en' && file_exists ( PATH_LANGUAGECONT . 'translation.' . $lang )) {
require_once ( PATH_LANGUAGECONT . 'translation.' . $lang ); // load the foreign translations table
2012-12-03 12:48:05 -04:00
$foreignTranslations = $translation ;
}
2012-11-08 18:40:37 -04:00
2013-03-04 09:29:59 -04:00
global $translation ;
if ( defined ( " SHOW_UNTRANSLATED_AS_TAG " ) && SHOW_UNTRANSLATED_AS_TAG != 0 ) {
2012-12-03 12:48:05 -04:00
$translation = $foreignTranslations ;
} else {
2013-03-04 09:29:59 -04:00
$translation = array_merge ( $defaultTranslations , $foreignTranslations );
2012-12-03 12:48:05 -04:00
}
2013-03-04 09:29:59 -04:00
return true ;
}
2012-11-08 18:40:37 -04:00
2013-03-13 11:15:43 -04:00
/**
* Function LoadTranslationPlugins
* It generates a global Translation variable for plugins
*
* Per script
*
* @ author Brayan Pereyra < cochalo >. < brayan @ colosa . com >
* @ access public
* @ param string lang
* @ param array list plugins active
* @ return void
*/
public function LoadTranslationPlugins ( $lang = SYS_LANG , $listPluginsActive )
{
if ( ! ( is_array ( $listPluginsActive ) ) ) {
return null ;
}
foreach ( $listPluginsActive [ '_aPluginDetails' ] as $key => $value ) {
$namePlugin = trim ( $key );
$translation = array ();
2013-04-25 12:42:30 -04:00
2013-03-15 16:14:55 -04:00
if ( ! file_exists ( PATH_LANGUAGECONT . $namePlugin . '.en' )) {
Translation :: generateFileTranslationPlugin ( $namePlugin , 'en' );
}
2013-04-25 12:42:30 -04:00
2013-03-15 16:14:55 -04:00
if ( ( $lang != 'en' ) && ( ! file_exists ( PATH_LANGUAGECONT . $namePlugin . '.' . $lang )) ) {
Translation :: generateFileTranslationPlugin ( $namePlugin , $lang );
}
2013-03-13 11:15:43 -04:00
if ( file_exists ( PATH_LANGUAGECONT . $namePlugin . '.' . $lang )) {
eval ( 'global $translation' . $namePlugin . ';' );
2013-03-14 15:22:39 -04:00
require_once ( PATH_LANGUAGECONT . $namePlugin . '.' . $lang );
2013-03-15 16:14:55 -04:00
} else {
if ( file_exists ( PATH_LANGUAGECONT . $namePlugin . '.en' )) {
eval ( 'global $translation' . $namePlugin . ';' );
require_once ( PATH_LANGUAGECONT . $namePlugin . '.en' );
}
2013-03-13 11:15:43 -04:00
}
}
return true ;
}
2013-03-04 09:29:59 -04:00
/**
* Render Page
*
* @ author Fernando Ontiveros Lira < fernando @ colosa . com >
* @ access public
* @ param object $objContent
* @ param string $strTemplate
* @ param string $strSkin
* @ return void
*/
public function RenderPage ( $strTemplate = " default " , $strSkin = SYS_SKIN , $objContent = null , $layout = '' )
{
global $G_CONTENT ;
global $G_TEMPLATE ;
global $G_SKIN ;
global $G_PUBLISH ;
$G_CONTENT = $objContent ;
$G_TEMPLATE = $strTemplate ;
$G_SKIN = $strSkin ;
try {
$file = Bootstrap :: ExpandPath ( 'skinEngine' ) . 'skinEngine.php' ;
include $file ;
$skinEngine = new SkinEngine ( $G_TEMPLATE , $G_SKIN , $G_CONTENT );
$skinEngine -> setLayout ( $layout );
$skinEngine -> dispatch ();
} catch ( Exception $e ) {
global $G_PUBLISH ;
if ( is_null ( $G_PUBLISH )) {
$G_PUBLISH = new Publisher ();
}
if ( count ( $G_PUBLISH -> Parts ) == 1 ) {
array_shift ( $G_PUBLISH -> Parts );
}
global $oHeadPublisher ;
$leimnudInitString = $oHeadPublisher -> leimnudInitString ;
$oHeadPublisher -> clearScripts ();
$oHeadPublisher -> leimnudInitString = $leimnudInitString ;
$oHeadPublisher -> addScriptFile ( '/js/maborak/core/maborak.js' );
$G_PUBLISH -> AddContent ( 'xmlform' , 'xmlform' , 'login/showMessage' , null , array (
'MESSAGE' => $e -> getMessage ()
));
if ( class_exists ( 'SkinEngine' )) {
$skinEngine = new SkinEngine ( 'publish' , 'blank' , '' );
$skinEngine -> dispatch ();
} else {
die ( $e -> getMessage ());
}
2012-12-03 12:48:05 -04:00
}
2013-03-04 09:29:59 -04:00
}
2012-11-09 13:59:06 -04:00
2013-03-04 09:29:59 -04:00
/**
* SendTemporalMessage
*
* @ param string $msgID
* @ param string $strType
* @ param string $sType
* default value 'LABEL'
* @ param date $time
* default value null
* @ param integer $width
* default value null
* @ param string $customLabels
* default value null
*
* @ return void
*/
public function SendTemporalMessage ( $msgID , $strType , $sType = 'LABEL' , $time = null , $width = null , $customLabels = null )
{
if ( isset ( $width )) {
$_SESSION [ 'G_MESSAGE_WIDTH' ] = $width ;
}
if ( isset ( $time )) {
$_SESSION [ 'G_MESSAGE_TIME' ] = $time ;
}
switch ( strtolower ( $sType )) {
case 'label' :
case 'labels' :
$_SESSION [ 'G_MESSAGE_TYPE' ] = $strType ;
$_SESSION [ 'G_MESSAGE' ] = nl2br ( Bootstrap :: LoadTranslation ( $msgID ));
break ;
case 'string' :
$_SESSION [ 'G_MESSAGE_TYPE' ] = $strType ;
$_SESSION [ 'G_MESSAGE' ] = nl2br ( $msgID );
break ;
}
if ( $customLabels != null ) {
$message = $_SESSION [ 'G_MESSAGE' ];
foreach ( $customLabels as $key => $val ) {
$message = str_replace ( '{' . nl2br ( $key ) . '}' , nl2br ( $val ), $message );
}
$_SESSION [ 'G_MESSAGE' ] = $message ;
}
}
2012-11-09 13:59:06 -04:00
2013-03-04 09:29:59 -04:00
/**
* Redirect URL
*
* @ author Fernando Ontiveros Lira < fernando @ colosa . com >
* @ access public
* @ param string $parameter
* @ return string
*/
public function header ( $parameter )
{
if ( defined ( 'ENABLE_ENCRYPT' ) && ( ENABLE_ENCRYPT == 'yes' ) && ( substr ( $parameter , 0 , 9 ) == 'location:' )) {
$url = Bootstrap :: encrypt ( substr ( $parameter , 10 ), URL_KEY );
header ( 'location:' . $url );
} else {
header ( $parameter );
}
return ;
}
2012-11-09 13:59:06 -04:00
2013-03-04 09:29:59 -04:00
/**
* Include all model plugin files
*
* LoadAllPluginModelClasses
*
* @ author Hugo Loza < hugo @ colosa . com >
* @ access public
* @ return void
*/
public function LoadAllPluginModelClasses ()
{
// Get the current Include path, where the plugins directories should be
if ( ! defined ( 'PATH_SEPARATOR' )) {
define ( 'PATH_SEPARATOR' , ( substr ( PHP_OS , 0 , 3 ) == 'WIN' ) ? ';' : ':' );
}
$path = explode ( PATH_SEPARATOR , get_include_path ());
foreach ( $path as $possiblePath ) {
if ( strstr ( $possiblePath , " plugins " )) {
$baseDir = $possiblePath . 'classes' . PATH_SEP . 'model' ;
if ( file_exists ( $baseDir )) {
if ( $handle = opendir ( $baseDir )) {
while ( false !== ( $file = readdir ( $handle ))) {
if ( strpos ( $file , '.php' , 1 ) && ! strpos ( $file , 'Peer.php' , 1 )) {
require_once ( $baseDir . PATH_SEP . $file );
2012-11-09 13:59:06 -04:00
}
}
2013-03-04 09:29:59 -04:00
}
// Include also the extendGulliverClass that could have some
// new definitions for fields
if ( file_exists ( $possiblePath . 'classes' . PATH_SEP . 'class.extendGulliver.php' )) {
include_once $possiblePath . 'classes' . PATH_SEP . 'class.extendGulliver.php' ;
}
}
2012-11-09 13:59:06 -04:00
}
2012-11-12 14:44:44 -04:00
}
2013-03-04 09:29:59 -04:00
}
2012-11-12 14:44:44 -04:00
2013-03-04 09:29:59 -04:00
/**
* Expand the path using the path constants
*
* @ author Fernando Ontiveros Lira < fernando @ colosa . com >
* @ access public
* @ param string $strPath
* @ return string
*/
public function expandPath ( $strPath = '' )
{
$res = " " ;
$res = PATH_CORE ;
if ( $strPath != " " ) {
$res .= $strPath . " / " ;
2012-11-09 13:59:06 -04:00
}
2013-03-04 09:29:59 -04:00
return $res ;
}
2013-09-11 10:12:44 -04:00
2013-03-04 09:29:59 -04:00
/**
2013-08-30 11:31:59 -04:00
* This method dispatch rest / api service
2013-03-04 09:29:59 -04:00
*
2013-08-30 11:31:59 -04:00
* @ author Erik Amaru Ortiz < erik @ colosa . com >
* @ param $uri
* @ param $config
* @ param string $apiClassesPath
* @ internal param string $url Contains the url request
2013-03-04 09:29:59 -04:00
*/
2013-08-22 11:10:04 -04:00
public function dispatchApiService ( $uri , $config , $apiClassesPath = '' )
2013-01-03 12:55:15 -04:00
{
2013-08-22 11:10:04 -04:00
$dataUri = explode ( '/' , $uri );
array_shift ( $dataUri );
$reqClass = ucfirst ( array_shift ( $dataUri ));
2013-08-30 11:31:59 -04:00
2013-08-22 11:10:04 -04:00
$servicesDir = PATH_CORE . 'services' . PATH_SEP ;
$apiDir = $servicesDir . 'api' . PATH_SEP ;
2013-08-30 11:31:59 -04:00
$classDir = $apiDir . 'processmaker' . PATH_SEP ;
2013-08-22 11:10:04 -04:00
2013-09-04 16:11:33 -04:00
require_once PATH_CORE . " classes " . PATH_SEP . " class.api.php " ;
\ProcessMaker\Api :: setWorkspace ( SYS_SYS );
2013-09-11 10:12:44 -04:00
//var_dump($apiDir . 'oauth2/views'); die;
Luracast\Restler\Format\HtmlFormat :: $viewPath = $servicesDir . 'oauth2/views' ;
require_once $servicesDir . 'oauth2/Server.php' ;
2013-09-04 16:11:33 -04:00
2013-08-30 11:31:59 -04:00
$rest = new Luracast\Restler\Restler ();
$rest -> setAPIVersion ( '1.0' );
2013-09-11 10:12:44 -04:00
$rest -> addAuthenticationClass ( 'Api\\OAuth2\\Server' , '' );
$rest -> setSupportedFormats ( 'JsonFormat' , 'XmlFormat' ); //, 'HtmlFormat');
2013-08-30 11:31:59 -04:00
//$rest->setOverridingFormats('UploadFormat', 'JsonFormat', 'XmlFormat', 'HtmlFormat');
2013-09-11 10:12:44 -04:00
$rest -> setOverridingFormats ( 'HtmlFormat' );
2013-08-30 11:31:59 -04:00
$_SERVER [ 'REQUEST_URI' ] = $uri ;
$classFile = $classDir . 'Services_Api_ProcessMaker_' . $reqClass . '.php' ;
$classFile2 = $classDir . DIRECTORY_SEPARATOR . $reqClass . '.php' ;
2013-08-22 11:10:04 -04:00
2013-08-22 12:59:58 -04:00
if ( file_exists ( $classFile )) {
require_once $classFile ;
2013-08-30 11:31:59 -04:00
$rest -> addAPIClass ( 'Services_Api_ProcessMaker_' . $reqClass );
} elseif ( file_exists ( $classFile2 )) {
require_once $classFile2 ;
$rest -> addAPIClass ( " \\ Services \\ Api \\ Processmaker \\ " . $reqClass );
2013-08-22 12:59:58 -04:00
} else {
$rest -> handleError ( 500 );
}
2013-08-22 11:10:04 -04:00
2013-08-30 11:31:59 -04:00
$rest -> handle ();
2013-08-22 11:10:04 -04:00
2013-08-30 11:31:59 -04:00
die ;
2013-08-22 11:10:04 -04:00
2013-08-30 11:31:59 -04:00
///
// OLD CODE FROM HERE, we can get some interisting things there on the future
//
2013-03-04 09:29:59 -04:00
$rest -> setSupportedFormats ( 'JsonFormat' , 'XmlFormat' );
// getting all services class
$restClasses = array ();
$restClassesList = Bootstrap :: rglob ( '*' , 0 , PATH_CORE . 'services/' );
foreach ( $restClassesList as $classFile ) {
if ( substr ( $classFile , - 4 ) === '.php' ) {
$restClasses [ str_replace ( '.php' , '' , basename ( $classFile ))] = $classFile ;
}
}
if ( ! empty ( $apiClassesPath )) {
$pluginRestClasses = array ();
$restClassesList = Bootstrap :: rglob ( '*' , 0 , $apiClassesPath . 'services/' );
foreach ( $restClassesList as $classFile ) {
if ( substr ( $classFile , - 4 ) === '.php' ) {
$pluginRestClasses [ str_replace ( '.php' , '' , basename ( $classFile ))] = $classFile ;
}
}
$restClasses = array_merge ( $restClasses , $pluginRestClasses );
}
// hook to get rest api classes from plugins
if ( class_exists ( 'PMPluginRegistry' )) {
$pluginRegistry = & PMPluginRegistry :: getSingleton ();
$pluginClasses = $pluginRegistry -> getRegisteredRestClassFiles ();
$restClasses = array_merge ( $restClasses , $pluginClasses );
}
foreach ( $restClasses as $key => $classFile ) {
if ( ! file_exists ( $classFile )) {
unset ( $restClasses [ $key ]);
continue ;
}
//load the file, and check if exist the class inside it.
require_once $classFile ;
$namespace = 'Services_Rest_' ;
$className = str_replace ( '.php' , '' , basename ( $classFile ));
// if the core class does not exists try resolve the for a plugin
if ( ! class_exists ( $namespace . $className )) {
$namespace = 'Plugin_Services_Rest_' ;
// Couldn't resolve the class name, just skipp it
if ( ! class_exists ( $namespace . $className )) {
unset ( $restClasses [ $key ]);
continue ;
}
}
// verify if there is an auth class implementing 'iAuthenticate'
$classNameAuth = $namespace . $className ;
$reflClass = new ReflectionClass ( $classNameAuth );
// that wasn't from plugin
if ( $reflClass -> implementsInterface ( 'iAuthenticate' ) && $namespace != 'Plugin_Services_Rest_' ) {
// auth class found, set as restler authentication class handler
$rest -> addAuthenticationClass ( $classNameAuth );
} else {
// add api class
$rest -> addAPIClass ( $classNameAuth );
}
}
//end foreach rest class
// resolving the class for current request
$uriPart = explode ( '/' , $uri );
$requestedClass = '' ;
if ( isset ( $uriPart [ 1 ])) {
$requestedClass = ucfirst ( $uriPart [ 1 ]);
}
if ( class_exists ( 'Services_Rest_' . $requestedClass )) {
$namespace = 'Services_Rest_' ;
} elseif ( class_exists ( 'Plugin_Services_Rest_' . $requestedClass )) {
$namespace = 'Plugin_Services_Rest_' ;
} else {
$namespace = '' ;
}
// end resolv.
// Send additional headers (if exists) configured on rest-config.ini
if ( array_key_exists ( 'HEADERS' , $config )) {
foreach ( $config [ 'HEADERS' ] as $name => $value ) {
header ( " $name : $value " );
}
}
// to handle a request with "OPTIONS" method
if ( ! empty ( $namespace ) && $_SERVER [ 'REQUEST_METHOD' ] === 'OPTIONS' ) {
$reflClass = new ReflectionClass ( $namespace . $requestedClass );
// if the rest class has not a "options" method
if ( ! $reflClass -> hasMethod ( 'options' )) {
header ( 'Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS, HEADERS' );
header ( 'Access-Control-Allow-Headers: authorization, content-type' );
header ( " Access-Control-Allow-Credentials " , " false " );
header ( 'Access-Control-Max-Age: 60' );
exit ();
}
}
// override global REQUEST_URI to pass to Restler library
$_SERVER [ 'REQUEST_URI' ] = '/' . strtolower ( $namespace ) . ltrim ( $uri , '/' );
// handle the rest request
$rest -> handle ();
2013-01-03 12:55:15 -04:00
}
2013-03-04 09:29:59 -04:00
2013-01-03 12:55:15 -04:00
/**
2013-03-04 09:29:59 -04:00
* function to calculate the time used to render a page
*/
public function logTimeByPage ()
2013-01-03 12:55:15 -04:00
{
2013-03-04 09:29:59 -04:00
if ( ! defined ( PATH_DATA )) {
return false ;
}
$serverAddr = $_SERVER [ 'SERVER_ADDR' ];
global $startingTime ;
$endTime = microtime ( true );
$time = $endTime - $startingTime ;
$fpt = fopen ( PATH_DATA . 'log/time.log' , 'a' );
fwrite ( $fpt , sprintf ( " %s.%03d %15s %s %5.3f %s \n " , date ( 'Y-m-d H:i:s' ), $time , getenv ( 'REMOTE_ADDR' ), substr ( $serverAddr , - 4 ), $time , $_SERVER [ 'REQUEST_URI' ]));
fclose ( $fpt );
2013-01-03 12:55:15 -04:00
}
2013-03-04 09:29:59 -04:00
2013-01-03 12:55:15 -04:00
/**
2013-03-04 09:29:59 -04:00
* streaming a big JS file with small js files
*
* @ author Fernando Ontiveros Lira < fernando @ colosa . com >
* @ access public
* @ param string $file
* @ param boolean $download
* @ param string $downloadFileName
* @ return string
*/
public function streamJSTranslationFile ( $filename , $locale = 'en' )
2013-01-03 12:55:15 -04:00
{
2013-03-14 15:22:39 -04:00
$typearray = explode ( '.' , basename ( $filename ));
$typeCount = count ( $typearray );
$typeName = ( $typeCount > 3 ) ? $typearray [ 1 ] : $typearray [ 0 ];
$typeName = trim ( $typeName );
$fileConst = ( $typeName == 'translation' ) ? 'translation.' . $locale : 'translation.' . $typeName . '.' . $locale ;
if ( $typeName == 'translation' ) {
$defaultTranslations = Array ();
$foreignTranslations = Array ();
$calendarJs = '' ;
//load the translations table
if ( is_file ( PATH_LANGUAGECONT . 'translation.en' )) {
require_once ( PATH_LANGUAGECONT . 'translation.en' );
$defaultTranslations = $translation ;
}
2013-03-04 09:29:59 -04:00
2013-03-14 15:22:39 -04:00
//if some foreign language was requested and its translation file exists
if ( $locale != 'en' && file_exists ( PATH_LANGUAGECONT . 'translation.' . $locale )) {
require_once ( PATH_LANGUAGECONT . 'translation.' . $locale ); //load the foreign translations table
$foreignTranslations = $translation ;
}
2013-03-04 09:29:59 -04:00
2013-03-14 15:22:39 -04:00
if ( defined ( " SHOW_UNTRANSLATED_AS_TAG " ) && SHOW_UNTRANSLATED_AS_TAG != 0 ) {
$translation = $foreignTranslations ;
} else {
$translation = array_merge ( $defaultTranslations , $foreignTranslations );
}
2013-03-04 09:29:59 -04:00
2013-03-14 15:22:39 -04:00
$calendarJsFile = PATH_GULLIVER_HOME . " js/widgets/js-calendar/lang/ " . $locale . " .js " ;
if ( ! file_exists ( $calendarJsFile )) {
$calendarJsFile = PATH_GULLIVER_HOME . " js/widgets/js-calendar/lang/en.js " ;
}
$calendarJs = file_get_contents ( $calendarJsFile ) . " \n " ;
2013-03-04 09:29:59 -04:00
2013-03-14 15:22:39 -04:00
return $calendarJs . 'var TRANSLATIONS = ' . Bootstrap :: json_encode ( $translation ) . ';' ;
} else {
unset ( $typearray [ 0 ]);
unset ( $typearray [ count ( $typearray )]);
$newName = implode ( '.' , $typearray );
if ( file_exists ( PATH_LANGUAGECONT . $newName )) {
require_once ( PATH_LANGUAGECONT . $newName );
$return = '' ;
eval ( '$return = "var TRANSLATIONS_" . strtoupper($typeName) . " = " . Bootstrap::json_encode($translation' . $typeName . ') . ";";' );
return $return ;
}
return ;
2013-03-04 09:29:59 -04:00
}
2013-01-03 12:55:15 -04:00
}
2012-12-14 16:42:57 -04:00
2013-03-04 09:29:59 -04:00
/**
* streaming a big JS file with small js files
*
* @ author Fernando Ontiveros Lira < fernando @ colosa . com >
* @ access public
* @ param string $file
* @ return string
*/
public function streamCSSBigFile ( $filename )
{
header ( 'Content-Type: text/css' );
//First get Skin info
$filenameParts = explode ( " - " , $filename );
$skinName = $filenameParts [ 0 ];
$skinVariant = " skin " ;
if ( isset ( $filenameParts [ 1 ])) {
$skinVariant = strtolower ( $filenameParts [ 1 ]);
}
$configurationFile = '' ;
if ( $skinName == " jscolors " ) {
$skinName = " classic " ;
}
if ( $skinName == " xmlcolors " ) {
$skinName = " classic " ;
}
if ( $skinName == " classic " ) {
$configurationFile = Bootstrap :: ExpandPath ( " skinEngine " ) . 'base' . PATH_SEP . 'config.xml' ;
} else {
$configurationFile = PATH_CUSTOM_SKINS . $skinName . PATH_SEP . 'config.xml' ;
if ( ! is_file ( $configurationFile )) {
$configurationFile = Bootstrap :: ExpandPath ( " skinEngine " ) . $skinName . PATH_SEP . 'config.xml' ;
}
}
$mtime = date ( 'U' );
$gmt_mtime = gmdate ( " D, d M Y H:i:s " , $mtime ) . " GMT " ;
header ( 'Pragma: cache' );
header ( 'ETag: "' . md5 ( $mtime . $filename ) . '"' );
header ( " Last-Modified: " . $gmt_mtime );
header ( 'Cache-Control: public' );
header ( " Expires: " . gmdate ( " D, d M Y H:i:s " , time () + 30 * 60 * 60 * 24 ) . " GMT " ); //1 month
//header("Expires: " . gmdate("D, d M Y H:i:s", time () + 60*60*24 ) . " GMT"); //1 day - tempor
if ( isset ( $_SERVER [ 'HTTP_IF_MODIFIED_SINCE' ])) {
if ( $_SERVER [ 'HTTP_IF_MODIFIED_SINCE' ] == $gmt_mtime ) {
header ( 'HTTP/1.1 304 Not Modified' );
exit ();
}
}
if ( isset ( $_SERVER [ 'HTTP_IF_NONE_MATCH' ])) {
if ( str_replace ( '"' , '' , stripslashes ( $_SERVER [ 'HTTP_IF_NONE_MATCH' ])) == md5 ( $mtime . $filename )) {
header ( " HTTP/1.1 304 Not Modified " );
exit ();
}
}
//Read Configuration File
$xmlConfiguration = file_get_contents ( $configurationFile );
$xmlConfigurationObj = Bootstrap :: xmlParser ( $xmlConfiguration );
$baseSkinDirectory = dirname ( $configurationFile );
$directorySize = Bootstrap :: getDirectorySize ( $baseSkinDirectory );
$mtime = $directorySize [ 'maxmtime' ];
//if userAgent (BROWSER) is MSIE we need special headers to avoid MSIE behaivor.
//$userAgent = strtolower($_SERVER['HTTP_USER_AGENT']);
$outputHeader = " /* Autogenerated CSS file by gulliver framework \n " ;
$outputHeader .= " Skin: $filename\n " ;
$outputHeader .= " Configuration: $configurationFile\n " ;
$mtimeNow = date ( 'U' );
$gmt_mtimeNow = gmdate ( " D, d M Y H:i:s " , $mtimeNow ) . " GMT " ;
$outputHeader .= " Date: $gmt_mtimeNow */ \n " ;
$output = " " ;
//Base files
switch ( strtolower ( $skinVariant )) {
case " extjs " :
//Base
$baseCSSPath = PATH_SKIN_ENGINE . " base " . PATH_SEP . " baseCss " . PATH_SEP ;
$output .= file_get_contents ( $baseCSSPath . 'ext-all-notheme.css' );
//$output .= file_get_contents ( $publicExtPath . 'ext-all.css' );
//Classic Skin
$extJsSkin = 'xtheme-gray' ;
break ;
default :
break ;
}
//Get Browser Info
$infoBrowser = Bootstrap :: get_current_browser ();
$browserName = $infoBrowser [ 'browser_working' ];
if ( isset ( $infoBrowser [ $browserName . '_data' ])) {
if ( $infoBrowser [ $browserName . '_data' ][ 0 ] != " " ) {
$browserName = $infoBrowser [ $browserName . '_data' ][ 0 ];
}
}
//Read Configuration File
$xmlConfiguration = file_get_contents ( $configurationFile );
$xmlConfigurationObj = Bootstrap :: xmlParser ( $xmlConfiguration );
$skinFilesArray = $xmlConfigurationObj -> result [ 'skinConfiguration' ][ '__CONTENT__' ][ 'cssFiles' ][ '__CONTENT__' ][ $skinVariant ][ '__CONTENT__' ][ 'cssFile' ];
foreach ( $skinFilesArray as $keyFile => $cssFileInfo ) {
$enabledBrowsers = explode ( " , " , $cssFileInfo [ '__ATTRIBUTES__' ][ 'enabledBrowsers' ]);
$disabledBrowsers = explode ( " , " , $cssFileInfo [ '__ATTRIBUTES__' ][ 'disabledBrowsers' ]);
if ((( in_array ( $browserName , $enabledBrowsers )) || ( in_array ( 'ALL' , $enabledBrowsers ))) && ( ! ( in_array ( $browserName , $disabledBrowsers )))) {
if ( $cssFileInfo [ '__ATTRIBUTES__' ][ 'file' ] == 'rtl.css' ) {
Bootstrap :: LoadClass ( 'serverConfiguration' );
$oServerConf = & serverConf :: getSingleton ();
if ( ! ( defined ( 'SYS_LANG' ))) {
if ( isset ( $_SERVER [ 'HTTP_REFERER' ])) {
$syss = explode ( '://' , $_SERVER [ 'HTTP_REFERER' ]);
$sysObjets = explode ( '/' , $syss [ '1' ]);
$sysLang = $sysObjets [ '2' ];
} else {
$sysLang = 'en' ;
}
} else {
$sysLang = SYS_LANG ;
}
if ( $oServerConf -> isRtl ( $sysLang )) {
$output .= file_get_contents ( $baseSkinDirectory . PATH_SEP . 'css' . PATH_SEP . $cssFileInfo [ '__ATTRIBUTES__' ][ 'file' ]);
}
} else {
$output .= file_get_contents ( $baseSkinDirectory . PATH_SEP . 'css' . PATH_SEP . $cssFileInfo [ '__ATTRIBUTES__' ][ 'file' ]);
}
}
}
//Remove comments..
$regex = array ( " `^([ \t \ s]+)`ism " => '' , " `^ \ / \ *(.+?) \ * \ /`ism " => " " , " `([ \n \ A;]+) \ / \ *(.+?) \ * \ /`ism " => " $ 1 " , " `([ \n \ A; \ s]+)//(.+?)[ \n \r ]`ism " => " $ 1 \n " , " `(^[ \r \n ]*|[ \r \n ]+)[ \ s \t ]*[ \r \n ]+`ism " => " \n " );
$output = preg_replace ( array_keys ( $regex ), $regex , $output );
$output = $outputHeader . $output ;
return $output ;
}
/**
* sendHeaders
*
* @ param string $filename
* @ param string $contentType
* default value ''
* @ param boolean $download
* default value false
* @ param string $downloadFileName
* default value ''
*
* @ return void
*/
public function sendHeaders ( $filename , $contentType = '' , $download = false , $downloadFileName = '' )
{
if ( $download ) {
if ( $downloadFileName == '' ) {
$aAux = explode ( '/' , $filename );
$downloadFileName = $aAux [ count ( $aAux ) - 1 ];
}
header ( 'Content-Disposition: attachment; filename="' . $downloadFileName . '"' );
}
header ( 'Content-Type: ' . $contentType );
// if userAgent (BROWSER) is MSIE we need special headers to avoid MSIE
// behaivor.
$userAgent = strtolower ( $_SERVER [ 'HTTP_USER_AGENT' ]);
if ( preg_match ( " /msie/i " , $userAgent )) {
// if ( ereg("msie", $userAgent)) {
header ( 'Pragma: cache' );
if ( file_exists ( $filename )) {
$mtime = filemtime ( $filename );
} else {
$mtime = date ( 'U' );
}
$gmt_mtime = gmdate ( " D, d M Y H:i:s " , $mtime ) . " GMT " ;
header ( 'ETag: "' . md5 ( $mtime . $filename ) . '"' );
header ( " Last-Modified: " . $gmt_mtime );
header ( 'Cache-Control: public' );
header ( " Expires: " . gmdate ( " D, d M Y H:i:s " , time () + 60 * 10 ) . " GMT " ); // ten
// minutes
return ;
}
if ( ! $download ) {
header ( 'Pragma: cache' );
if ( file_exists ( $filename )) {
$mtime = filemtime ( $filename );
} else {
$mtime = date ( 'U' );
}
$gmt_mtime = gmdate ( " D, d M Y H:i:s " , $mtime ) . " GMT " ;
header ( 'ETag: "' . md5 ( $mtime . $filename ) . '"' );
header ( " Last-Modified: " . $gmt_mtime );
header ( 'Cache-Control: public' );
header ( " Expires: " . gmdate ( " D, d M Y H:i:s " , time () + 90 * 60 * 60 * 24 ) . " GMT " );
if ( isset ( $_SERVER [ 'HTTP_IF_MODIFIED_SINCE' ])) {
if ( $_SERVER [ 'HTTP_IF_MODIFIED_SINCE' ] == $gmt_mtime ) {
header ( 'HTTP/1.1 304 Not Modified' );
exit ();
}
}
if ( isset ( $_SERVER [ 'HTTP_IF_NONE_MATCH' ])) {
if ( str_replace ( '"' , '' , stripslashes ( $_SERVER [ 'HTTP_IF_NONE_MATCH' ])) == md5 ( $mtime . $filename )) {
header ( " HTTP/1.1 304 Not Modified " );
exit ();
}
}
}
}
/**
* Get checksum from multiple files
*
* @ author erik amaru ortiz < erik @ colosa . com >
*/
public function getCheckSum ( $files )
{
Bootstrap :: LoadClass ( 'system' );
$key = System :: getVersion ();
if ( ! is_array ( $files )) {
$tmp = $files ;
$files = array ();
$files [ 0 ] = $tmp ;
}
$checkSum = '' ;
foreach ( $files as $file ) {
if ( is_file ( $file )) {
$checkSum .= md5_file ( $file );
}
}
return md5 ( $checkSum . $key );
}
/**
* Get checksum from multiple files
*
* @ author erik amaru ortiz < erik @ colosa . com >
*/
public function getCacheFileNameByPattern ( $path , $pattern )
{
if ( $file = glob ( $path . $pattern )) {
preg_match ( '/[a-f0-9]{32}/' , $file [ 0 ], $match );
} else {
$file [ 0 ] = '' ;
}
return array ( 'filename' => $file [ 0 ], 'checksum' => ( isset ( $match [ 0 ]) ? $match [ 0 ] : '' ));
}
/**
* 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 ;
}
/**
* strip_slashes
* @ param vVar
*/
public function strip_slashes ( $vVar )
{
if ( is_array ( $vVar )) {
foreach ( $vVar as $sKey => $vValue ) {
if ( is_array ( $vValue )) {
Bootstrap :: strip_slashes ( $vVar [ $sKey ]);
} else {
$vVar [ $sKey ] = stripslashes ( $vVar [ $sKey ]);
}
}
} else {
$vVar = stripslashes ( $vVar );
}
return $vVar ;
}
/**
* Function LoadTranslation
*
* @ author Aldo Mauricio Veliz Valenzuela . < mauricio @ colosa . com >
* @ access public
* @ param eter string msgID
* @ param eter string file
* @ param eter array data // erik: associative array within data input to replace for formatted string i.e "any messsage {replaced_label} that contains a replace label"
* @ return string
*/
public function LoadTranslation ( $msgID , $lang = SYS_LANG , $data = null )
{
global $translation ;
// if the second parameter $lang is an array does mean it was especified to use as data
if ( is_array ( $lang )) {
$data = $lang ;
$lang = SYS_LANG ;
}
if ( isset ( $translation [ $msgID ])) {
$translationString = preg_replace ( " [ \n | \r | \n \r ] " , ' ' , $translation [ $msgID ]);
if ( isset ( $data ) && is_array ( $data )) {
foreach ( $data as $label => $value ) {
$translationString = str_replace ( '{' . $label . '}' , $value , $translationString );
}
}
return $translationString ;
} else {
if ( defined ( " UNTRANSLATED_MARK " )) {
$untranslatedMark = strip_tags ( UNTRANSLATED_MARK );
} else {
$untranslatedMark = " ** " ;
}
return $untranslatedMark . $msgID . $untranslatedMark ;
}
}
/**
* Recursive version of glob php standard function
*
* @ author Erik Amaru Ortiz < erik @ colosa . com >
*
* @ param $path path to scan recursively the write permission
* @ param $flags to notive glob function
* @ param $pattern pattern to filter some especified files
* @ return < array > array containing the recursive glob results
*/
public function rglob ( $pattern = '*' , $flags = 0 , $path = '' )
{
$paths = glob ( $path . '*' , GLOB_MARK | GLOB_ONLYDIR | GLOB_NOSORT );
$files = glob ( $path . $pattern , $flags );
foreach ( $paths as $path ) {
$files = array_merge ( $files , Bootstrap :: rglob ( $pattern , $flags , $path ));
}
return $files ;
}
/**
* JSON encode
*
* @ author Erik A . O . < erik @ gmail . com , aortiz . erik @ gmail . com >
*/
public function json_encode ( $Json )
{
if ( function_exists ( 'json_encode' )) {
return json_encode ( $Json );
} else {
Bootstrap :: LoadThirdParty ( 'pear/json' , 'class.json' );
$oJSON = new Services_JSON ();
return $oJSON -> encode ( $Json );
}
}
/**
* JSON decode
*
* @ author Erik A . O . < erik @ gmail . com , aortiz . erik @ gmail . com >
*/
public function json_decode ( $Json )
{
if ( function_exists ( 'json_decode' )) {
return json_decode ( $Json );
} else {
Bootstrap :: LoadThirdParty ( 'pear/json' , 'class.json' );
$oJSON = new Services_JSON ();
return $oJSON -> decode ( $Json );
}
}
/**
* ************************************* init **********************************************
* Xml parse collection functions
* Returns a associative array within the xml structure and data
*
* @ author Erik Amaru Ortiz < erik @ colosa . com >
*/
public function xmlParser ( & $string )
{
$parser = xml_parser_create ();
xml_parser_set_option ( $parser , XML_OPTION_CASE_FOLDING , 0 );
xml_parse_into_struct ( $parser , $string , $vals , $index );
$mnary = array ();
$ary = & $mnary ;
foreach ( $vals as $r ) {
$t = $r [ 'tag' ];
if ( $r [ 'type' ] == 'open' ) {
if ( isset ( $ary [ $t ])) {
if ( isset ( $ary [ $t ][ 0 ])) {
$ary [ $t ][] = array ();
} else {
$ary [ $t ] = array ( $ary [ $t ], array ());
}
$cv = & $ary [ $t ][ count ( $ary [ $t ]) - 1 ];
} else {
$cv = & $ary [ $t ];
}
if ( isset ( $r [ 'attributes' ])) {
foreach ( $r [ 'attributes' ] as $k => $v ) {
$cv [ '__ATTRIBUTES__' ][ $k ] = $v ;
}
}
// note by gustavo cruz gustavo[at]colosa[dot]com
// minor adjustments to validate if an open node have a value attribute.
// for example a dropdown has many childs, but also can have a value attribute.
if ( isset ( $r [ 'value' ]) && trim ( $r [ 'value' ]) != '' ) {
$cv [ '__VALUE__' ] = $r [ 'value' ];
}
// end added code
$cv [ '__CONTENT__' ] = array ();
$cv [ '__CONTENT__' ][ '_p' ] = & $ary ;
$ary = & $cv [ '__CONTENT__' ];
} elseif ( $r [ 'type' ] == 'complete' ) {
if ( isset ( $ary [ $t ])) {
if ( isset ( $ary [ $t ][ 0 ])) {
$ary [ $t ][] = array ();
} else {
$ary [ $t ] = array ( $ary [ $t ], array ());
}
$cv = & $ary [ $t ][ count ( $ary [ $t ]) - 1 ];
} else {
$cv = & $ary [ $t ];
}
if ( isset ( $r [ 'attributes' ])) {
foreach ( $r [ 'attributes' ] as $k => $v ) {
$cv [ '__ATTRIBUTES__' ][ $k ] = $v ;
}
}
$cv [ '__VALUE__' ] = ( isset ( $r [ 'value' ]) ? $r [ 'value' ] : '' );
} elseif ( $r [ 'type' ] == 'close' ) {
$ary = & $ary [ '_p' ];
}
}
self :: _del_p ( $mnary );
2013-08-15 10:02:53 -04:00
$obj_resp = new StdClass ();
2013-03-04 09:29:59 -04:00
$obj_resp -> code = xml_get_error_code ( $parser );
$obj_resp -> message = xml_error_string ( $obj_resp -> code );
$obj_resp -> result = $mnary ;
xml_parser_free ( $parser );
return $obj_resp ;
}
/**
*
* @ param unknown_type $path
* @ param unknown_type $maxmtime
* @ return Ambigous < number , unknown >
*/
public function getDirectorySize ( $path , $maxmtime = 0 )
{
$totalsize = 0 ;
$totalcount = 0 ;
$dircount = 0 ;
if ( $handle = opendir ( $path )) {
while ( false !== ( $file = readdir ( $handle ))) {
$nextpath = $path . '/' . $file ;
if ( $file != '.' && $file != '..' && ! is_link ( $nextpath ) && $file != '.svn' ) {
if ( is_dir ( $nextpath )) {
$dircount ++ ;
$result = Bootstrap :: 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 ;
}
/**
* _del_p
*
* @ param string & $ary
*
* @ return void
*/
// _Internal: Remove recursion in result array
public function _del_p ( & $ary )
{
foreach ( $ary as $k => $v ) {
if ( $k === '_p' ) {
unset ( $ary [ $k ]);
} elseif ( is_array ( $ary [ $k ])) {
self :: _del_p ( $ary [ $k ]);
}
}
}
/**
* Refactor function
* @ author Ralph A .
* @ return multitype : array containing browser name and type
*/
public function get_current_browser ()
{
static $a_full_assoc_data , $a_mobile_data , $browser_user_agent ;
static $browser_working , $moz_type , $webkit_type ;
//initialize all variables with default values to prevent error
$a_full_assoc_data = '' ;
$a_mobile_data = '' ;
$browser_temp = '' ;
$browser_working = '' ;
$mobile_test = '' ;
$moz_type = '' ;
$ua_type = 'bot' ; // default to bot since you never know with bots
$webkit_type = '' ;
/*
make navigator user agent string lower case to make sure all versions get caught
isset protects against blank user agent failure . tolower also lets the script use
strstr instead of stristr , which drops overhead slightly .
*/
$browser_user_agent = strtolower ( $_SERVER [ 'HTTP_USER_AGENT' ]);
// known browsers, list will be updated routinely, check back now and then
$a_browser_types = array (
array ( 'opera' , true , 'op' , 'bro' ),
array ( 'msie' , true , 'ie' , 'bro' ),
// webkit before gecko because some webkit ua strings say: like gecko
array ( 'webkit' , true , 'webkit' , 'bro' ),
// konq will be using webkit soon
array ( 'konqueror' , true , 'konq' , 'bro' ),
// covers Netscape 6-7, K-Meleon, Most linux versions, uses moz array below
array ( 'gecko' , true , 'moz' , 'bro' ),
array ( 'netpositive' , false , 'netp' , 'bbro' ), // beos browser
array ( 'lynx' , false , 'lynx' , 'bbro' ), // command line browser
array ( 'elinks ' , false , 'elinks' , 'bbro' ), // new version of links
array ( 'elinks' , false , 'elinks' , 'bbro' ), // alternate id for it
array ( 'links2' , false , 'links2' , 'bbro' ), // alternate links version
array ( 'links ' , false , 'links' , 'bbro' ), // old name for links
array ( 'links' , false , 'links' , 'bbro' ), // alternate id for it
array ( 'w3m' , false , 'w3m' , 'bbro' ), // open source browser, more features than lynx/links
array ( 'webtv' , false , 'webtv' , 'bbro' ), // junk ms webtv
array ( 'amaya' , false , 'amaya' , 'bbro' ), // w3c browser
array ( 'dillo' , false , 'dillo' , 'bbro' ), // linux browser, basic table support
array ( 'ibrowse' , false , 'ibrowse' , 'bbro' ), // amiga browser
array ( 'icab' , false , 'icab' , 'bro' ), // mac browser
array ( 'crazy browser' , true , 'ie' , 'bro' ), // uses ie rendering engine
// search engine spider bots:
array ( 'bingbot' , false , 'bing' , 'bot' ), // bing
array ( 'exabot' , false , 'exabot' , 'bot' ), // exabot
array ( 'googlebot' , false , 'google' , 'bot' ), // google
array ( 'google web preview' , false , 'googlewp' , 'bot' ), // google preview
array ( 'mediapartners-google' , false , 'adsense' , 'bot' ), // google adsense
array ( 'yahoo-verticalcrawler' , false , 'yahoo' , 'bot' ), // old yahoo bot
array ( 'yahoo! slurp' , false , 'yahoo' , 'bot' ), // new yahoo bot
array ( 'yahoo-mm' , false , 'yahoomm' , 'bot' ), // gets Yahoo-MMCrawler and Yahoo-MMAudVid bots
array ( 'inktomi' , false , 'inktomi' , 'bot' ), // inktomi bot
array ( 'slurp' , false , 'inktomi' , 'bot' ), // inktomi bot
array ( 'fast-webcrawler' , false , 'fast' , 'bot' ), // Fast AllTheWeb
array ( 'msnbot' , false , 'msn' , 'bot' ), // msn search
array ( 'ask jeeves' , false , 'ask' , 'bot' ), //jeeves/teoma
array ( 'teoma' , false , 'ask' , 'bot' ), //jeeves teoma
array ( 'scooter' , false , 'scooter' , 'bot' ), // altavista
array ( 'openbot' , false , 'openbot' , 'bot' ), // openbot, from taiwan
array ( 'ia_archiver' , false , 'ia_archiver' , 'bot' ), // ia archiver
array ( 'zyborg' , false , 'looksmart' , 'bot' ), // looksmart
array ( 'almaden' , false , 'ibm' , 'bot' ), // ibm almaden web crawler
array ( 'baiduspider' , false , 'baidu' , 'bot' ), // Baiduspider asian search spider
array ( 'psbot' , false , 'psbot' , 'bot' ), // psbot image crawler
array ( 'gigabot' , false , 'gigabot' , 'bot' ), // gigabot crawler
array ( 'naverbot' , false , 'naverbot' , 'bot' ), // naverbot crawler, bad bot, block
array ( 'surveybot' , false , 'surveybot' , 'bot' ), //
array ( 'boitho.com-dc' , false , 'boitho' , 'bot' ), //norwegian search engine
array ( 'objectssearch' , false , 'objectsearch' , 'bot' ), // open source search engine
array ( 'answerbus' , false , 'answerbus' , 'bot' ), // http://www.answerbus.com/, web questions
array ( 'sohu-search' , false , 'sohu' , 'bot' ), // chinese media company, search component
array ( 'iltrovatore-setaccio' , false , 'il-set' , 'bot' ),
// various http utility libaries
array ( 'w3c_validator' , false , 'w3c' , 'lib' ), // uses libperl, make first
array ( 'wdg_validator' , false , 'wdg' , 'lib' ), //
array ( 'libwww-perl' , false , 'libwww-perl' , 'lib' ),
array ( 'jakarta commons-httpclient' , false , 'jakarta' , 'lib' ),
array ( 'python-urllib' , false , 'python-urllib' , 'lib' ),
// download apps
array ( 'getright' , false , 'getright' , 'dow' ),
array ( 'wget' , false , 'wget' , 'dow' ), // open source downloader, obeys robots.txt
// netscape 4 and earlier tests, put last so spiders don't get caught
array ( 'mozilla/4.' , false , 'ns' , 'bbro' ),
array ( 'mozilla/3.' , false , 'ns' , 'bbro' ),
array ( 'mozilla/2.' , false , 'ns' , 'bbro' )
);
/*
moz types array
note the order , netscape6 must come before netscape , which is how netscape 7 id ' s itself .
rv comes last in case it is plain old mozilla . firefox / netscape / seamonkey need to be later
Thanks to : http :// www . zytrax . com / tech / web / firefox - history . html
*/
$a_moz_types = array ( 'bonecho' , 'camino' , 'epiphany' , 'firebird' , 'flock' , 'galeon' , 'iceape' , 'icecat' , 'k-meleon' , 'minimo' , 'multizilla' , 'phoenix' , 'songbird' , 'swiftfox' , 'seamonkey' , 'shiretoko' , 'iceweasel' , 'firefox' , 'minefield' , 'netscape6' , 'netscape' , 'rv' );
/*
webkit types , this is going to expand over time as webkit b $browser_namerowsers spread
konqueror is probably going to move to webkit , so this is preparing for that
It will now default to khtml . gtklauncher is the temp id for epiphany , might
change . Defaults to applewebkit , and will all show the webkit number .
*/
$a_webkit_types = array ( 'arora' , 'chrome' , 'epiphany' , 'gtklauncher' , 'konqueror' , 'midori' , 'omniweb' , 'safari' , 'uzbl' , 'applewebkit' , 'webkit' );
/*
run through the browser_types array , break if you hit a match , if no match , assume old browser
or non dom browser .
*/
$i_count = count ( $a_browser_types );
for ( $i = 0 ; $i < $i_count ; $i ++ ) {
//unpacks browser array, assigns to variables, need to not assign til found in string
$browser_temp = $a_browser_types [ $i ][ 0 ]; // text string to id browser from array
if ( strstr ( $browser_user_agent , $browser_temp )) {
$browser_working = $a_browser_types [ $i ][ 2 ]; // working name for browser
$ua_type = $a_browser_types [ $i ][ 3 ]; // sets whether bot or browser
switch ( $browser_working ) {
case 'moz' :
// this is to pull out specific mozilla versions, firebird, netscape etc..
$j_count = count ( $a_moz_types );
for ( $j = 0 ; $j < $j_count ; $j ++ ) {
if ( strstr ( $browser_user_agent , $a_moz_types [ $j ])) {
$moz_type = $a_moz_types [ $j ];
break ;
}
}
if ( $moz_type == 'rv' ) {
$moz_type = 'mozilla' ;
}
break ;
case 'webkit' :
// this is to pull out specific webkit versions, safari, google-chrome etc..
$j_count = count ( $a_webkit_types );
for ( $j = 0 ; $j < $j_count ; $j ++ ) {
if ( strstr ( $browser_user_agent , $a_webkit_types [ $j ])) {
$webkit_type = $a_webkit_types [ $j ];
break ;
}
}
break ;
default :
break ;
}
break ;
}
}
$mobile_test = Bootstrap :: check_is_mobile ( $browser_user_agent );
if ( $mobile_test ) {
$a_mobile_data = Bootstrap :: get_mobile_data ( $browser_user_agent );
$ua_type = 'mobile' ;
}
$a_full_assoc_data = array (
'browser_working' => $browser_working ,
'ua_type' => $ua_type ,
'moz_data' => array ( $moz_type ),
'webkit_data' => array ( $webkit_type ),
'mobile_data' => array ( $a_mobile_data ),
);
return $a_full_assoc_data ;
}
/**
* track total script execution time
*/
public function script_time ()
{
static $script_time ;
$elapsed_time = '' ;
/*
note that microtime ( true ) requires php 5 or greater for microtime ( true )
*/
if ( sprintf ( " %01.1f " , phpversion ()) >= 5 ) {
if ( is_null ( $script_time )) {
$script_time = microtime ( true );
} else {
// note: (string)$var is same as strval($var)
// $elapsed_time = (string)( microtime(true) - $script_time );
$elapsed_time = ( microtime ( true ) - $script_time );
$elapsed_time = sprintf ( " %01.8f " , $elapsed_time );
$script_time = null ; // can't unset a static variable
return $elapsed_time ;
}
}
}
/**
*
* @ param unknown_type $pv_browser_user_agent
* @ param unknown_type $pv_search_string
* @ param unknown_type $pv_b_break_last
* @ param unknown_type $pv_extra_search
* @ return string
*/
public function get_item_version ( $pv_browser_user_agent , $pv_search_string , $pv_b_break_last = '' , $pv_extra_search = '' )
{
$substring_length = 15 ;
$start_pos = 0 ; // set $start_pos to 0 for first iteration
$string_working_number = '' ;
for ( $i = 0 ; $i < 4 ; $i ++ ) {
//start the search after the first string occurrence
if ( strpos ( $pv_browser_user_agent , $pv_search_string , $start_pos ) !== false ) {
$start_pos = strpos ( $pv_browser_user_agent , $pv_search_string , $start_pos ) + strlen ( $pv_search_string );
if ( ! $pv_b_break_last || ( $pv_extra_search && strstr ( $pv_browser_user_agent , $pv_extra_search ) )) {
break ;
}
} else {
break ;
}
}
$start_pos += Bootstrap :: get_set_count ( 'get' );
$string_working_number = substr ( $pv_browser_user_agent , $start_pos , $substring_length );
$string_working_number = substr ( $string_working_number , 0 , strcspn ( $string_working_number , ' );/' ));
if ( ! is_numeric ( substr ( $string_working_number , 0 , 1 ))) {
$string_working_number = '' ;
}
return $string_working_number ;
}
/**
*
* @ param unknown_type $pv_type
* @ param unknown_type $pv_value
*/
public function get_set_count ( $pv_type , $pv_value = '' )
{
static $slice_increment ;
$return_value = '' ;
switch ( $pv_type ) {
case 'get' :
if ( is_null ( $slice_increment )) {
$slice_increment = 1 ;
}
$return_value = $slice_increment ;
$slice_increment = 1 ; // reset to default
return $return_value ;
break ;
case 'set' :
$slice_increment = $pv_value ;
break ;
}
}
/**
* gets which os from the browser string
*/
public function get_os_data ( $pv_browser_string , $pv_browser_name , $pv_version_number )
{
// initialize variables
$os_working_type = '' ;
$os_working_number = '' ;
/*
packs the os array . Use this order since some navigator user agents will put 'macintosh'
in the navigator user agent string which would make the nt test register true
*/
$a_mac = array ( 'intel mac' , 'ppc mac' , 'mac68k' ); // this is not used currently
// same logic, check in order to catch the os's in order, last is always default item
$a_unix_types = array ( 'dragonfly' , 'freebsd' , 'openbsd' , 'netbsd' , 'bsd' , 'unixware' , 'solaris' , 'sunos' , 'sun4' , 'sun5' , 'suni86' , 'sun' , 'irix5' , 'irix6' , 'irix' , 'hpux9' , 'hpux10' , 'hpux11' , 'hpux' , 'hp-ux' , 'aix1' , 'aix2' , 'aix3' , 'aix4' , 'aix5' , 'aix' , 'sco' , 'unixware' , 'mpras' , 'reliant' , 'dec' , 'sinix' , 'unix' );
// only sometimes will you get a linux distro to id itself...
$a_linux_distros = array ( 'ubuntu' , 'kubuntu' , 'xubuntu' , 'mepis' , 'xandros' , 'linspire' , 'winspire' , 'jolicloud' , 'sidux' , 'kanotix' , 'debian' , 'opensuse' , 'suse' , 'fedora' , 'redhat' , 'slackware' , 'slax' , 'mandrake' , 'mandriva' , 'gentoo' , 'sabayon' , 'linux' );
$a_linux_process = array ( 'i386' , 'i586' , 'i686' ); // not use currently
// note, order of os very important in os array, you will get failed ids if changed
$a_os_types = array ( 'android' , 'blackberry' , 'iphone' , 'palmos' , 'palmsource' , 'symbian' , 'beos' , 'os2' , 'amiga' , 'webtv' , 'mac' , 'nt' , 'win' , $a_unix_types , $a_linux_distros );
//os tester
$i_count = count ( $a_os_types );
for ( $i = 0 ; $i < $i_count ; $i ++ ) {
// unpacks os array, assigns to variable $a_os_working
$os_working_data = $a_os_types [ $i ];
/*
assign os to global os variable , os flag true on success
! strstr ( $pv_browser_string , " linux " ) corrects a linux detection bug
*/
if ( ! is_array ( $os_working_data ) && strstr ( $pv_browser_string , $os_working_data ) && ! strstr ( $pv_browser_string , " linux " )) {
$os_working_type = $os_working_data ;
switch ( $os_working_type ) {
// most windows now uses: NT X.Y syntax
case 'nt' :
if ( strstr ( $pv_browser_string , 'nt 6.1' )) {
$os_working_number = 6.1 ;
} elseif ( strstr ( $pv_browser_string , 'nt 6.0' )) {
$os_working_number = 6.0 ;
} elseif ( strstr ( $pv_browser_string , 'nt 5.2' )) {
$os_working_number = 5.2 ;
} elseif ( strstr ( $pv_browser_string , 'nt 5.1' ) || strstr ( $pv_browser_string , 'xp' )) {
$os_working_number = 5.1 ; //
} elseif ( strstr ( $pv_browser_string , 'nt 5' ) || strstr ( $pv_browser_string , '2000' )) {
$os_working_number = 5.0 ;
} elseif ( strstr ( $pv_browser_string , 'nt 4' )) {
$os_working_number = 4 ;
} elseif ( strstr ( $pv_browser_string , 'nt 3' )) {
$os_working_number = 3 ;
}
break ;
case 'win' :
if ( strstr ( $pv_browser_string , 'vista' )) {
$os_working_number = 6.0 ;
$os_working_type = 'nt' ;
} elseif ( strstr ( $pv_browser_string , 'xp' )) {
$os_working_number = 5.1 ;
$os_working_type = 'nt' ;
} elseif ( strstr ( $pv_browser_string , '2003' )) {
$os_working_number = 5.2 ;
$os_working_type = 'nt' ;
} elseif ( strstr ( $pv_browser_string , 'windows ce' )) { // windows CE
$os_working_number = 'ce' ;
$os_working_type = 'nt' ;
} elseif ( strstr ( $pv_browser_string , '95' )) {
$os_working_number = '95' ;
} elseif (( strstr ( $pv_browser_string , '9x 4.9' ) ) || ( strstr ( $pv_browser_string , ' me' ) )) {
$os_working_number = 'me' ;
} elseif ( strstr ( $pv_browser_string , '98' )) {
$os_working_number = '98' ;
} elseif ( strstr ( $pv_browser_string , '2000' )) { // windows 2000, for opera ID
$os_working_number = 5.0 ;
$os_working_type = 'nt' ;
}
break ;
case 'mac' :
if ( strstr ( $pv_browser_string , 'os x' )) {
if ( strstr ( $pv_browser_string , 'os x ' )) {
$os_working_number = str_replace ( '_' , '.' , Bootstrap :: get_item_version ( $pv_browser_string , 'os x' ));
} else {
$os_working_number = 10 ;
}
} elseif (( $pv_browser_name == 'saf' ) || ( $pv_browser_name == 'cam' ) ||
( ( $pv_browser_name == 'moz' ) && ( $pv_version_number >= 1.3 ) ) ||
( ( $pv_browser_name == 'ie' ) && ( $pv_version_number >= 5.2 ) )) {
$os_working_number = 10 ;
}
break ;
case 'iphone' :
$os_working_number = 10 ;
break ;
default :
break ;
}
break ;
} elseif ( is_array ( $os_working_data ) && ( $i == ( $i_count - 2 ) )) {
$j_count = count ( $os_working_data );
for ( $j = 0 ; $j < $j_count ; $j ++ ) {
if ( strstr ( $pv_browser_string , $os_working_data [ $j ])) {
$os_working_type = 'unix' ; //if the os is in the unix array, it's unix, obviously...
$os_working_number = ( $os_working_data [ $j ] != 'unix' ) ? $os_working_data [ $j ] : '' ; // assign sub unix version from the unix array
break ;
}
}
} elseif ( is_array ( $os_working_data ) && ( $i == ( $i_count - 1 ))) {
$j_count = count ( $os_working_data );
for ( $j = 0 ; $j < $j_count ; $j ++ ) {
if ( strstr ( $pv_browser_string , $os_working_data [ $j ])) {
$os_working_type = 'lin' ;
// assign linux distro from the linux array, there's a default
//search for 'lin', if it's that, set version to ''
$os_working_number = ( $os_working_data [ $j ] != 'linux' ) ? $os_working_data [ $j ] : '' ;
break ;
}
}
}
}
// pack the os data array for return to main function
$a_os_data = array ( $os_working_type , $os_working_number );
return $a_os_data ;
}
/**
*
* @ param unknown_type $pv_browser_user_agent
* @ return string
*/
public function check_is_mobile ( $pv_browser_user_agent )
{
$mobile_working_test = '' ;
$a_mobile_search = array (
'android' , 'epoc' , 'linux armv' , 'palmos' , 'palmsource' , 'windows ce' , 'windows phone os' , 'symbianos' , 'symbian os' , 'symbian' , 'webos' ,
// devices - ipod before iphone or fails
'benq' , 'blackberry' , 'danger hiptop' , 'ddipocket' , ' droid' , 'ipad' , 'ipod' , 'iphone' , 'kindle' , 'lge-cx' , 'lge-lx' , 'lge-mx' , 'lge vx' , 'lge ' , 'lge-' , 'lg;lx' , 'nintendo wii' , 'nokia' , 'palm' , 'pdxgw' , 'playstation' , 'sagem' , 'samsung' , 'sec-sgh' , 'sharp' , 'sonyericsson' , 'sprint' , 'zune' , 'j-phone' , 'n410' , 'mot 24' , 'mot-' , 'htc-' , 'htc_' , 'htc ' , 'sec-' , 'sie-m' , 'sie-s' , 'spv ' , 'vodaphone' , 'smartphone' , 'armv' , 'midp' , 'mobilephone' ,
// browsers
'avantgo' , 'blazer' , 'elaine' , 'eudoraweb' , 'iemobile' , 'minimo' , 'mobile safari' , 'mobileexplorer' , 'opera mobi' , 'opera mini' , 'netfront' , 'opwv' , 'polaris' , 'semc-browser' , 'up.browser' , 'webpro' , 'wms pie' , 'xiino' ,
// services - astel out of business
'astel' , 'docomo' , 'novarra-vision' , 'portalmmm' , 'reqwirelessweb' , 'vodafone'
);
// then do basic mobile type search, this uses data from: get_mobile_data()
$j_count = count ( $a_mobile_search );
for ( $j = 0 ; $j < $j_count ; $j ++ ) {
if ( strstr ( $pv_browser_user_agent , $a_mobile_search [ $j ])) {
$mobile_working_test = $a_mobile_search [ $j ];
break ;
}
}
return $mobile_working_test ;
}
/**
*
* @ param unknown_type $pv_browser_user_agent
*/
public function get_mobile_data ( $pv_browser_user_agent )
{
$mobile_browser = '' ;
$mobile_browser_number = '' ;
$mobile_device = '' ;
$mobile_device_number = '' ;
$mobile_os = '' ; // will usually be null, sorry
$mobile_os_number = '' ;
$mobile_server = '' ;
$mobile_server_number = '' ;
$a_mobile_browser = array ( 'avantgo' , 'blazer' , 'elaine' , 'eudoraweb' , 'iemobile' , 'minimo' , 'mobile safari' , 'mobileexplorer' , 'opera mobi' , 'opera mini' , 'netfront' , 'opwv' , 'polaris' , 'semc-browser' , 'up.browser' , 'webpro' , 'wms pie' , 'xiino' );
$a_mobile_device = array ( 'benq' , 'blackberry' , 'danger hiptop' , 'ddipocket' , ' droid' , 'htc_dream' , 'htc espresso' , 'htc hero' , 'htc halo' , 'htc huangshan' , 'htc legend' , 'htc liberty' , 'htc paradise' , 'htc supersonic' , 'htc tattoo' , 'ipad' , 'ipod' , 'iphone' , 'kindle' , 'lge-cx' , 'lge-lx' , 'lge-mx' , 'lge vx' , 'lg;lx' , 'nintendo wii' , 'nokia' , 'palm' , 'pdxgw' , 'playstation' , 'sagem' , 'samsung' , 'sec-sgh' , 'sharp' , 'sonyericsson' , 'sprint' , 'zunehd' , 'zune' , 'j-phone' , 'milestone' , 'n410' , 'mot 24' , 'mot-' , 'htc-' , 'htc_' , 'htc ' , 'lge ' , 'lge-' , 'sec-' , 'sie-m' , 'sie-s' , 'spv ' , 'smartphone' , 'armv' , 'midp' , 'mobilephone' );
$a_mobile_os = array ( 'android' , 'epoc' , 'cpu os' , 'iphone os' , 'palmos' , 'palmsource' , 'windows phone os' , 'windows ce' , 'symbianos' , 'symbian os' , 'symbian' , 'webos' , 'linux armv' );
$a_mobile_server = array ( 'astel' , 'docomo' , 'novarra-vision' , 'portalmmm' , 'reqwirelessweb' , 'vodafone' );
$k_count = count ( $a_mobile_browser );
for ( $k = 0 ; $k < $k_count ; $k ++ ) {
if ( strstr ( $pv_browser_user_agent , $a_mobile_browser [ $k ])) {
$mobile_browser = $a_mobile_browser [ $k ];
$mobile_browser_number = Bootstrap :: get_item_version ( $pv_browser_user_agent , $mobile_browser );
break ;
}
}
$k_count = count ( $a_mobile_device );
for ( $k = 0 ; $k < $k_count ; $k ++ ) {
if ( strstr ( $pv_browser_user_agent , $a_mobile_device [ $k ])) {
$mobile_device = trim ( $a_mobile_device [ $k ], '-_' ); // but not space trims yet
if ( $mobile_device == 'blackberry' ) {
Bootstrap :: get_set_count ( 'set' , 0 );
}
$mobile_device_number = Bootstrap :: get_item_version ( $pv_browser_user_agent , $mobile_device );
$mobile_device = trim ( $mobile_device ); // some of the id search strings have white space
break ;
}
}
$k_count = count ( $a_mobile_os );
for ( $k = 0 ; $k < $k_count ; $k ++ ) {
if ( strstr ( $pv_browser_user_agent , $a_mobile_os [ $k ])) {
$mobile_os = $a_mobile_os [ $k ];
$mobile_os_number = str_replace ( '_' , '.' , Bootstrap :: get_item_version ( $pv_browser_user_agent , $mobile_os ));
break ;
}
}
$k_count = count ( $a_mobile_server );
for ( $k = 0 ; $k < $k_count ; $k ++ ) {
if ( strstr ( $pv_browser_user_agent , $a_mobile_server [ $k ])) {
$mobile_server = $a_mobile_server [ $k ];
$mobile_server_number = Bootstrap :: get_item_version ( $pv_browser_user_agent , $mobile_server );
break ;
}
}
// just for cases where we know it's a mobile device already
if ( ! $mobile_os && ( $mobile_browser || $mobile_device || $mobile_server ) && strstr ( $pv_browser_user_agent , 'linux' )) {
$mobile_os = 'linux' ;
$mobile_os_number = 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 );
return $a_mobile_data ;
}
/**
2013-08-22 11:10:04 -04:00
* This function parse a particular api / rest request
2013-03-04 09:29:59 -04:00
*
2013-08-22 11:10:04 -04:00
* Example url :
* GET / api / workflowdemo / user / rol ? id = 0000000000000000001
* POST / api / workflowdemo / cases
*
* - These urls are equivalents
* GET / api /< workspaceName >/ cases / start
* GET /< workspaceName >- api / cases / start
*
* @ param $url
* @ return array return url parsed data
2013-03-04 09:29:59 -04:00
*/
2013-08-22 11:10:04 -04:00
public function parseRestUri ( $url )
2013-03-04 09:29:59 -04:00
{
2013-08-22 11:10:04 -04:00
array_shift ( $url );
$sysTemp = array_shift ( $url );
if ( $sysTemp == 'api' ) {
$sysTemp = array_shift ( $url );
} elseif ( strpos ( $sysTemp , '-' ) !== false ) {
list ( $sysTemp ,) = explode ( '-' , $sysTemp );
}
2013-03-04 09:29:59 -04:00
$args = array ();
2013-08-22 11:10:04 -04:00
define ( 'SYS_TEMP' , $sysTemp );
2013-03-04 09:29:59 -04:00
$restUri = '' ;
2013-08-22 11:10:04 -04:00
foreach ( $url as $urlPart ) {
$restUri .= '/' . $urlPart ;
2013-03-04 09:29:59 -04:00
}
$args [ 'SYS_LANG' ] = 'en' ; // TODO, this can be set from http header
$args [ 'SYS_SKIN' ] = '' ;
$args [ 'SYS_COLLECTION' ] = '' ;
$args [ 'SYS_TARGET' ] = $restUri ;
return $args ;
}
/**
*
* @ param unknown_type $aRequestUri
* @ return multitype : string mixed Ambigous < number , string >
*/
public function parseNormalUri ( $aRequestUri )
{
if ( substr ( $aRequestUri [ 1 ], 0 , 3 ) == 'sys' ) {
define ( 'SYS_TEMP' , substr ( $aRequestUri [ 1 ], 3 ));
} else {
define ( " ENABLE_ENCRYPT " , 'yes' );
define ( 'SYS_TEMP' , $aRequestUri [ 1 ]);
$plain = '/sys' . SYS_TEMP ;
for ( $i = 2 ; $i < count ( $aRequestUri ); $i ++ ) {
$decoded = Bootstrap :: decrypt ( urldecode ( $aRequestUri [ $i ]), URL_KEY );
if ( $decoded == 'sWì› ' ) {
$decoded = $VARS [ $i ]; //this is for the string "../"
}
$plain .= '/' . $decoded ;
}
$_SERVER [ " REQUEST_URI " ] = $plain ;
}
$work = explode ( '?' , $_SERVER [ " REQUEST_URI " ]);
if ( count ( $work ) > 1 ) {
define ( 'SYS_CURRENT_PARMS' , $work [ 1 ]);
} else {
define ( 'SYS_CURRENT_PARMS' , '' );
}
define ( 'SYS_CURRENT_URI' , $work [ 0 ]);
if ( ! defined ( 'SYS_CURRENT_PARMS' )) {
define ( 'SYS_CURRENT_PARMS' , $work [ 1 ]);
}
$preArray = explode ( '&' , SYS_CURRENT_PARMS );
$buffer = explode ( '.' , $work [ 0 ]);
if ( count ( $buffer ) == 1 ) {
$buffer [ 1 ] = '' ;
}
//request type
define ( 'REQUEST_TYPE' , ( $buffer [ 1 ] != " " ? $buffer [ 1 ] : 'html' ));
$toparse = substr ( $buffer [ 0 ], 1 , strlen ( $buffer [ 0 ]) - 1 );
$uriVars = explode ( '/' , $toparse );
unset ( $work );
unset ( $buffer );
unset ( $toparse );
array_shift ( $uriVars );
$args = array ();
$args [ 'SYS_LANG' ] = array_shift ( $uriVars );
$args [ 'SYS_SKIN' ] = array_shift ( $uriVars );
$args [ 'SYS_COLLECTION' ] = array_shift ( $uriVars );
$args [ 'SYS_TARGET' ] = array_shift ( $uriVars );
//to enable more than 2 directories...in the methods structure
while ( count ( $uriVars ) > 0 ) {
$args [ 'SYS_TARGET' ] .= '/' . array_shift ( $uriVars );
}
/* Fix to prevent use uxs skin outside siplified interface ,
because that skin is not compatible with others interfaces */
if ( $args [ 'SYS_SKIN' ] == 'uxs' && $args [ 'SYS_COLLECTION' ] != 'home' && $args [ 'SYS_COLLECTION' ] != 'cases' ) {
$config = System :: getSystemConfiguration ();
$args [ 'SYS_SKIN' ] = $config [ 'default_skin' ];
}
return $args ;
}
/**
* * Encrypt and decrypt functions ***
*/
/**
* Encrypt string
*
* @ author Fernando Ontiveros Lira < fernando @ colosa . com >
* @ access public
* @ param string $string
* @ param string $key
* @ return string
*/
public function encrypt ( $string , $key )
{
//print $string;
// if ( defined ( 'ENABLE_ENCRYPT' ) && ENABLE_ENCRYPT == 'yes' ) {
if ( strpos ( $string , '|' , 0 ) !== false ) {
return $string ;
}
$result = '' ;
for ( $i = 0 ; $i < strlen ( $string ); $i ++ ) {
$char = substr ( $string , $i , 1 );
$keychar = substr ( $key , ( $i % strlen ( $key )) - 1 , 1 );
$char = chr ( ord ( $char ) + ord ( $keychar ));
$result .= $char ;
}
$result = base64_encode ( $result );
$result = str_replace ( '/' , '°' , $result );
$result = str_replace ( '=' , '' , $result );
return $result ;
}
/**
* Decrypt string
*
* @ author Fernando Ontiveros Lira < fernando @ colosa . com >
* @ access public
* @ param string $string
* @ param string $key
* @ return string
*/
public function decrypt ( $string , $key )
{
// if ( defined ( 'ENABLE_ENCRYPT' ) && ENABLE_ENCRYPT == 'yes' ) {
//if (strpos($string, '|', 0) !== false) return $string;
$result = '' ;
$string = str_replace ( '°' , '/' , $string );
$string_jhl = explode ( " ? " , $string );
$string = base64_decode ( $string );
$string = base64_decode ( $string_jhl [ 0 ]);
for ( $i = 0 ; $i < strlen ( $string ); $i ++ ) {
$char = substr ( $string , $i , 1 );
$keychar = substr ( $key , ( $i % strlen ( $key )) - 1 , 1 );
$char = chr ( ord ( $char ) - ord ( $keychar ));
$result .= $char ;
}
if ( ! empty ( $string_jhl [ 1 ])) {
$result .= '?' . $string_jhl [ 1 ];
}
return $result ;
}
/**
*
* @ param unknown_type $model
* @ return unknown
*/
public function getModel ( $model )
{
require_once " classes/model/ $model .php " ;
return new $model ();
}
/**
* Create an encrypted unique identifier based on $id and the selected scope id .
*
* @ author David S . Callizaya S . < davidsantos @ colosa . com >
* @ access public
* @ param string $scope
* @ param string $id
* @ return string
*/
public function createUID ( $scope , $id )
{
$e = $scope . $id ;
$e = Bootstrap :: encrypt ( $e , URL_KEY );
$e = str_replace ( array ( '+' , '/' , '=' ), array ( '__' , '_' , '___' ), base64_encode ( $e ));
return $e ;
}
/**
* ( Create an encrypted unique identificator based on $id and the selected scope id . ) ^- 1
* getUIDName
*
* @ author David S . Callizaya S . < davidsantos @ colosa . com >
* @ access public
* @ param string $id
* @ param string $scope
* @ return string
*/
public function getUIDName ( $uid , $scope = '' )
{
$e = str_replace ( array ( '=' , '+' , '/' ), array ( '___' , '__' , '_' ), $uid );
$e = base64_decode ( $e );
$e = Bootstrap :: decrypt ( $e , URL_KEY );
$e = substr ( $e , strlen ( $scope ));
return $e ;
}
/**
* Merge 2 arrays
*
* @ author Fernando Ontiveros Lira < fernando @ colosa . com >
* @ access public
* @ return array
*/
public function array_merges ()
{
$array = array ();
$arrays = & func_get_args ();
foreach ( $arrays as $array_i ) {
if ( is_array ( $array_i )) {
Bootstrap :: array_merge_2 ( $array , $array_i );
}
}
return $array ;
}
/**
* Merge 2 arrays
*
* @ author Fernando Ontiveros Lira < fernando @ colosa . com >
* @ access public
* @ param string $array
* @ param string $array_i
* @ return array
*/
public function array_merge_2 ( & $array , & $array_i )
{
foreach ( $array_i as $k => $v ) {
if ( is_array ( $v )) {
if ( ! isset ( $array [ $k ])) {
$array [ $k ] = array ();
}
Bootstrap :: array_merge_2 ( $array [ $k ], $v );
} else {
if ( isset ( $array [ $k ]) && is_array ( $array [ $k ])) {
$array [ $k ][ 0 ] = $v ;
} else {
if ( isset ( $array ) && ! is_array ( $array )) {
$temp = $array ;
$array = array ();
$array [ 0 ] = $temp ;
}
$array [ $k ] = $v ;
}
}
}
}
/* Returns a sql string with @@ parameters replaced with its values defined
* in array $result using the next notation :
* NOTATION :
* @@ Quoted parameter acording to the SYSTEM ' s Database
* @ Q Double quoted parameter \\ \ "
* @ q Single quoted parameter \\ \ '
* @% URL string
* @ # Non-quoted parameter
* @! Evaluate string : Replace the parameters in value and then in the sql string
* @ fn () Evaluate string with the function " fn "
* @ author David Callizaya < calidavidx21 @ hotmail . com >
*/
public function replaceDataField ( $sqlString , $result , $DBEngine = 'mysql' )
{
if ( ! is_array ( $result )) {
$result = array ();
}
$result = $result + Bootstrap :: getSystemConstants ();
$__textoEval = " " ;
$u = 0 ;
//$count=preg_match_all('/\@(?:([\@\%\#\!Qq])([a-zA-Z\_]\w*)|([a-zA-Z\_][\w\-\>\:]*)\(((?:[^\\\\\)]*(?:[\\\\][\w\W])?)*)\))/',$sqlString,$match,PREG_PATTERN_ORDER | PREG_OFFSET_CAPTURE);
$count = preg_match_all ( '/\@(?:([\@\%\#\=\!Qq])([a-zA-Z\_]\w*)|([a-zA-Z\_][\w\-\>\:]*)\(((?:[^\\\\\)]*?)*)\))/' , $sqlString , $match , PREG_PATTERN_ORDER | PREG_OFFSET_CAPTURE );
if ( $count ) {
for ( $r = 0 ; $r < $count ; $r ++ ) {
if ( ! isset ( $result [ $match [ 2 ][ $r ][ 0 ]])) {
$result [ $match [ 2 ][ $r ][ 0 ]] = '' ;
}
if ( ! is_array ( $result [ $match [ 2 ][ $r ][ 0 ]])) {
$__textoEval .= substr ( $sqlString , $u , $match [ 0 ][ $r ][ 1 ] - $u );
$u = $match [ 0 ][ $r ][ 1 ] + strlen ( $match [ 0 ][ $r ][ 0 ]);
//Mysql quotes scape
if (( $match [ 1 ][ $r ][ 0 ] == '@' ) && ( isset ( $result [ $match [ 2 ][ $r ][ 0 ]]))) {
$__textoEval .= " \" " . Bootstrap :: sqlEscape ( $result [ $match [ 2 ][ $r ][ 0 ]], $DBEngine ) . " \" " ;
continue ;
}
//URL encode
if (( $match [ 1 ][ $r ][ 0 ] == '%' ) && ( isset ( $result [ $match [ 2 ][ $r ][ 0 ]]))) {
$__textoEval .= urlencode ( $result [ $match [ 2 ][ $r ][ 0 ]]);
continue ;
}
//Double quoted parameter
if (( $match [ 1 ][ $r ][ 0 ] == 'Q' ) && ( isset ( $result [ $match [ 2 ][ $r ][ 0 ]]))) {
$__textoEval .= '"' . addcslashes ( $result [ $match [ 2 ][ $r ][ 0 ]], '\\"' ) . '"' ;
continue ;
}
//Single quoted parameter
if (( $match [ 1 ][ $r ][ 0 ] == 'q' ) && ( isset ( $result [ $match [ 2 ][ $r ][ 0 ]]))) {
$__textoEval .= " ' " . addcslashes ( $result [ $match [ 2 ][ $r ][ 0 ]], '\\\'' ) . " ' " ;
continue ;
}
//Substring (Sub replaceDataField)
if (( $match [ 1 ][ $r ][ 0 ] == '!' ) && ( isset ( $result [ $match [ 2 ][ $r ][ 0 ]]))) {
$__textoEval .= Bootstrap :: replaceDataField ( $result [ $match [ 2 ][ $r ][ 0 ]], $result );
continue ;
}
//Call function
if (( $match [ 1 ][ $r ][ 0 ] === '' ) && ( $match [ 2 ][ $r ][ 0 ] === '' ) && ( $match [ 3 ][ $r ][ 0 ] !== '' )) {
eval ( '$strAux = ' . $match [ 3 ][ $r ][ 0 ] . '(\'' . addcslashes ( Bootstrap :: replaceDataField ( stripslashes ( $match [ 4 ][ $r ][ 0 ]), $result ), '\\\'' ) . '\');' );
if ( $match [ 3 ][ $r ][ 0 ] == " Bootstrap::LoadTranslation " ) {
$arraySearch = array ( " ' " );
$arrayReplace = array ( " \\ ' " );
$strAux = str_replace ( $arraySearch , $arrayReplace , $strAux );
}
$__textoEval .= $strAux ;
continue ;
}
//Non-quoted
if (( $match [ 1 ][ $r ][ 0 ] == '#' ) && ( isset ( $result [ $match [ 2 ][ $r ][ 0 ]]))) {
$__textoEval .= Bootstrap :: replaceDataField ( $result [ $match [ 2 ][ $r ][ 0 ]], $result );
continue ;
}
//Non-quoted =
if (( $match [ 1 ][ $r ][ 0 ] == '=' ) && ( isset ( $result [ $match [ 2 ][ $r ][ 0 ]]))) {
$__textoEval .= Bootstrap :: replaceDataField ( $result [ $match [ 2 ][ $r ][ 0 ]], $result );
continue ;
}
}
}
}
$__textoEval .= substr ( $sqlString , $u );
return $__textoEval ;
}
/**
* microtime_float
*
* @ return array_sum ( explode ( ' ' , microtime ()))
*/
/* public static */
public function microtime_float ()
{
return array_sum ( explode ( ' ' , microtime ()));
}
/**
* Return the System defined constants and Application variables
* Constants : SYS_ *
* Sessions : USER_ * , URS_ *
*/
public function getSystemConstants ( $params = null )
{
$t1 = Bootstrap :: microtime_float ();
$sysCon = array ();
if ( defined ( " SYS_LANG " )) {
$sysCon [ " SYS_LANG " ] = SYS_LANG ;
}
if ( defined ( " SYS_SKIN " )) {
$sysCon [ " SYS_SKIN " ] = SYS_SKIN ;
}
if ( defined ( " SYS_SYS " )) {
$sysCon [ " SYS_SYS " ] = SYS_SYS ;
}
$sysCon [ " APPLICATION " ] = ( isset ( $_SESSION [ " APPLICATION " ])) ? $_SESSION [ " APPLICATION " ] : " " ;
$sysCon [ " PROCESS " ] = ( isset ( $_SESSION [ " PROCESS " ])) ? $_SESSION [ " PROCESS " ] : " " ;
$sysCon [ " TASK " ] = ( isset ( $_SESSION [ " TASK " ])) ? $_SESSION [ " TASK " ] : " " ;
$sysCon [ " INDEX " ] = ( isset ( $_SESSION [ " INDEX " ])) ? $_SESSION [ " INDEX " ] : " " ;
$sysCon [ " USER_LOGGED " ] = ( isset ( $_SESSION [ " USER_LOGGED " ])) ? $_SESSION [ " USER_LOGGED " ] : " " ;
$sysCon [ " USR_USERNAME " ] = ( isset ( $_SESSION [ " USR_USERNAME " ])) ? $_SESSION [ " USR_USERNAME " ] : " " ;
//###############################################################################################
// Added for compatibility betweek aplication called from web Entry that uses just WS functions
//###############################################################################################
if ( $params != null ) {
if ( isset ( $params -> option )) {
switch ( $params -> option ) {
case " STORED SESSION " :
if ( isset ( $params -> SID )) {
Bootstrap :: LoadClass ( " sessions " );
$oSessions = new Sessions ( $params -> SID );
$sysCon = array_merge ( $sysCon , $oSessions -> getGlobals ());
}
break ;
}
}
if ( isset ( $params -> appData ) && is_array ( $params -> appData )) {
$sysCon [ " APPLICATION " ] = $params -> appData [ " APPLICATION " ];
$sysCon [ " PROCESS " ] = $params -> appData [ " PROCESS " ];
$sysCon [ " TASK " ] = $params -> appData [ " TASK " ];
$sysCon [ " INDEX " ] = $params -> appData [ " INDEX " ];
if ( empty ( $sysCon [ " USER_LOGGED " ])) {
$sysCon [ " USER_LOGGED " ] = $params -> appData [ " USER_LOGGED " ];
$sysCon [ " USR_USERNAME " ] = $params -> appData [ " USR_USERNAME " ];
}
}
}
return $sysCon ;
}
/**
* Escapes special characters in a string for use in a SQL statement
* @ author David Callizaya < calidavidx21 @ hotmail . com >
* @ param string $sqlString The string to be escaped
* @ param string $DBEngine Target DBMS
*/
public function sqlEscape ( $sqlString , $DBEngine = DB_ADAPTER )
{
$DBEngine = DB_ADAPTER ;
switch ( $DBEngine ) {
case 'mysql' :
$con = Propel :: getConnection ( 'workflow' );
return mysql_real_escape_string ( stripslashes ( $sqlString ), $con -> getResource ());
break ;
case 'myxml' :
$sqlString = str_replace ( '"' , '""' , $sqlString );
return str_replace ( " ' " , " '' " , $sqlString );
break ;
default :
return addslashes ( stripslashes ( $sqlString ));
break ;
}
}
/**
* Load a template
*
* @ author Fernando Ontiveros Lira < fernando @ colosa . com >
* @ access public
* @ param string $strTemplateName
* @ return void
*/
public function LoadTemplate ( $strTemplateName )
{
if ( $strTemplateName == '' ) {
return ;
}
$temp = $strTemplateName . " .php " ;
$file = Bootstrap :: ExpandPath ( 'templates' ) . $temp ;
// Check if its a user template
if ( file_exists ( $file )) {
//require_once( $file );
include ( $file );
} else {
// Try to get the global system template
$file = PATH_TEMPLATE . PATH_SEP . $temp ;
//require_once( $file );
if ( file_exists ( $file )) {
include ( $file );
}
}
}
/**
* verify path
*
* @ author Fernando Ontiveros Lira < fernando @ colosa . com >
* @ access public
* @ param string $strPath path
* @ param boolean $createPath if true this public function will create the path
* @ return boolean
*/
2013-04-30 10:49:13 -04:00
public static function verifyPath ( $strPath , $createPath = false )
2013-03-04 09:29:59 -04:00
{
$folder_path = strstr ( $strPath , '.' ) ? dirname ( $strPath ) : $strPath ;
if ( file_exists ( $strPath ) || @ is_dir ( $strPath )) {
return true ;
} else {
if ( $createPath ) {
//TODO:: Define Environment constants: Devel (0777), Production (0770), ...
Bootstrap :: mk_dir ( $strPath , 0777 );
} else {
return false ;
}
}
return false ;
}
/**
* getformatedDate
*
* @ param date $date
* @ param string $format default value 'yyyy-mm-dd' ,
* @ param string $lang default value ''
*
* @ return string $ret
*/
public function getformatedDate ( $date , $format = 'yyyy-mm-dd' , $lang = '' )
{
/**
* ******************************************************************************************************
* if the year is 2008 and the format is yy then -> 08
* if the year is 2008 and the format is yyyy then -> 2008
*
* if the month is 05 and the format is mm then -> 05
* if the month is 05 and the format is m and the month is less than 10 then -> 5 else digit normal
* if the month is 05 and the format is MM or M then -> May
*
* if the day is 5 and the format is dd then -> 05
* if the day is 5 and the format is d and the day is less than 10 then -> 5 else digit normal
* if the day is 5 and the format is DD or D then -> five
* *******************************************************************************************************
*/
//scape the literal
switch ( $lang ) {
case 'es' :
$format = str_replace ( ' de ' , '[of]' , $format );
break ;
}
//first we must formatted the string
$format = str_replace ( 'yyyy' , '{YEAR}' , $format );
$format = str_replace ( 'yy' , '{year}' , $format );
$format = str_replace ( 'mm' , '{YONTH}' , $format );
$format = str_replace ( 'm' , '{month}' , $format );
$format = str_replace ( 'M' , '{XONTH}' , $format );
$format = str_replace ( 'dd' , '{DAY}' , $format );
$format = str_replace ( 'd' , '{day}' , $format );
$format = str_replace ( 'h' , '{h}' , $format );
$format = str_replace ( 'i' , '{i}' , $format );
$format = str_replace ( 's' , '{s}' , $format );
if ( $lang === '' ) {
$lang = defined ( SYS_LANG ) ? SYS_LANG : 'en' ;
}
$aux = explode ( ' ' , $date ); //para dividir la fecha del dia
$date = explode ( '-' , isset ( $aux [ 0 ]) ? $aux [ 0 ] : '00-00-00' ); //para obtener los dias, el mes, y el año.
$time = explode ( ':' , isset ( $aux [ 1 ]) ? $aux [ 1 ] : '00:00:00' ); //para obtener las horas, minutos, segundos.
$year = ( int ) (( isset ( $date [ 0 ])) ? $date [ 0 ] : '0' ); //year
$month = ( int ) (( isset ( $date [ 1 ])) ? $date [ 1 ] : '0' ); //month
$day = ( int ) (( isset ( $date [ 2 ])) ? $date [ 2 ] : '0' ); //day
$h = isset ( $time [ 0 ]) ? $time [ 0 ] : '00' ; //hour
$i = isset ( $time [ 1 ]) ? $time [ 1 ] : '00' ; //minute
$s = isset ( $time [ 2 ]) ? $time [ 2 ] : '00' ; //second
$MONTHS = Array ();
for ( $i = 1 ; $i <= 12 ; $i ++ ) {
$MONTHS [ $i ] = Bootstrap :: LoadTranslation ( " ID_MONTH_ $i " , $lang );
}
$d = ( int ) $day ;
$dd = Bootstrap :: complete_field ( $day , 2 , 1 );
//missing D
$M = $MONTHS [ $month ];
$m = ( int ) $month ;
$mm = Bootstrap :: complete_field ( $month , 2 , 1 );
$yy = substr ( $year , strlen ( $year ) - 2 , 2 );
$yyyy = $year ;
$names = array ( '{day}' , '{DAY}' , '{month}' , '{YONTH}' , '{XONTH}' , '{year}' , '{YEAR}' , '{h}' , '{i}' , '{s}' );
$values = array ( $d , $dd , $m , $mm , $M , $yy , $yyyy , $h , $i , $s );
$ret = str_replace ( $names , $values , $format );
//recovering the original literal
switch ( $lang ) {
case 'es' :
$ret = str_replace ( '[of]' , ' de ' , $ret );
break ;
}
return $ret ;
}
/**
*
* @ author Erik Amaru Ortiz < erik @ colosa . com >
* @ name complete_field ( $string , $lenght , $type = { 1 : number / 2 : string / 3 : float })
*/
public function complete_field ( $campo , $long , $tipo )
{
$campo = trim ( $campo );
switch ( $tipo ) {
case 1 : //number
$long = $long - strlen ( $campo );
for ( $i = 1 ; $i <= $long ; $i ++ ) {
$campo = " 0 " . $campo ;
}
break ;
case 2 : //string
$long = $long - strlen ( $campo );
for ( $i = 1 ; $i <= $long ; $i ++ ) {
$campo = " " . $campo ;
}
break ;
case 3 : //float
if ( $campo != " 0 " ) {
$vals = explode ( " . " , $long );
$ints = $vals [ 0 ];
$decs = $vals [ 1 ];
$valscampo = explode ( " . " , $campo );
$intscampo = $valscampo [ 0 ];
$decscampo = $valscampo [ 1 ];
$ints = $ints - strlen ( $intscampo );
for ( $i = 1 ; $i <= $ints ; $i ++ ) {
$intscampo = " 0 " . $intscampo ;
}
//los decimales pueden ser 0 uno o dos
$decs = $decs - strlen ( $decscampo );
for ( $i = 1 ; $i <= $decs ; $i ++ ) {
$decscampo = $decscampo . " 0 " ;
}
$campo = $intscampo . " . " . $decscampo ;
} else {
$vals = explode ( " . " , $long );
$ints = $vals [ 0 ];
$decs = $vals [ 1 ];
$campo = " " ;
for ( $i = 1 ; $i <= $ints ; $i ++ ) {
$campo = " 0 " . $campo ;
}
$campod = " " ;
for ( $i = 1 ; $i <= $decs ; $i ++ ) {
$campod = " 0 " . $campod ;
}
$campo = $campo . " . " . $campod ;
}
break ;
}
return $campo ;
}
/**
* evalJScript
*
* @ param string $c
*
* @ return void
*/
public function evalJScript ( $c )
{
print ( " <script language= \" javascript \" > { $c } </script> " );
}
/**
* Generate random number
*
* @ author Fernando Ontiveros Lira < fernando @ colosa . com >
* @ access public
* @ return int
*/
public function generateUniqueID ()
{
do {
$sUID = str_replace ( '.' , '0' , uniqid ( rand ( 0 , 999999999 ), true ));
} while ( strlen ( $sUID ) != 32 );
return $sUID ;
//return strtoupper(substr(uniqid(rand(0, 9), false),0,14));
}
/**
* Encrypt URL
*
* @ author Fernando Ontiveros Lira < fernando @ colosa . com >
* @ access public
* @ param string $urlLink
* @ return string
*/
public function encryptlink ( $url )
{
if ( defined ( 'ENABLE_ENCRYPT' ) && ENABLE_ENCRYPT == 'yes' ) {
return urlencode ( Bootstrap :: encrypt ( $url , URL_KEY ));
} else {
return $url ;
}
}
/**
* isWinOs
*
* @ return true if the 3 first letters of PHP_OS got 'WIN' , otherwise false .
*/
public function isWinOs ()
{
return strtoupper ( substr ( PHP_OS , 0 , 3 )) == " WIN " ;
}
/**
* isNTOs
*
* @ return true if PHP_OS is 'WINNT' , otherwise false .
*/
public function isNTOs ()
{
return PHP_OS == " WINNT " ;
}
/**
* isLinuxOs
*
* @ return true if PHP_OS ( upper text ) got 'LINUX' , otherwise false .
*/
public function isLinuxOs ()
{
return strtoupper ( PHP_OS ) == " LINUX " ;
}
2013-08-22 11:10:04 -04:00
public static function initVendors ()
{
if ( ! is_dir ( PATH_TRUNK . 'vendor' )) {
if ( file_exists ( PATH_TRUNK . 'composer.phar' )) {
throw new Exception (
2013-08-23 13:23:19 -04:00
" ERROR: Verdors are missing! " . PHP_EOL .
" Please execute the following command to install vendors: " . PHP_EOL . PHP_EOL .
2013-08-22 11:10:04 -04:00
" $ >php composer.phar install "
);
} else {
throw new Exception (
2013-08-23 13:23:19 -04:00
" ERROR: Verdors are missing! " . PHP_EOL .
" Please execute the following commands to prepare/install vendors: " . PHP_EOL . PHP_EOL .
" $ >curl -sS https://getcomposer.org/installer | php " . PHP_EOL .
2013-08-22 11:10:04 -04:00
" $ >php composer.phar install "
);
}
}
require_once PATH_TRUNK . 'vendor' . PATH_SEP . " autoload.php " ;
}
2013-03-04 09:29:59 -04:00
}
2013-04-25 12:42:30 -04:00