Index: branches/2.8.x/CHANGELOG
===================================================================
--- branches/2.8.x/CHANGELOG	(revision 2128)
+++ branches/2.8.x/CHANGELOG	(revision 2129)
@@ -11,6 +11,9 @@
 ! = Update/Change
 ===============================================================================
 
+19 Jun -2015 Build 2129 Manuela v.d.Decken(DarkViper)
+# framework/WbDatabase typo corrections
+! framework/initialize.php added ErrorHandler and ERROR-LOG file
 18 Jun -2015 Build 2128 Manuela v.d.Decken(DarkViper)
 # framework/WbDatabase correction in ::fetchAsscoc()
 18 Jun -2015 Build 2127 Manuela v.d.Decken(DarkViper)
Index: branches/2.8.x/wb/admin/interface/version.php
===================================================================
--- branches/2.8.x/wb/admin/interface/version.php	(revision 2128)
+++ branches/2.8.x/wb/admin/interface/version.php	(revision 2129)
@@ -51,5 +51,5 @@
 
 // check if defined to avoid errors during installation (redirect to admin panel fails if PHP error/warnings are enabled)
 if(!defined('VERSION')) define('VERSION', '2.8.4');
-if(!defined('REVISION')) define('REVISION', '2128');
+if(!defined('REVISION')) define('REVISION', '2129');
 if(!defined('SP')) define('SP', '');
Index: branches/2.8.x/wb/framework/WbDatabaseHelper.php
===================================================================
--- branches/2.8.x/wb/framework/WbDatabaseHelper.php	(revision 2128)
+++ branches/2.8.x/wb/framework/WbDatabaseHelper.php	(revision 2129)
@@ -75,7 +75,7 @@
         $keys = 0;
         $sql = 'SHOW INDEX FROM `'.$table_name.'`';
         if (($res_keys = $this->doQuery($sql))) {
-            while (($rec_key = $res_keys->fetchRow(MYSQL_ASSOC))) {
+            while (($rec_key = $res_keys->fetchAssoc())) {
                 if ( $rec_key['Key_name'] == $index_name ) {
                     $keys++;
                 }
@@ -114,7 +114,7 @@
                 return ( $this->isField($table_name, $field_name) ) ? true : false;
             }
         } else {
-            $this->set_error('field \''.$field_name.'\' already exists');
+            $this->setError('field \''.$field_name.'\' already exists');
         }
         return false;
     }
