Index: branches/2.8.x/CHANGELOG
===================================================================
--- branches/2.8.x/CHANGELOG	(revision 2057)
+++ branches/2.8.x/CHANGELOG	(revision 2058)
@@ -11,6 +11,9 @@
 ! = Update/Change
 ===============================================================================
 
+01 Jan-2014 Build 2058 Manuela v.d.Decken(DarkViper)
+! change wysiwyg module from filterMediaRel to filterReplaceSysvar
+! change wb::ReplaceAbsoluteMediaUrl from filterMediaRel to filterReplaceSysvar
 01 Jan-2014 Build 2057 Manuela v.d.Decken(DarkViper)
 ! replace filterMediaRel by filterReplaceSysvar in module/output_filter
 + add OutputFilterApi in module/outputfilter
Index: branches/2.8.x/wb/admin/interface/version.php
===================================================================
--- branches/2.8.x/wb/admin/interface/version.php	(revision 2057)
+++ branches/2.8.x/wb/admin/interface/version.php	(revision 2058)
@@ -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', '2057');
+if(!defined('REVISION')) define('REVISION', '2058');
 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 2057)
+++ branches/2.8.x/wb/framework/class.wb.php	(revision 2058)
@@ -647,7 +647,7 @@
 		// $message = preg_replace('/[\r\n]/', '<br \>', $message);
 
 		// create PHPMailer object and define default settings
