Index: branches/2.8.x/CHANGELOG
===================================================================
--- branches/2.8.x/CHANGELOG	(revision 1982)
+++ branches/2.8.x/CHANGELOG	(revision 1983)
@@ -11,6 +11,12 @@
 ! = Update/Change
 ===============================================================================
 
+19 Oct-2013 Build 1983 Dietmar Woellbrink (Luisehahne)
+! /framework/class.wb.php::getLanguagesDetailsInUsed() optimized
++ /framework/class.wb.php::getAvailableLanguagesObjectInstance()
+! /framework/class.wb.php::getLanguagesInUsed() method optimized
+! /framework/class.frontend.php update changes made in class.wb.php
+! /framework/functions.php::rebuild_all_accessfiles() is no longer creating FolderProtectFiles
 17 Oct-2013 Build 1982 Manuela v.d.Decken(DarkViper)
 # /framework/AccessFile  little Typofixes
 + /framework/AccessFileHelper added new method getDelTreeLog() and add const LOG_PRESERVE and LOG_CLEAR
Index: branches/2.8.x/wb/admin/interface/version.php
===================================================================
--- branches/2.8.x/wb/admin/interface/version.php	(revision 1982)
+++ branches/2.8.x/wb/admin/interface/version.php	(revision 1983)
@@ -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.3');
-if(!defined('REVISION')) define('REVISION', '1982');
+if(!defined('REVISION')) define('REVISION', '1983');
 if(!defined('SP')) define('SP', '');