@@ -257,7 +257,7 @@
         $engineValue = (version_compare($mysqlVersion, '5.0') < 0) ? 'Type' : 'Engine';
         $sql = 'SHOW TABLE STATUS FROM `' . $this->sDbName . '` LIKE \'' . $table . '\'';
         if (($result = $this->doQuery($sql))) {
-            if (($row = $result->fetchRow(MYSQL_ASSOC))) {
+            if (($row = $result->fetchAssoc())) {
                 $retVal = $row[$engineValue];
             }
         }
@@ -290,7 +290,7 @@
         $retval = true;
         $sNameValPairs = '';
         foreach ($key as $index => $val) {
-            $sNameValPairs .= ', (\''.$index.'\', \''.$val.'\')';
+            $sNameValPairs .= ', (\''.$index.'\', \''.$oDb->escapeString($val).'\')';
         }
         $sValues = ltrim($sNameValPairs, ', ');
         if ($sValues != '') {
Index: branches/2.8.x/wb/framework/WbDatabase.php
===================================================================
--- branches/2.8.x/wb/framework/WbDatabase.php	(revision 2128)
+++ branches/2.8.x/wb/framework/WbDatabase.php	(revision 2129)
@@ -185,11 +185,11 @@
         $oRetval = null;
         $this->iQueryCount++;
         $mysql = new mysql($this->oDbHandle, $statement);
-        $this->set_error($mysql->error($this->oDbHandle));
+        $this->setError($mysql->error($this->oDbHandle));
         if (!$mysql->error()) {
             $oRetval = $mysql;
         }
-        $this->set_error($mysql->error($this->oDbHandle));
+        $this->setError($mysql->error($this->oDbHandle));
         return $oRetval;
     }
 /**
@@ -439,7 +439,7 @@
  */
     public function fetchAssoc()
     {
-        return mysqli_fetch_row($this->result);
+        return mysqli_fetch_assoc($this->result);
     }
 /**
  * fetchArray
@@ -477,7 +477,7 @@
  */
     public function fetchAll($iType = MYSQLI_ASSOC)
     {
-        $iType = $iType != MYSQLI_NUM ? MYSQL_ASSOC : MYSQLI_NUM;
+        $iType = $iType != MYSQLI_NUM ? MYSQLI_ASSOC : MYSQLI_NUM;
         return mysqli_fetch_all($this->result, $iType);
     }
 /**
Index: branches/2.8.x/wb/framework/initialize.php
===================================================================
--- branches/2.8.x/wb/framework/initialize.php	(revision 2128)
+++ branches/2.8.x/wb/framework/initialize.php	(revision 2129)
@@ -215,9 +215,40 @@
         return $aRetval;
     }
 
+    function WbErrorHandler($iErrorCode, $sErrorText, $sErrorFile, $iErrorLine)
+    {
+        if (!(error_reporting() & $iErrorCode)) {
+            return false;
+        }
+        $bRetval = false;
+        $aErrors = array(
+            E_USER_DEPRECATED => 'E_USER_DEPRECATED',
+            E_USER_NOTICE     => 'E_USER_NOTICE',
+            E_USER_WARNING    => 'E_USER_WARNING',
+            E_DEPRECATED      => 'E_DEPRECATED',
+            E_NOTICE          => 'E_NOTICE',
+            E_WARNING         => 'E_WARNING',
+            E_CORE_WARNING    => 'E_CORE_WARNING',
+            E_COMPILE_WARNING => 'E_COMPILE_WARNING',
+            E_STRICT          => 'E_STRICT',
+        );
+        if (array_key_exists($iErrorCode, $aErrors)) {
+            $sErrorType = $aErrors[$iErrorCode];
+            $bRetval = true;
+        }
+        $aBt= debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS);
+        $sEntry = date('c').' '.'['.$sErrorType.'] '.str_replace(dirname(__DIR__), '', $sErrorFile).':['.$iErrorLine.'] '
+                . ' from '.str_replace(dirname(__DIR__), '', $aBt[2]['file']).':['.$aBt[2]['line'].'] '
+                . (@$aBt[2]['class'] ? $aBt[2]['class'].$aBt[2]['type'] : '').$aBt[2]['function'].' '
+                . '"'.$sErrorText.'"'.PHP_EOL;
+        file_put_contents(dirname(__DIR__).'/temp/ERROR.LOG', $sEntry, FILE_APPEND);
+        return $bRetval;
+    }
 /* ***************************************************************************************
  * Start initialization                                                                  *
  ****************************************************************************************/
+// activate errorhandler
+    set_error_handler('WbErrorHandler');
 // reset global output buffering
     while (ob_get_level()) { ob_end_clean(); }
 // test for existing and active old config.php
@@ -242,6 +273,7 @@
     if (! defined('SYSTEM_RUN')) { define('SYSTEM_RUN', true); }
 // load configuration ---
     $aCfg = initReadSetupFile();
+
 // sanitize $_SERVER['HTTP_REFERER'] ---
     initSetInstallPathConstants();
     initSanitizeHttpReferer(WB_URL);
@@ -294,50 +326,63 @@
 // load global settings from database and define global consts from ---
     $sql = 'SELECT `name`, `value` FROM `'.$oDb->TablePrefix.'settings`';
     if(($oSettings = $oDb->doQuery($sql))) {
-        if(!$oSettings->numRows()) { throw new AppException('no settings found'); }
-        while($aSetting = $oSettings->fetchRow(MYSQL_ASSOC)) {
-            //sanitize true/false values
-            $aSetting['value'] = ($aSetting['value'] == 'true'
-                                  ? true
-                                  : ($aSetting['value'] == 'false'
-                                     ? false
-                                     : $aSetting['value'])
-                                 );
-            $sSettingName = strtoupper($aSetting['name']);
-            switch($sSettingName):
-                case 'STRING_FILE_MODE':
-                    $iTmp = ((intval(octdec($aSetting['value'])) & ~0111)|0600);
-                    if(!defined('OCTAL_FILE_MODE')) { define('OCTAL_FILE_MODE', $iTmp); } // deprecated
-                    if(!defined('FILE_MODE_OCTAL')) { define('FILE_MODE_OCTAL', $iTmp); }
-                    if(!defined('STRING_FILE_MODE')) { define('STRING_FILE_MODE', sprintf('0%03o', $iTmp)); } // deprecated
-                    if(!defined('FILE_MODE_STRING')) { define('FILE_MODE_STRING', sprintf('0%03o', $iTmp)); }
-                    break;
-                case 'STRING_DIR_MODE':
-                    $iTmp = (intval(octdec($aSetting['value'])) |0711);
-                    if(!defined('OCTAL_DIR_MODE')) { define('OCTAL_DIR_MODE', $iTmp); } // deprecated
-                    if(!defined('DIR_MODE_OCTAL')) { define('DIR_MODE_OCTAL', $iTmp); }
-                    if(!defined('STRING_DIR_MODE')) { define('STRING_DIR_MODE', sprintf('0%03o', $iTmp)); } // deprecated
-                    if(!defined('DIR_MODE_STRING')) { define('DIR_MODE_STRING', sprintf('0%03o', $iTmp)); }
-                    break;
-                case 'PAGES_DIRECTORY':
-                    // sanitize pages_directory
-                    $sTmp = trim($aSetting['value'], '/');
-                    $sTmp = ($sTmp == '' ? '' : '/'.$sTmp);
-                    if(!defined('PAGES_DIRECTORY')) { define('PAGES_DIRECTORY', $sTmp); }
-                    break;
-                default: // make global const from setting
-                    if(!defined($sSettingName)) { define($sSettingName, $aSetting['value']); }
-                    break;
-            endswitch;
+        if (($aRecords = $oSettings->fetchAll(MYSQLI_NUM))) {
+            $iNum = sizeof($aRecords);
+            for ($i = 0; $i < $iNum; $i++) {
+                $aSetting = $aRecords[$i];
+                //sanitize true/false values
+                $aSetting['value'] = ($aSetting['value'] == 'true'
+                                      ? true
+                                      : ($aSetting['value'] == 'false'
+                                         ? false
+                                         : $aSetting['value'])
+                                     );
+                $sSettingName = strtoupper($aSetting['name']);
+                switch($sSettingName):
+                    case 'STRING_FILE_MODE':
+                        $iTmp = ((intval(octdec($aSetting['value'])) & ~0111)|0600);
+                        if(!defined('OCTAL_FILE_MODE')) { define('OCTAL_FILE_MODE', $iTmp); } // deprecated
+                        if(!defined('FILE_MODE_OCTAL')) { define('FILE_MODE_OCTAL', $iTmp); }
+                        if(!defined('STRING_FILE_MODE')) { define('STRING_FILE_MODE', sprintf('0%03o', $iTmp)); } // deprecated
+                        if(!defined('FILE_MODE_STRING')) { define('FILE_MODE_STRING', sprintf('0%03o', $iTmp)); }
+                        break;
+                    case 'STRING_DIR_MODE':
+                        $iTmp = (intval(octdec($aSetting['value'])) |0711);
+                        if(!defined('OCTAL_DIR_MODE')) { define('OCTAL_DIR_MODE', $iTmp); } // deprecated
+                        if(!defined('DIR_MODE_OCTAL')) { define('DIR_MODE_OCTAL', $iTmp); }
+                        if(!defined('STRING_DIR_MODE')) { define('STRING_DIR_MODE', sprintf('0%03o', $iTmp)); } // deprecated
+                        if(!defined('DIR_MODE_STRING')) { define('DIR_MODE_STRING', sprintf('0%03o', $iTmp)); }
+                        break;
+                    case 'PAGES_DIRECTORY':
+                        // sanitize pages_directory
+                        $sTmp = trim($aSetting['value'], '/');
+                        $sTmp = ($sTmp == '' ? '' : '/'.$sTmp);
+                        if(!defined('PAGES_DIRECTORY')) { define('PAGES_DIRECTORY', $sTmp); }
+                        break;
+                    default: // make global const from setting
+                        if(!defined($sSettingName)) { define($sSettingName, $aSetting['value']); }
+                        break;
+                endswitch;
+            }
+        } else {
+            throw new AppException('no settings found');
         }
-    }else { throw new AppException($database->get_error()); }
+    } else {
+        throw new AppException($oDb->getError());
+    }
+    $oReg->getWbConstants();
 // set error-reporting from loaded settings ---
-    if(intval(ER_LEVEL) > 0 ) {
-        error_reporting(ER_LEVEL);
-        if( intval(ini_get ( 'display_errors' )) == 0 ) {
-            ini_set('display_errors', 1);
-        }
+    $iErrorLevel = intval(ER_LEVEL);
+    if ($iErrorLevel >= 0 && $iErrorLevel <= E_ALL) {
+        error_reporting($iErrorLevel);
+    } else {
+    // on invalid value in ER_LEVEL activate E_ALL
+        error_reporting(E_ALL);
     }
+// activate display_errors
+    if( intval(ini_get ( 'display_errors' )) == 0 ) {
+        ini_set('display_errors', 1);
+    }
 // Start a session ---
     if(!defined('SESSION_STARTED')) {
         session_name(APP_NAME.'_session_id');
@@ -367,10 +412,10 @@
 // *** begin deprecated part *************************************************************
 // load settings for use in Captch and ASP module
     if (!defined('WB_INSTALL_PROCESS') && !defined('ENABLED_CAPTCHA')) {
-        $sql = 'SELECT * FROM `'.TABLE_PREFIX.'mod_captcha_control`';
+        $sql = 'SELECT * FROM `'.$oDb->TablePrefix.'mod_captcha_control`';
         // request settings from database
-        if(($oSettings = $database->query($sql))) {
-            if(($aSetting = $oSettings->fetchRow(MYSQL_ASSOC))) {
+        if(($oSettings = $oDb->doQuery($sql))) {
+            if(($aSetting = $oSettings->fetchAssoc())) {
                 define('ENABLED_CAPTCHA', ($aSetting['enabled_captcha'] == '1'));
                 define('ENABLED_ASP', ($aSetting['enabled_asp'] == '1'));
                 define('CAPTCHA_TYPE', $aSetting['captcha_type']);