-		$myMail = new wbmailer();
+		$myMail = new WbMailer();
 		// set user defined from address
 		if ($fromaddress!='') {
 			if($fromname!='') $myMail->FromName = $fromname;  // FROM-NAME
@@ -750,15 +750,15 @@
  *              independend placeholder
  */
 	public function ReplaceAbsoluteMediaUrl($sContent){
+        $oReg = WbAdaptor::getInstance();
 		if(ini_get('magic_quotes_gpc')==true){
 			$sContent = $this->strip_slashes($sContent);
 		}
 		if(is_string($sContent)) {
-			$sMediaUrl = WB_URL.MEDIA_DIRECTORY;
-			$aSearchfor = array('@(<[^>]*=\s*")('.preg_quote($sMediaUrl).')([^">]*".*>)@siU',
-			                    '@(<[^>]*=\s*")('.preg_quote(WB_URL).')([^">]*".*>)@siU');
-			$aReplacements = array('$1{SYSVAR:MEDIA_REL}$3',
-			                       '$1{SYSVAR:WB_REL}$3');
+			$aSearchfor = array('@(<[^>]*=\s*")('.preg_quote($oReg->AppUrl.$oReg->MediaDir).')([^">]*".*>)@siU',
+			                    '@(<[^>]*=\s*")('.preg_quote($oReg->AppUrl).')([^">]*".*>)@siU');
+			$aReplacements = array('$1{SYSVAR:AppUrl.MediaDir}$3',
+			                       '$1{SYSVAR:AppUrl}$3');
 			$sContent = preg_replace($aSearchfor, $aReplacements, $sContent );
 		}
 		return $sContent;
Index: branches/2.8.x/wb/modules/wysiwyg/view.php
===================================================================
--- branches/2.8.x/wb/modules/wysiwyg/view.php	(revision 2057)
+++ branches/2.8.x/wb/modules/wysiwyg/view.php	(revision 2058)
@@ -21,12 +21,12 @@
 	throw new IllegalFileException();
 }
 /* -------------------------------------------------------- */
-$sMediaUrl = WB_URL.MEDIA_DIRECTORY;
+//$sMediaUrl = WB_URL.MEDIA_DIRECTORY;
 // Get content 
-$content = '';
-$sql = 'SELECT `content` FROM `'.TABLE_PREFIX.'mod_wysiwyg` WHERE `section_id`='.(int)$section_id;
+$sql = 'SELECT `content` FROM `'.TABLE_PREFIX.'mod_wysiwyg` '
+     . 'WHERE `section_id`='.(int)$section_id;
 if(($content = $database->get_one($sql))) {
-	$content = str_replace('{SYSVAR:MEDIA_REL}', $sMediaUrl, $content );
-	$content = str_replace('{SYSVAR:WB_REL}', WB_URL, $content );
+    echo $content;
+} else {
+    echo '';
 }
-echo $content;
Index: branches/2.8.x/wb/modules/wysiwyg/modify.php
===================================================================
--- branches/2.8.x/wb/modules/wysiwyg/modify.php	(revision 2057)
+++ branches/2.8.x/wb/modules/wysiwyg/modify.php	(revision 2058)
@@ -27,8 +27,12 @@
 // Get page content
 $sql = 'SELECT `content` FROM `'.TABLE_PREFIX.'mod_wysiwyg` WHERE `section_id`='.(int)$section_id;
 if (($content = $database->get_one($sql)) !== null) {
-	$content = str_replace('{SYSVAR:MEDIA_REL}', $sMediaUrl, $content);
-	$content = htmlspecialchars(str_replace('{SYSVAR:WB_REL}', WB_URL, $content));
+    $sFilterApi = WB_PATH.'/modules/output_filter/OutputFilterApi.php';
+    if (is_readable($sFilterApi)) {
+        require_once($sFilterApi);
+        $content = OutputFilterApi('ReplaceSysvar', $content);
+    }
+	$content = htmlspecialchars($content);
 } else {
  $content = 'There is an relation error in the database.';
  $sql = 'INSERT INTO `'.TABLE_PREFIX.'mod_wysiwyg` SET '
Index: branches/2.8.x/wb/modules/wysiwyg/upgrade.php
===================================================================
--- branches/2.8.x/wb/modules/wysiwyg/upgrade.php	(revision 2057)
+++ branches/2.8.x/wb/modules/wysiwyg/upgrade.php	(revision 2058)
@@ -24,7 +24,8 @@
 
 	function mod_wysiwyg_upgrade ($bDebug=false) {
 		global $OK ,$FAIL;
-		$database=WbDatabase::getInstance();
+		$oDb = WbDatabase::getInstance();
+        $oReg = WbAdaptor::getInstance();
 		$msg = array();
 		$callingScript = $_SERVER["SCRIPT_NAME"];
 		// check if upgrade startet by upgrade-script to echo a message
@@ -42,66 +43,90 @@
 			return ( ($globalStarted==true ) ? $globalStarted : $msg);
 		} else {
 			for($x=0; $x<sizeof($aTable);$x++) {
-				if(($sOldType = $database->getTableEngine($database->TablePrefix.$aTable[$x]))) {
+				if(($sOldType = $oDb->getTableEngine($oDb->TablePrefix.$aTable[$x]))) {
 					if(('myisam' != strtolower($sOldType))) {
-						if(!$database->query('ALTER TABLE `'.$database->TablePrefix.$aTable[$x].'` Engine = \'MyISAM\' ')) {
-							$msg[] = $database->get_error();
+						if(!$oDb->query('ALTER TABLE `'.$oDb->TablePrefix.$aTable[$x].'` Engine = \'MyISAM\' ')) {
+							$msg[] = $oDb->get_error();
 						} else{
-							$msg[] = 'TABLE `'.$database->TablePrefix.$aTable[$x].'` changed to Engine = \'MyISAM\''." $OK";
+							$msg[] = 'TABLE `'.$oDb->TablePrefix.$aTable[$x].'` changed to Engine = \'MyISAM\''." $OK";
 						}
 					} else {
-						 $msg[] = 'TABLE `'.$database->TablePrefix.$aTable[$x].'` has Engine = \'MyISAM\''." $OK";
+						 $msg[] = 'TABLE `'.$oDb->TablePrefix.$aTable[$x].'` has Engine = \'MyISAM\''." $OK";
 					}
 				} else {
-					$msg[] = $database->get_error();
+					$msg[] = $oDb->get_error();
 				}
 			}
 // add change or missing index
-			$sTable = $database->TablePrefix.'mod_wysiwyg';
-			if($database->index_exists($sTable, 'PRIMARY')) {
-				$sql = 'ALTER TABLE `'.$database->DbName.'`.`'.$sTable.'` DROP PRIMARY KEY';
-				if(!$database->query($sql)) {
-					$msg[] = ''.$database->get_error();
+			$sTable = $oDb->TablePrefix.'mod_wysiwyg';
+			if($oDb->index_exists($sTable, 'PRIMARY')) {
+				$sql = 'ALTER TABLE `'.$oDb->DbName.'`.`'.$sTable.'` DROP PRIMARY KEY';
+				if(!$oDb->query($sql)) {
+					$msg[] = ''.$oDb->get_error();
 				}
 			}
-			if(!$database->index_add($sTable, '', 'section_id', 'PRIMARY')) {
-				$msg[] = ''.$database->get_error();
+			if(!$oDb->index_add($sTable, '', 'section_id', 'PRIMARY')) {
+				$msg[] = ''.$oDb->get_error();
 			} else {
 				$msg[] = 'Create PRIMARY KEY ( `section_id` )'." $OK";
 			}
 // change table structure
-			$sTable = $database->TablePrefix.'mod_wysiwyg';
+			$sTable = $oDb->TablePrefix.'mod_wysiwyg';
 			$sDescription = 'LONGTEXT NOT NULL';
 			$sFieldName = 'text';
-			if(!$database->field_modify($sTable,$sFieldName,$sDescription)) {
-				$msg[] = ''.$database->get_error();
+			if(!$oDb->field_modify($sTable,$sFieldName,$sDescription)) {
+				$msg[] = ''.$oDb->get_error();
 			} else {
 				$msg[] = 'Field ( `text` ) description has been changed successfully'." $OK";
 			}
 			$sFieldName = 'content';
-			if(!$database->field_modify($sTable,$sFieldName,$sDescription)) {
-				$msg[] = ''.$database->get_error();
+			if(!$oDb->field_modify($sTable,$sFieldName,$sDescription)) {
+				$msg[] = ''.$oDb->get_error();
 			} else {
 				$msg[] = 'Field ( `content` ) description has been changed successfully'." $OK";
 			}
-// change internal absolute Media links into relative links
-			$sTable = $database->TablePrefix.'mod_wysiwyg';
-			$sql  = 'UPDATE `'.$sTable.'` ';
-			$sql .= 'SET `content` = REPLACE(`content`, \'"'.WB_URL.MEDIA_DIRECTORY.'\', \'"{SYSVAR:MEDIA_REL}\')';
-			if (!$database->query($sql)) {
-				$msg[] = ''.$database->get_error();
-			} else {
-				$msg[] = 'Change internal absolute Media links into relative links'." $OK";
-			}
-// change all other internal absolute links into relative links
-			$sTable = $database->TablePrefix.'mod_wysiwyg';
-			$sql  = 'UPDATE `'.$sTable.'` ';
-			$sql .= 'SET `content` = REPLACE(`content`, \'"'.WB_URL.'\', \'"{SYSVAR:WB_REL}\')';
-			if (!$database->query($sql)) {
-				$msg[] = ''.$database->get_error();
-			} else {
-				$msg[] = 'Change internal absolute links into relative links'." $OK";
-			}
+// change internal absolute links into Sysvar placeholders and repair already existing entries
+			$sTable = $oDb->TablePrefix.'mod_wysiwyg';
+            $sql = 'SELECT `section_id`, `content` FROM `'.$oDb->TablePrefix.'mod_wysiwyg` ';
+            if (($oEntrySet = $oDb->doQuery($sql))) {
+                $iRecords = 0;
+                $iReplaced = 0;
+                $aSearch = array( '/\{SYSVAR\:MEDIA_REL\}[\/\\\\]?/sU',
+                                  '/\{SYSVAR\:WB_URL\}[\/\\\\]?/sU',
+                                  '/(\{SYSVAR\:AppUrl\.MediaDir\})[\/\\\\]?/sU',
+                                  '/(\{SYSVAR\:AppUrl\})[\/\\\\]?/sU'
+                                );
+                $aReplace = array( '{SYSVAR:AppUrl.MediaDir}', '{SYSVAR:AppUrl}', '\1', '\1' );
+                while (($aEntry = $oEntrySet->fetchRow(MYSQL_ASSOC))) {
+                    $iCount = 0;
+                    $aEntry['content'] = preg_replace($aSearch, $aReplace, $aEntry['content'], -1, $iCount);
+                    if ($iCount > 0) {
+                        $iReplaced += $iCount;
+                        $sql = 'UPDATE `'.$oDb->TablePrefix.'mod_wysiwyg` '
+                             . 'SET `content`=\''.$oDb->escapeString($aEntry['content']).'\' '
+                             . 'WHERE `section_id`='.$aEntry['section_id'];
+                        $oDb->doQuery($sql);
+                        $iRecords++;
+                    }
+                }
+                $msg[] = '['.$iRecords.'] records with ['.$iReplaced.'] SYSVAR placeholder(s) repaired'." $OK";
+            }
+            try {
+                $sql  = 'UPDATE `'.$sTable.'` ';
+                $sql .= 'SET `content` = REPLACE(`content`, \'"'.$oReg->AppPath.$oReg->MediaDir.'\', \'"{SYSVAR:AppPath.MediaDir}\')';
+                $oDb->doQuery($sql);
+				$msg[] = 'Change internal absolute Media links into SYSVAR placeholders'." $OK";
+            } catch(WbDatabaseException $e) {
+				$msg[] = ''.$oDb->get_error();
+            }
+            try {
+                $sql  = 'UPDATE `'.$sTable.'` ';
+                $sql .= 'SET `content` = REPLACE(`content`, \'"'.$oReg->AppPath.'\', \'"{SYSVAR:AppPath}\')';
+                $oDb->doQuery($sql);
+				$msg[] = 'Change internal absolute links into SYSVAR placeholders'." $OK";
+            } catch(WbDatabaseException $e) {
+				$msg[] = ''.$oDb->get_error();
+            }
 // only for $callingScript upgrade-script.php
 			if($globalStarted) {
 				if($bDebug) {
