| 1 | 2 | Manuela | <?php
 | 
      
        | 2 |  |  | /**
 | 
      
        | 3 |  |  |  *
 | 
      
        | 4 |  |  |  * @category        framework
 | 
      
        | 5 |  |  |  * @package         initialize
 | 
      
        | 6 |  |  |  * @author          WebsiteBaker Project
 | 
      
        | 7 |  |  |  * @copyright       Ryan Djurovich
 | 
      
        | 8 |  |  |  * @copyright       WebsiteBaker Org. e.V.
 | 
      
        | 9 |  |  |  * @link            http://websitebaker.org/
 | 
      
        | 10 |  |  |  * @license         http://www.gnu.org/licenses/gpl.html
 | 
      
        | 11 |  |  |  * @platform        WebsiteBaker 2.8.3
 | 
      
        | 12 |  |  |  * @requirements    PHP 5.3.6 and higher
 | 
      
        | 13 |  |  |  * @version         $Id$
 | 
      
        | 14 |  |  |  * @filesource      $HeadURL$
 | 
      
        | 15 |  |  |  * @lastmodified    $Date$
 | 
      
        | 16 |  |  |  *
 | 
      
        | 17 |  |  |  */
 | 
      
        | 18 |  |  | error_reporting( -1 );
 | 
      
        | 19 |  |  | $sStarttime = array_sum(explode(" ", microtime()));
 | 
      
        | 20 |  |  | $aPhpFunctions = get_defined_functions();
 | 
      
        | 21 |  |  | /**
 | 
      
        | 22 |  |  |  * sanitize $_SERVER['HTTP_REFERER']
 | 
      
        | 23 |  |  |  * @param string $sWbUrl qualified startup URL of current application
 | 
      
        | 24 |  |  |  */
 | 
      
        | 25 |  |  | function SanitizeHttpReferer($sWbUrl = WB_URL) {
 | 
      
        | 26 |  |  |     $sTmpReferer = '';
 | 
      
        | 27 |  |  |     if (isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER'] != '') {
 | 
      
        | 28 |  |  |         define('ORG_REFERER', ($_SERVER['HTTP_REFERER'] ?: ''));
 | 
      
        | 29 |  |  |         $aRefUrl = parse_url($_SERVER['HTTP_REFERER']);
 | 
      
        | 30 |  |  |         if ($aRefUrl !== false) {
 | 
      
        | 31 |  |  |             $aRefUrl['host'] = isset($aRefUrl['host']) ? $aRefUrl['host'] : '';
 | 
      
        | 32 |  |  |             $aRefUrl['path'] = isset($aRefUrl['path']) ? $aRefUrl['path'] : '';
 | 
      
        | 33 |  |  |             $aRefUrl['fragment'] = isset($aRefUrl['fragment']) ? '#'.$aRefUrl['fragment'] : '';
 | 
      
        | 34 |  |  |             $aWbUrl = parse_url(WB_URL);
 | 
      
        | 35 |  |  |             if ($aWbUrl !== false) {
 | 
      
        | 36 |  |  |                 $aWbUrl['host'] = isset($aWbUrl['host']) ? $aWbUrl['host'] : '';
 | 
      
        | 37 |  |  |                 $aWbUrl['path'] = isset($aWbUrl['path']) ? $aWbUrl['path'] : '';
 | 
      
        | 38 |  |  |                 if (strpos($aRefUrl['host'].$aRefUrl['path'], $aWbUrl['host'].$aWbUrl['path']) !== false) {
 | 
      
        | 39 |  |  |                     $aRefUrl['path'] = preg_replace('#^'.$aWbUrl['path'].'#i', '', $aRefUrl['path']);
 | 
      
        | 40 |  |  |                     $sTmpReferer = WB_URL.$aRefUrl['path'].$aRefUrl['fragment'];
 | 
      
        | 41 |  |  |                 }
 | 
      
        | 42 |  |  |                 unset($aWbUrl);
 | 
      
        | 43 |  |  |             }
 | 
      
        | 44 |  |  |             unset($aRefUrl);
 | 
      
        | 45 |  |  |         }
 | 
      
        | 46 |  |  |     }
 | 
      
        | 47 |  |  |     $_SERVER['HTTP_REFERER'] = $sTmpReferer;
 | 
      
        | 48 |  |  | }
 | 
      
        | 49 |  |  | /**
 | 
      
        | 50 |  |  |  * makePhExp
 | 
      
        | 51 |  |  |  * @param array list of names for placeholders
 | 
      
        | 52 |  |  |  * @return array reformatted list
 | 
      
        | 53 |  |  |  * @description makes an RegEx-Expression for preg_replace() of each item in $aList
 | 
      
        | 54 |  |  |  *              Example: from 'TEST_NAME' it mades '/\[TEST_NAME\]/s'
 | 
      
        | 55 |  |  |  */
 | 
      
        | 56 |  |  | function makePhExp($sList)
 | 
      
        | 57 |  |  | {
 | 
      
        | 58 |  |  |     $aList = func_get_args();
 | 
      
        | 59 |  |  | //    return preg_replace('/^(.*)$/', '/\[$1\]/s', $aList);
 | 
      
        | 60 |  |  |     return preg_replace('/^(.*)$/', '[$1]', $aList);
 | 
      
        | 61 |  |  | }
 | 
      
        | 62 |  |  | 
 | 
      
        | 63 |  |  | /* ***************************************************************************************
 | 
      
        | 64 |  |  |  * Start initialization                                                                  *
 | 
      
        | 65 |  |  |  ****************************************************************************************/// aktivate exceptionhandler ---
 | 
      
        | 66 |  |  | //    throw new Exception('PHP-'.PHP_VERSION.' found, but at last PHP-5.3.6 required !!');
 | 
      
        | 67 |  |  | // Stop execution if PHP version is too old
 | 
      
        | 68 |  |  | // PHP less then 5.6.0 is prohibited ---
 | 
      
        | 69 |  |  | if (version_compare(PHP_VERSION, '5.6.0', '<')) {
 | 
      
        | 70 |  |  |     $sMsg = '<p style="color: #ff0000;">WebsiteBaker is not able to run with PHP-Version less then 5.6.0!!<br />'
 | 
      
        | 71 |  |  |           . 'Please change your PHP-Version to any kind from 5.6.0 and up!<br />'
 | 
      
        | 72 |  |  |           . 'If you have problems to solve that, ask your hosting provider for it.<br  />'
 | 
      
        | 73 |  |  |           . 'The very best solution is the use of PHP-7.0 and up</p>';
 | 
      
        | 74 |  |  |     die($sMsg);
 | 
      
        | 75 |  |  | }
 | 
      
        | 76 |  |  | 
 | 
      
        | 77 |  |  | /* -------------------------------------------------------- */
 | 
      
        | 78 |  |  | if ( !defined('WB_PATH')) { define('WB_PATH', dirname(__DIR__)); }
 | 
      
        | 79 |  |  | // *** initialize Exception handling
 | 
      
        | 80 |  |  | if(!function_exists('globalExceptionHandler')) {
 | 
      
        | 81 |  |  |     include(__DIR__.'/globalExceptionHandler.php');
 | 
      
        | 82 |  |  | }
 | 
      
        | 83 |  |  | // *** initialize Error handling
 | 
      
        | 84 |  |  | $sErrorLogFile = dirname(__DIR__).'/var/logs/php_error.log.php';
 | 
      
        | 85 |  |  | $sErrorLogPath = dirname($sErrorLogFile);
 | 
      
        | 86 |  |  | 
 | 
      
        | 87 |  |  | if (!file_exists($sErrorLogFile)) {
 | 
      
        | 88 |  |  |     $sTmp = '<?php die(\'illegal file access\'); ?>'
 | 
      
        | 89 |  |  |           . 'created: ['.date('c').']'.PHP_EOL;
 | 
      
        | 90 |  |  |     if (false === file_put_contents($sErrorLogFile, $sTmp, FILE_APPEND)) {
 | 
      
        | 91 |  |  |         throw new Exception('unable to create logfile \'/var/logs/php_error.log.php\'');
 | 
      
        | 92 |  |  |     }
 | 
      
        | 93 |  |  | }
 | 
      
        | 94 |  |  | if (!is_writeable($sErrorLogFile)) {
 | 
      
        | 95 |  |  |     throw new Exception('not writeable logfile \'/var/logs/php_error.log.php\'');
 | 
      
        | 96 |  |  | }
 | 
      
        | 97 |  |  | ini_set('log_errors', 1);
 | 
      
        | 98 |  |  | ini_set ('error_log', $sErrorLogFile);
 | 
      
        | 99 |  |  | 
 | 
      
        | 100 |  |  | /**
 | 
      
        | 101 |  |  |  * Read DB settings from configuration file
 | 
      
        | 102 |  |  |  * @return array
 | 
      
        | 103 |  |  |  * @throws RuntimeException
 | 
      
        | 104 |  |  |  *
 | 
      
        | 105 |  |  |  */
 | 
      
        | 106 |  |  | function initReadSetupFile()
 | 
      
        | 107 |  |  | {
 | 
      
        | 108 |  |  | // check for valid file request. Becomes more stronger in next version
 | 
      
        | 109 |  |  | //    initCheckValidCaller(array('save.php','index.php','config.php','upgrade-script.php'));
 | 
      
        | 110 |  |  |     $aCfg = array();
 | 
      
        | 111 |  |  |     $sSetupFile = dirname(dirname(__FILE__)).'/setup.ini.php';
 | 
      
        | 112 |  |  |     if(is_readable($sSetupFile) && !defined('WB_URL')) {
 | 
      
        | 113 |  |  |         $aCfg = parse_ini_file($sSetupFile, true);
 | 
      
        | 114 |  |  |         if (!isset($aCfg['Constants']) || !isset($aCfg['DataBase'])) {
 | 
      
        | 115 |  |  |             throw new InvalidArgumentException('configuration missmatch in setup.ini.php');
 | 
      
        | 116 |  |  |         }
 | 
      
        | 117 |  |  |         foreach($aCfg['Constants'] as $key=>$value) {
 | 
      
        | 118 |  |  |             switch($key):
 | 
      
        | 119 |  |  |                 case 'DEBUG':
 | 
      
        | 120 |  |  |                     $value = filter_var($value, FILTER_VALIDATE_BOOLEAN);
 | 
      
        | 121 |  |  |                     if(!defined('DEBUG')) { define('DEBUG', $value); }
 | 
      
        | 122 |  |  |                     break;
 | 
      
        | 123 |  |  |                 case 'WB_URL': // << case is set deprecated
 | 
      
        | 124 |  |  |                 case 'AppUrl':
 | 
      
        | 125 |  |  |                     $value = trim(str_replace('\\', '/', $value), '/');
 | 
      
        | 126 |  |  |                     if(!defined('WB_URL')) { define('WB_URL', $value); }
 | 
      
        | 127 |  |  |                     break;
 | 
      
        | 128 |  |  |                 case 'ADMIN_DIRECTORY': // << case is set deprecated
 | 
      
        | 129 |  |  |                 case 'AcpDir':
 | 
      
        | 130 |  |  |                     $value = trim(str_replace('\\', '/', $value), '/');
 | 
      
        | 131 |  |  |                     if(!defined('ADMIN_DIRECTORY')) { define('ADMIN_DIRECTORY', $value); }
 | 
      
        | 132 |  |  |                     break;
 | 
      
        | 133 |  |  |                 default:
 | 
      
        | 134 |  |  |                     if(!defined($key)) { define($key, $value); }
 | 
      
        | 135 |  |  |                     break;
 | 
      
        | 136 |  |  |             endswitch;
 | 
      
        | 137 |  |  |         }
 | 
      
        | 138 |  |  |     }
 | 
      
        | 139 |  |  |     return $aCfg;
 | 
      
        | 140 |  |  | //      throw new RuntimeException('unable to read setup.ini.php');
 | 
      
        | 141 |  |  | }
 | 
      
        | 142 |  |  | /**
 | 
      
        | 143 |  |  |  * Set constants for system/install values
 | 
      
        | 144 |  |  |  * @throws RuntimeException
 | 
      
        | 145 |  |  |  */
 | 
      
        | 146 |  |  | function initSetInstallWbConstants($aCfg) {
 | 
      
        | 147 |  |  |     if (sizeof($aCfg)) {
 | 
      
        | 148 |  |  |         foreach($aCfg['Constants'] as $key=>$value) {
 | 
      
        | 149 |  |  |             switch($key):
 | 
      
        | 150 |  |  |                 case 'DEBUG':
 | 
      
        | 151 |  |  |                     $value = filter_var($value, FILTER_VALIDATE_BOOLEAN);
 | 
      
        | 152 |  |  |                     if(!defined('DEBUG')) { define('DEBUG', $value); }
 | 
      
        | 153 |  |  |                     break;
 | 
      
        | 154 |  |  |                 case 'WB_URL': // << case is set deprecated
 | 
      
        | 155 |  |  |                 case 'AppUrl':
 | 
      
        | 156 |  |  |                     $value = trim(str_replace('\\', '/', $value), '/');
 | 
      
        | 157 |  |  |                     if(!defined('WB_URL')) { define('WB_URL', $value); }
 | 
      
        | 158 |  |  |                     break;
 | 
      
        | 159 |  |  |                 case 'ADMIN_DIRECTORY': // << case is set deprecated
 | 
      
        | 160 |  |  |                 case 'AcpDir':
 | 
      
        | 161 |  |  |                     $value = trim(str_replace('\\', '/', $value), '/');
 | 
      
        | 162 |  |  |                     if(!defined('ADMIN_DIRECTORY')) { define('ADMIN_DIRECTORY', $value); }
 | 
      
        | 163 |  |  |                     if(!preg_match('/xx[a-z0-9_][a-z0-9_\-\.]+/i', 'xx'.ADMIN_DIRECTORY)) {
 | 
      
        | 164 |  |  |                         throw new RuntimeException('Invalid admin-directory: ' . ADMIN_DIRECTORY);
 | 
      
        | 165 |  |  |                     }
 | 
      
        | 166 |  |  |                     break;
 | 
      
        | 167 |  |  |                 default:
 | 
      
        | 168 |  |  |                     if(!defined($key)) { define($key, $value); }
 | 
      
        | 169 |  |  |                     break;
 | 
      
        | 170 |  |  |             endswitch;
 | 
      
        | 171 |  |  |         }
 | 
      
        | 172 |  |  |     }
 | 
      
        | 173 |  |  |     if(!defined('WB_PATH')){ define('WB_PATH', dirname(__DIR__)); }
 | 
      
        | 174 |  |  |     if(!defined('ADMIN_URL')){ define('ADMIN_URL', rtrim(WB_URL, '/\\').'/'.ADMIN_DIRECTORY); }
 | 
      
        | 175 |  |  |     if(!defined('ADMIN_PATH')){ define('ADMIN_PATH', WB_PATH.'/'.ADMIN_DIRECTORY); }
 | 
      
        | 176 |  |  |     if(!defined('WB_REL')){
 | 
      
        | 177 |  |  |         $x1 = parse_url(WB_URL);
 | 
      
        | 178 |  |  |         define('WB_REL', (isset($x1['path']) ? $x1['path'] : ''));
 | 
      
        | 179 |  |  |     }
 | 
      
        | 180 |  |  |     if(!defined('ADMIN_REL')){ define('ADMIN_REL', WB_REL.'/'.ADMIN_DIRECTORY); }
 | 
      
        | 181 |  |  |     if(!defined('DOCUMENT_ROOT')) {
 | 
      
        | 182 |  |  |         define('DOCUMENT_ROOT', preg_replace('/'.preg_quote(str_replace('\\', '/', WB_REL), '/').'$/', '', str_replace('\\', '/', WB_PATH)));
 | 
      
        | 183 |  |  |         $_SERVER['DOCUMENT_ROOT'] = DOCUMENT_ROOT;
 | 
      
        | 184 |  |  |     }
 | 
      
        | 185 |  |  |     if(!defined('TMP_PATH')){ define('TMP_PATH', WB_PATH.'/temp'); }
 | 
      
        | 186 |  |  | 
 | 
      
        | 187 |  |  |     if (defined('DB_TYPE'))
 | 
      
        | 188 |  |  |     {
 | 
      
        | 189 |  |  |     // import constants for compatibility reasons
 | 
      
        | 190 |  |  |         $db = array();
 | 
      
        | 191 |  |  |         if (defined('DB_TYPE'))      { $db['type']         = DB_TYPE; }
 | 
      
        | 192 |  |  |         if (defined('DB_USERNAME'))  { $db['user']         = DB_USERNAME; }
 | 
      
        | 193 |  |  |         if (defined('DB_PASSWORD'))  { $db['pass']         = DB_PASSWORD; }
 | 
      
        | 194 |  |  |         if (defined('DB_HOST'))      { $db['host']         = DB_HOST; }
 | 
      
        | 195 |  |  |         if (defined('DB_PORT'))      { $db['port']         = DB_PORT; }
 | 
      
        | 196 |  |  |         if (defined('DB_NAME'))      { $db['name']         = DB_NAME; }
 | 
      
        | 197 |  |  |         if (defined('DB_CHARSET'))   { $db['charset']      = DB_CHARSET; }
 | 
      
        | 198 |  |  |         if (defined('TABLE_PREFIX')) { $db['table_prefix'] = TABLE_PREFIX; }
 | 
      
        | 199 |  |  |     } else {
 | 
      
        | 200 |  |  |         foreach($aCfg['DataBase'] as $key=>$value) {
 | 
      
        | 201 |  |  |             switch($key):
 | 
      
        | 202 |  |  |                 case 'type':
 | 
      
        | 203 |  |  |                     if(!defined('DB_TYPE')) { define('DB_TYPE', $value); }
 | 
      
        | 204 |  |  |                     break;
 | 
      
        | 205 |  |  |                 case 'user':
 | 
      
        | 206 |  |  |                     if(!defined('DB_USERNAME')) { define('DB_USERNAME', $value); }
 | 
      
        | 207 |  |  |                     break;
 | 
      
        | 208 |  |  |                 case 'pass':
 | 
      
        | 209 |  |  |                     if(!defined('DB_PASSWORD')) { define('DB_PASSWORD', $value); }
 | 
      
        | 210 |  |  |                     break;
 | 
      
        | 211 |  |  |                 case 'host':
 | 
      
        | 212 |  |  |                     if(!defined('DB_HOST')) { define('DB_HOST', $value); }
 | 
      
        | 213 |  |  |                     break;
 | 
      
        | 214 |  |  |                 case 'port':
 | 
      
        | 215 |  |  |                     if(!defined('DB_PORT')) { define('DB_PORT', $value); }
 | 
      
        | 216 |  |  |                     break;
 | 
      
        | 217 |  |  |                 case 'name':
 | 
      
        | 218 |  |  |                     if(!defined('DB_NAME')) { define('DB_NAME', $value); }
 | 
      
        | 219 |  |  |                     break;
 | 
      
        | 220 |  |  |                 case 'charset':
 | 
      
        | 221 |  |  |                     if(!defined('DB_CHARSET')) { define('DB_CHARSET', $value); }
 | 
      
        | 222 |  |  |                     break;
 | 
      
        | 223 |  |  |                 default:
 | 
      
        | 224 |  |  |                     $key = strtoupper($key);
 | 
      
        | 225 |  |  |                     if(!defined($key)) { define($key, $value); }
 | 
      
        | 226 |  |  |                     break;
 | 
      
        | 227 |  |  |             endswitch;
 | 
      
        | 228 |  |  |         }
 | 
      
        | 229 |  |  |     }
 | 
      
        | 230 |  |  | }
 | 
      
        | 231 |  |  | 
 | 
      
        | 232 |  |  | /**
 | 
      
        | 233 |  |  |  * WbErrorHandler()
 | 
      
        | 234 |  |  |  *
 | 
      
        | 235 |  |  |  * @param mixed $iErrorCode
 | 
      
        | 236 |  |  |  * @param mixed $sErrorText
 | 
      
        | 237 |  |  |  * @param mixed $sErrorFile
 | 
      
        | 238 |  |  |  * @param mixed $iErrorLine
 | 
      
        | 239 |  |  |  * @return
 | 
      
        | 240 |  |  |  */
 | 
      
        | 241 |  |  | function WbErrorHandler($iErrorCode, $sErrorText, $sErrorFile, $iErrorLine)
 | 
      
        | 242 |  |  | {
 | 
      
        | 243 |  |  |      if (!(error_reporting() & $iErrorCode) || ini_get('log_errors') == 0) {
 | 
      
        | 244 |  |  |         return false;
 | 
      
        | 245 |  |  |     }
 | 
      
        | 246 |  |  |     $bRetval = false;
 | 
      
        | 247 |  |  |     $sErrorLogFile = ini_get ('error_log');
 | 
      
        | 248 |  |  |     if (!is_writeable($sErrorLogFile)){return false;}
 | 
      
        | 249 |  |  |     $sErrorType = E_NOTICE ;
 | 
      
        | 250 |  |  |     $aErrors = array(
 | 
      
        | 251 |  |  |         E_USER_DEPRECATED   => 'E_USER_DEPRECATED',
 | 
      
        | 252 |  |  |         E_USER_NOTICE       => 'E_USER_NOTICE',
 | 
      
        | 253 |  |  |         E_USER_WARNING      => 'E_USER_WARNING',
 | 
      
        | 254 |  |  |         E_DEPRECATED        => 'E_DEPRECATED',
 | 
      
        | 255 |  |  |         E_NOTICE            => 'E_NOTICE',
 | 
      
        | 256 |  |  |         E_WARNING           => 'E_WARNING',
 | 
      
        | 257 |  |  |         E_CORE_WARNING      => 'E_CORE_WARNING',
 | 
      
        | 258 |  |  |         E_COMPILE_WARNING   => 'E_COMPILE_WARNING',
 | 
      
        | 259 |  |  |         E_STRICT            => 'E_STRICT',
 | 
      
        | 260 |  |  |         E_RECOVERABLE_ERROR => 'E_RECOVERABLE_ERROR',
 | 
      
        | 261 |  |  |     );
 | 
      
        | 262 |  |  |     if (array_key_exists($iErrorCode, $aErrors)) {
 | 
      
        | 263 |  |  |         $sErrorType = $aErrors[$iErrorCode];
 | 
      
        | 264 |  |  |         $bRetval = true;
 | 
      
        | 265 |  |  |     }
 | 
      
        | 266 |  |  |     $aBt= debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
 | 
      
        | 267 |  |  |     $x = sizeof($aBt) -1;
 | 
      
        | 268 |  |  |     $x = $x < 0 ? 0 : ($x <= 2 ? $x : 2);
 | 
      
        | 269 |  |  |     $sEntry = date('c').' '.'['.$sErrorType.'] '.str_replace(dirname(__DIR__), '', $sErrorFile).':['.$iErrorLine.'] '
 | 
      
        | 270 |  |  |             . ' from '.str_replace(dirname(__DIR__), '', $aBt[$x]['file']).':['.$aBt[$x]['line'].'] '
 | 
      
        | 271 |  |  |             . (@$aBt[$x]['class'] ? $aBt[$x]['class'].$aBt[$x]['type'] : '').$aBt[$x]['function'].' '
 | 
      
        | 272 |  |  |             . '"'.$sErrorText.'"'.PHP_EOL;
 | 
      
        | 273 |  |  |     file_put_contents($sErrorLogFile, $sEntry, FILE_APPEND);
 | 
      
        | 274 |  |  |     return $bRetval;
 | 
      
        | 275 |  |  | }
 | 
      
        | 276 |  |  | /* ***************************************************************************************
 | 
      
        | 277 |  |  |  * Start initialization                                                                  *
 | 
      
        | 278 |  |  |  ****************************************************************************************/
 | 
      
        | 279 |  |  | // activate errorhandler
 | 
      
        | 280 |  |  |     set_error_handler('WbErrorHandler', -1 );
 | 
      
        | 281 |  |  |     if (! defined('SYSTEM_RUN')) { define('SYSTEM_RUN', true); }
 | 
      
        | 282 |  |  | // load configuration ---
 | 
      
        | 283 |  |  |     $aCfg = initReadSetupFile();
 | 
      
        | 284 |  |  |     initSetInstallWbConstants($aCfg);
 | 
      
        | 285 |  |  | // ---------------------------
 | 
      
        | 286 |  |  | // get Database connection data from configuration
 | 
      
        | 287 |  |  | if (!defined('ADMIN_DIRECTORY')) { define('ADMIN_DIRECTORY', 'admin'); }
 | 
      
        | 288 |  |  | if (!preg_match('/xx[a-z0-9_][a-z0-9_\-\.]+/i', 'xx'.ADMIN_DIRECTORY)) {
 | 
      
        | 289 |  |  |     throw new RuntimeException('Invalid admin-directory: ' . ADMIN_DIRECTORY);
 | 
      
        | 290 |  |  | }
 | 
      
        | 291 |  |  | if ( !defined('ADMIN_URL')) { define('ADMIN_URL', WB_URL.'/'.ADMIN_DIRECTORY); }
 | 
      
        | 292 |  |  | if ( !defined('ADMIN_PATH')) { define('ADMIN_PATH', WB_PATH.'/'.ADMIN_DIRECTORY); }
 | 
      
        | 293 |  |  | if ( !defined('WB_REL')){
 | 
      
        | 294 |  |  |     $x1 = parse_url(WB_URL);
 | 
      
        | 295 |  |  |     define('WB_REL', (isset($x1['path']) ? $x1['path'] : ''));
 | 
      
        | 296 |  |  | }
 | 
      
        | 297 |  |  | if ( !defined('DOCUMENT_ROOT')) {
 | 
      
        | 298 |  |  |     define('DOCUMENT_ROOT', preg_replace('/'.preg_quote(str_replace('\\', '/', WB_REL), '/').'$/', '', str_replace('\\', '/', WB_PATH)));
 | 
      
        | 299 |  |  |     $_SERVER['DOCUMENT_ROOT'] = DOCUMENT_ROOT;
 | 
      
        | 300 |  |  | }
 | 
      
        | 301 |  |  | if (file_exists(WB_PATH.'/framework/class.database.php')) {
 | 
      
        | 302 |  |  |     // sanitize $_SERVER['HTTP_REFERER']
 | 
      
        | 303 |  |  |     SanitizeHttpReferer(WB_URL);
 | 
      
        | 304 |  |  |     date_default_timezone_set('UTC');
 | 
      
        | 305 |  |  |     // register TWIG autoloader ---
 | 
      
        | 306 |  |  |     $sTmp = dirname(dirname(__FILE__)).'/include/Sensio/Twig/lib/Twig/Autoloader.php';
 | 
      
        | 307 |  |  |     if (!class_exists('Twig_Autoloader') && is_readable($sTmp)){
 | 
      
        | 308 |  |  |         include $sTmp;
 | 
      
        | 309 |  |  |         Twig_Autoloader::register();
 | 
      
        | 310 |  |  |     }
 | 
      
        | 311 |  |  | // register PHPMailer autoloader ---
 | 
      
        | 312 |  |  |     $sTmp = dirname(dirname(__FILE__)).'/include/phpmailer/PHPMailerAutoload.php';
 | 
      
        | 313 |  |  |     if (!function_exists('PHPMailerAutoload') && is_readable($sTmp)) {
 | 
      
        | 314 |  |  |         require($sTmp);
 | 
      
        | 315 |  |  |     }
 | 
      
        | 316 |  |  | 
 | 
      
        | 317 |  |  |     if (!class_exists('database', false)){
 | 
      
        | 318 |  |  |       // load database class
 | 
      
        | 319 |  |  |       require(__DIR__.'/class.database.php');
 | 
      
        | 320 |  |  |       // Create database class
 | 
      
        | 321 |  |  |       $database = new database();
 | 
      
        | 322 |  |  |       $database->sTablePrefix = TABLE_PREFIX;
 | 
      
        | 323 |  |  |     }
 | 
      
        | 324 |  |  | 
 | 
      
        | 325 |  |  |     // activate frontend OutputFilterApi (initialize.php)
 | 
      
        | 326 |  |  |     if (is_readable(WB_PATH .'/modules/output_filter/OutputFilterApi.php')) {
 | 
      
        | 327 |  |  |         if (!function_exists('OutputFilterApi')) {
 | 
      
        | 328 |  |  |             include WB_PATH .'/modules/output_filter/OutputFilterApi.php';
 | 
      
        | 329 |  |  |         }
 | 
      
        | 330 |  |  |     } else {
 | 
      
        | 331 |  |  |         throw new RuntimeException('missing mandatory global OutputFilterApi!');
 | 
      
        | 332 |  |  |     }
 | 
      
        | 333 |  |  |     if (version_compare(PHP_VERSION, '5.4.0', '<')) {
 | 
      
        | 334 |  |  |         @ini_set("magic_quotes_runtime", 0); // Disable magic_quotes_runtime
 | 
      
        | 335 |  |  |         @ini_set("magic_quotes_gpc", 0); // Disable magic_quotes_gpc
 | 
      
        | 336 |  |  |     }
 | 
      
        | 337 |  |  |     if (get_magic_quotes_gpc()) {
 | 
      
        | 338 |  |  |         $unescape = function(&$value, $key) {
 | 
      
        | 339 |  |  |             $value = stripslashes($value);
 | 
      
        | 340 |  |  |         };
 | 
      
        | 341 |  |  |         array_walk_recursive($_POST, $unescape);
 | 
      
        | 342 |  |  |         array_walk_recursive($_GET,  $unescape);
 | 
      
        | 343 |  |  |         array_walk_recursive($_REQUEST, $unescape);
 | 
      
        | 344 |  |  |         array_walk_recursive($_COOKIE, $unescape);
 | 
      
        | 345 |  |  |     }
 | 
      
        | 346 |  |  |     // Get website settings (title, keywords, description, header, and footer)
 | 
      
        | 347 |  |  |     $sql = 'SELECT `name`, `value` FROM `'.TABLE_PREFIX.'settings`';
 | 
      
        | 348 |  |  |     if (($get_settings = $database->query($sql))) {
 | 
      
        | 349 |  |  |         $x = 0;
 | 
      
        | 350 |  |  |         while ($setting = $get_settings->fetchRow(MYSQLI_ASSOC)) {
 | 
      
        | 351 |  |  |             $setting_name  = strtoupper($setting['name']);
 | 
      
        | 352 |  |  |             $setting_value = $setting['value'];
 | 
      
        | 353 |  |  |             if ($setting_value == 'false') {
 | 
      
        | 354 |  |  |                 $setting_value = false;
 | 
      
        | 355 |  |  |             }
 | 
      
        | 356 |  |  |             if ($setting_value == 'true') {
 | 
      
        | 357 |  |  |                 $setting_value = true;
 | 
      
        | 358 |  |  |             }
 | 
      
        | 359 |  |  |             @define($setting_name, $setting_value);
 | 
      
        | 360 |  |  |             $x++;
 | 
      
        | 361 |  |  |         }
 | 
      
        | 362 |  |  |     } else {
 | 
      
        | 363 |  |  |         die($database->get_error());
 | 
      
        | 364 |  |  |     }
 | 
      
        | 365 |  |  |     if (!$x) {
 | 
      
        | 366 |  |  |         throw new RuntimeException('no settings found');
 | 
      
        | 367 |  |  |     }
 | 
      
        | 368 |  |  |     @define('DO_NOT_TRACK', (isset($_SERVER['HTTP_DNT'])));
 | 
      
        | 369 |  |  |     ini_set('display_errors', ((defined('DEBUG')&& (DEBUG==true)) ?'1':'0'));
 | 
      
        | 370 |  |  | 
 | 
      
        | 371 |  |  |     if (!defined('DEBUG')){ define('DEBUG', false); }
 | 
      
        | 372 |  |  |     $string_file_mode = defined('STRING_FILE_MODE')?STRING_FILE_MODE:'0644';
 | 
      
        | 373 |  |  |     @define('OCTAL_FILE_MODE',(int) octdec($string_file_mode));
 | 
      
        | 374 |  |  |     $string_dir_mode = defined('STRING_DIR_MODE')?STRING_DIR_MODE:'0755';
 | 
      
        | 375 |  |  |     @define('OCTAL_DIR_MODE',(int) octdec($string_dir_mode));
 | 
      
        | 376 |  |  | //    $sSecMod = (defined('SECURE_FORM_MODULE') && SECURE_FORM_MODULE != '') ? '.'.SECURE_FORM_MODULE : '';
 | 
      
        | 377 |  |  | //    $sSecMod = WB_PATH.'/framework/SecureForm'.$sSecMod.'.php';
 | 
      
        | 378 |  |  | //    require_once($sSecMod);
 | 
      
        | 379 |  |  |     if (!defined("WB_INSTALL_PROCESS")) {
 | 
      
        | 380 |  |  |     // get CAPTCHA and ASP settings
 | 
      
        | 381 |  |  |         $sql = 'SELECT * FROM `'.TABLE_PREFIX.'mod_captcha_control`';
 | 
      
        | 382 |  |  |         if (($get_settings = $database->query($sql)) &&
 | 
      
        | 383 |  |  |             ($setting = $get_settings->fetchRow(MYSQLI_ASSOC))
 | 
      
        | 384 |  |  |         ) {
 | 
      
        | 385 |  |  |             @define('ENABLED_CAPTCHA', (($setting['enabled_captcha'] == '1') ? true : false));
 | 
      
        | 386 |  |  |             @define('ENABLED_ASP', (($setting['enabled_asp'] == '1') ? true : false));
 | 
      
        | 387 |  |  |             @define('CAPTCHA_TYPE', $setting['captcha_type']);
 | 
      
        | 388 |  |  |             @define('ASP_SESSION_MIN_AGE', (int)$setting['asp_session_min_age']);
 | 
      
        | 389 |  |  |             @define('ASP_VIEW_MIN_AGE', (int)$setting['asp_view_min_age']);
 | 
      
        | 390 |  |  |             @define('ASP_INPUT_MIN_AGE', (int)$setting['asp_input_min_age']);
 | 
      
        | 391 |  |  |         } else {
 | 
      
        | 392 |  |  |             throw new RuntimeException('CAPTCHA-Settings not found');
 | 
      
        | 393 |  |  |         }
 | 
      
        | 394 |  |  |     }
 | 
      
        | 395 |  |  | 
 | 
      
        | 396 |  |  |     // Start a session
 | 
      
        | 397 |  |  |     if (!defined('SESSION_STARTED')) {
 | 
      
        | 398 |  |  |         session_name(APP_NAME.'-sid');
 | 
      
        | 399 |  |  |         @session_start();
 | 
      
        | 400 |  |  |         define('SESSION_STARTED', true);
 | 
      
        | 401 |  |  |     }
 | 
      
        | 402 |  |  |     if (defined('ENABLED_ASP') && ENABLED_ASP && !isset($_SESSION['session_started'])) {
 | 
      
        | 403 |  |  |         $_SESSION['session_started'] = time();
 | 
      
        | 404 |  |  |     }
 | 
      
        | 405 |  |  |     // Get users language
 | 
      
        | 406 |  |  |     if (
 | 
      
        | 407 |  |  |         isset($_GET['lang']) AND
 | 
      
        | 408 |  |  |         $_GET['lang'] != '' AND
 | 
      
        | 409 |  |  |         !is_numeric($_GET['lang']) AND
 | 
      
        | 410 |  |  |         strlen($_GET['lang']) == 2
 | 
      
        | 411 |  |  |     ) {
 | 
      
        | 412 |  |  |         define('LANGUAGE', strtoupper($_GET['lang']));
 | 
      
        | 413 |  |  |         $_SESSION['LANGUAGE']=LANGUAGE;
 | 
      
        | 414 |  |  |     } else {
 | 
      
        | 415 |  |  |         if (isset($_SESSION['LANGUAGE']) AND $_SESSION['LANGUAGE'] != '') {
 | 
      
        | 416 |  |  |             define('LANGUAGE', $_SESSION['LANGUAGE']);
 | 
      
        | 417 |  |  |         } else {
 | 
      
        | 418 |  |  |             define('LANGUAGE', DEFAULT_LANGUAGE);
 | 
      
        | 419 |  |  |         }
 | 
      
        | 420 |  |  |     }
 | 
      
        | 421 |  |  |     $sCachePath = dirname(__DIR__).'/temp/cache/';
 | 
      
        | 422 |  |  |     if (!file_exists($sCachePath)) {
 | 
      
        | 423 |  |  |         if (!mkdir($sCachePath)) { $sCachePath = dirname(__DIR__).'/temp/'; }
 | 
      
        | 424 |  |  |     }
 | 
      
        | 425 |  |  |     // Load Language file(s)
 | 
      
        | 426 |  |  |     $sCurrLanguage = '';
 | 
      
        | 427 |  |  |     $slangFile = WB_PATH.'/languages/EN.php';
 | 
      
        | 428 |  |  |     if (is_readable($slangFile)) {
 | 
      
        | 429 |  |  |         require $slangFile;
 | 
      
        | 430 |  |  |         $sCurrLanguage ='EN';
 | 
      
        | 431 |  |  |     }
 | 
      
        | 432 |  |  |     if ($sCurrLanguage != DEFAULT_LANGUAGE) {
 | 
      
        | 433 |  |  |         $slangFile = WB_PATH.'/languages/'.DEFAULT_LANGUAGE.'.php';
 | 
      
        | 434 |  |  |         if (is_readable($slangFile)) {
 | 
      
        | 435 |  |  |             require $slangFile;
 | 
      
        | 436 |  |  |             $sCurrLanguage = DEFAULT_LANGUAGE;
 | 
      
        | 437 |  |  |         }
 | 
      
        | 438 |  |  |     }
 | 
      
        | 439 |  |  |     if ($sCurrLanguage != LANGUAGE) {
 | 
      
        | 440 |  |  |         $slangFile = WB_PATH.'/languages/'.LANGUAGE.'.php';
 | 
      
        | 441 |  |  |         if (is_readable($slangFile)) {
 | 
      
        | 442 |  |  |             require $slangFile;
 | 
      
        | 443 |  |  |         }
 | 
      
        | 444 |  |  |     }
 | 
      
        | 445 |  |  |     if (!class_exists('Translate', false)) {
 | 
      
        | 446 |  |  |         include __DIR__.'/Translate.php';
 | 
      
        | 447 |  |  |     }
 | 
      
        | 448 |  |  |     $oTrans = Translate::getInstance();
 | 
      
        | 449 |  |  |     $oTrans->initialize(array('EN', DEFAULT_LANGUAGE, LANGUAGE), $sCachePath); // 'none'
 | 
      
        | 450 |  |  |     // Get users timezone
 | 
      
        | 451 |  |  |     if (isset($_SESSION['TIMEZONE'])) {
 | 
      
        | 452 |  |  |         define('TIMEZONE', $_SESSION['TIMEZONE']);
 | 
      
        | 453 |  |  |     } else {
 | 
      
        | 454 |  |  |         define('TIMEZONE', DEFAULT_TIMEZONE);
 | 
      
        | 455 |  |  |     }
 | 
      
        | 456 |  |  |     // Get users date format
 | 
      
        | 457 |  |  |     if (isset($_SESSION['DATE_FORMAT'])) {
 | 
      
        | 458 |  |  |         define('DATE_FORMAT', $_SESSION['DATE_FORMAT']);
 | 
      
        | 459 |  |  |     } else {
 | 
      
        | 460 |  |  |         define('DATE_FORMAT', DEFAULT_DATE_FORMAT);
 | 
      
        | 461 |  |  |     }
 | 
      
        | 462 |  |  |     // Get users time format
 | 
      
        | 463 |  |  |     if (isset($_SESSION['TIME_FORMAT'])) {
 | 
      
        | 464 |  |  |         define('TIME_FORMAT', $_SESSION['TIME_FORMAT']);
 | 
      
        | 465 |  |  |     } else {
 | 
      
        | 466 |  |  |         define('TIME_FORMAT', DEFAULT_TIME_FORMAT);
 | 
      
        | 467 |  |  |     }
 | 
      
        | 468 |  |  |     // Set Theme dir
 | 
      
        | 469 |  |  |     define('THEME_URL', WB_URL.'/templates/'.DEFAULT_THEME);
 | 
      
        | 470 |  |  |     define('THEME_PATH', WB_PATH.'/templates/'.DEFAULT_THEME);
 | 
      
        | 471 |  |  |     // extended wb_settings
 | 
      
        | 472 |  |  |     define('EDIT_ONE_SECTION', false);
 | 
      
        | 473 |  |  |     define('EDITOR_WIDTH', 0);
 | 
      
        | 474 |  |  | }
 | 
      
        | 475 |  |  | 
 | 
      
        | 476 |  |  | function newAdmin($section_name= '##skip##', $section_permission = 'start', $auto_header = true, $auto_auth = true)
 | 
      
        | 477 |  |  | {
 | 
      
        | 478 |  |  |     if (isset($GLOBALS['admin']) && $GLOBALS['admin'] instanceof admin) {
 | 
      
        | 479 |  |  |         unset($GLOBALS['admin']);
 | 
      
        | 480 |  |  |         usleep(10000);
 | 
      
        | 481 |  |  |     }
 | 
      
        | 482 |  |  |     return new admin($section_name, $section_permission, $auto_header, $auto_auth);
 | 
      
        | 483 |  |  | }
 |