Index: branches/2.8.x/wb/framework/class.wb.php
===================================================================
--- branches/2.8.x/wb/framework/class.wb.php	(revision 1982)
+++ branches/2.8.x/wb/framework/class.wb.php	(revision 1983)
@@ -30,6 +30,12 @@
 
 class wb extends SecureForm
 {
+/** @var object instance of the database object */
+	protected $_oDb      = null;
+/** @var object instance holds several values from the application global scope */
+	protected $_oReg     = null;
+/** @var object instance holds all of the translations */
+	protected $_oTrans   = null;
 
  	public $password_chars = 'a-zA-Z0-9\_\-\!\#\*\+\@\$\&\:';	// General initialization function
 
@@ -36,40 +42,80 @@
 	// performed when frontend or backend is loaded.
 	public function  __construct($mode = SecureForm::FRONTEND) {
 		parent::__construct($mode);
+
+		$this->_oDb    = WbDatabase::getInstance();
+		$this->_oReg   = WbAdaptor::getInstance();
+		$this->_oTrans = Translate::getInstance();
 	}
 
 /**
  *
  *
+ * @return object instance of the database object of all visible languages with defined fields
+ *
+ */
+	public function getAvailableLanguagesObjectInstance( ) {
+
+			$sql = 'SELECT `directory`,`name` '
+			     . 'FROM `'.$this->_oDb->TablePrefix.'addons` '
+		         . 'WHERE `type` = \'language\' '
+		         . 'ORDER BY `directory`';
+        return ($this->_oDb->query($sql));
+	}
+
+
+/**
+ *
+ *
+ * @return array of all visible languages with defined fields
+ *
+ */
+	public function getAvailableLanguages( ) {
+        $aRetval = array();
+        if($oRes = $this->getAvailableLanguagesObjectInstance())
+        {
+            while($aRow = $oRes->fetchRow(MYSQL_ASSOC))
+            {
+                $aRetval[$aRow['directory']] = $aRow['name'];
+            }
+        }
+        
+        return ( $aRetval);
+	}
+
+/**
+ *
+ *
  * @return array of first visible language pages with defined fields
  *
  */
-	public function GetLanguagesDetailsInUsed ( ) {
-        global $database;
+	public function getLanguagesDetailsInUsed ( ) {
+//        global $database;
         $aRetval = array();
-        $sql =
-            'SELECT DISTINCT `language`'.
-            ', `page_id`,`level`,`parent`,`root_parent`,`page_code`,`link`,`language`'.
-            ', `visibility`,`viewing_groups`,`viewing_users`,`position` '.
-            'FROM `'.TABLE_PREFIX.'pages` '.
-            'WHERE `level`= \'0\' '.
-              'AND `root_parent`=`page_id` '.
-              'AND `visibility`!=\'none\' '.
-              'AND `visibility`!=\'hidden\' '.
-            'GROUP BY `language` '.
-            'ORDER BY `position`';
-
-            if($oRes = $database->query($sql))
+		$sql = 'SELECT DISTINCT `language`, `page_id`, `level`, `parent`, `root_parent`, '
+			 .                 '`page_code`, `link`, `language`, `visibility`, '
+			 .                 '`viewing_groups`,`viewing_users`,`position` '
+			 . 'FROM `'.$this->_oDb->TablePrefix.'pages` '
+			 . 'WHERE `level`= \'0\' '
+			 .       'AND `root_parent`=`page_id` '
+			 .       'AND `visibility`!=\'none\' '
+			 .       'AND `visibility`!=\'hidden\' '
+			 . 'GROUP BY `language` '
+			 . 'ORDER BY `position`';
+        if($oRes = $this->_oDb->query($sql))
+        {
+            while($aRow = $oRes->fetchRow(MYSQL_ASSOC))
             {
-                while($page = $oRes->fetchRow(MYSQL_ASSOC))
-                {
-                    if(!$this->page_is_visible($page)) {continue;}
-                    $aRetval[$page['language']] = $page;
-                }
+                if(!$this->page_is_visible($aRow)) {continue;}
+                $aRetval[$aRow['language']] = $aRow;
             }
+        }
         return $aRetval;
 	}
 
+
+
+
 /**
  *
  *
@@ -76,8 +122,10 @@
  * @return comma separate list of first visible languages
  *
  */
-	public function GetLanguagesInUsed ( ) {
-        return implode(',', array_keys($this->GetLanguagesDetailsInUsed()));
+	public function getLanguagesInUsed ( ) {
+        $aRetval = array_keys($this->getLanguagesDetailsInUsed()) ;
+        if(sizeof($aRetval)==0) { return null; }
+        return implode(',', $aRetval);
   	}
 
 
Index: branches/2.8.x/wb/framework/class.frontend.php
===================================================================
--- branches/2.8.x/wb/framework/class.frontend.php	(revision 1982)
+++ branches/2.8.x/wb/framework/class.frontend.php	(revision 1983)
@@ -80,7 +80,7 @@
  */
 
         if( $this->get_session('session_started') ) {
-            $_SESSION['USED_LANGUAGES'] = $this->GetLanguagesInUsed();
+            $_SESSION['USED_LANGUAGES'] = $this->getLanguagesInUsed();
         }
 
 		$maintance = ( defined('SYSTEM_LOCKED') && (SYSTEM_LOCKED==true) ? true : false );
@@ -173,7 +173,7 @@
 
 		$bCanRedirect = false;
 // set defaults 
-		$aLanguagesDetailsInUsed = $this->GetLanguagesDetailsInUsed();
+		$aLanguagesDetailsInUsed = $this->getLanguagesDetailsInUsed();
 		$_SESSION['HTTP_REFERER'] = WB_URL;
 		$_SESSION['PAGE_ID'] = $this->page_id;
 		if($this->page_id != 0) {
@@ -189,7 +189,7 @@
 			$this->page = $get_page->fetchRow(MYSQL_ASSOC);
 
 		//  Check if the page language is also the selected language. If not, send headers again.
-			if (($this->page['language'] != LANGUAGE) && $this->FrontendLanguage )
+			if (($this->page['language'] != LANGUAGE) && $this->FrontendLanguage && ($this->_oReg->PageLanguages) )
             {
             //  check if there is an query-string
 				if(isset($_SERVER['QUERY_STRING']) && $_SERVER['QUERY_STRING'] != '') {
Index: branches/2.8.x/wb/framework/functions.php
===================================================================
--- branches/2.8.x/wb/framework/functions.php	(revision 1982)
+++ branches/2.8.x/wb/framework/functions.php	(revision 1983)
@@ -50,6 +50,7 @@
 				continue;
 			}
 		}
+        clearstatcache();
 		return true;
 	}	
 	return false;
@@ -1452,8 +1453,10 @@
 	{
 		$oDb = WbDatabase::getInstance();
 		$oReg = WbAdaptor::getInstance();
+		$aRetval = array();
 	// try to remove access files and build new folder protect files
         $sTreeToDelete = $oReg->AppPath.$oReg->PagesDir;
+
     	if(($sTreeToDelete!='') && is_writeable($sTreeToDelete)==true)
 		{
 			$aDeleteLog = array();
@@ -1461,9 +1464,6 @@
 		// show details if debug is set
             if($bShowDetails) { $aRetval = $aDeleteLog; }
     	}
-	// set logging informations
-		$aRetval = array_merge((isset($aRetval) ? $aRetval : array()),
-		                       createFolderProtectFile(rtrim( $oReg->AppPath.$oReg->PagesDir, '/') ));
 	// Reformat/rebuild all existing access files
 		$sql  = 'SELECT `page_id`,`root_parent`,`parent`,`link`,`level`,`page_trail` '
 		      . 'FROM `'.$oDb->TablePrefix.'pages` '
