folder "' . $dir . '" is missing!');
}
return $replace_arr;
}
// eventuell durch das includen der Dateien entstehenden output puffern
ob_start();
while (false !== ($file = readdir($handle))) {
if (preg_match("#\.php$#", $file)) {
// alle gefundenen php Dateien includen
include($dir . '/' . $file);
// wenn es eine Datei von Google-Tap ist...
if (isset($urlin, $urlout)) {
// aus den darin enthaltenen beiden Arrays, das entsprechende Array fuer mx-Modrewrite generieren
foreach ($urlin as $i => $in) {
if (isset($urlout[$i])) {
$replace_arr[$in] = $urlout[$i];
}
}
// unbedingt vor dem naechsten Schleifendurchlauf aufraeumen
unset($urlin, $urlout);
}
}
}
// den Ordner mit den rule wieder schliessen
closedir($handle);
// evtl. entstandenen output verwerfen
ob_end_clean();
// das neue Array zurueckgeben
return $replace_arr;
}
/**
* Alle in dem uebergebenen String enthaltenen Links umschreiben
*/
function mxPrepareModRewrite($content)
{
global $modrew_prepareauto, $modrew_alternate;
// wenn kein Content
if (empty($content)) {
return $content;
}
// die Regeln importieren
static $replace_arr;
if (!isset($replace_arr)) {
$replace_arr = mxGetModRewriteArray();
}
// zur Kontrollausgabe, um zu sehen, welche Regeln importiert wurden und was in $content steht
if (isset($_GET['mod_rewrite_check']) && MX_IS_ADMIN) {
var_dump($replace_arr, $content);
}
if (!empty($replace_arr)) {
$patterns = array_keys($replace_arr);
$replaces = array_values($replace_arr);
$content = @preg_replace($patterns, $replaces, $content);
}
// nur wenn die Ersetzungen automatisch generiert werden sollen
// $modrew_prepareauto muss dazu auf TRUE gesetzt werden
if ($modrew_prepareauto && $content) {
// // ab hier werden die Ersetzungen automatisch generiert, nach Moeglichkeit hier nichts aendern !
// $pattern = '!(]+)href=["\']|)(?:'.MX_BASE_URL.')?modules\.php\?([^'.$modrew_alternate.'\.\'"-%]+)(["\']|)!i';
$pattern = '!(]+)href=["\']|)(?:' . preg_quote(MX_BASE_URL, '!') . ')?modules\.php\?((?:[[:alnum:]\=&_.;]|&)+)(#[^"\']+)?(["\']|)!i';
if (!preg_match_all($pattern, $content, $matches)) {
return $content;
}
foreach($matches[2] as $i => $value) {
// gewuenschte Bindestriche ersetzen
$x = str_replace(array('-', '&'), array($modrew_alternate, '&'), $value);
$arr = explode('&', $x);
$name = '';
$newarr = array();
$ilink = '';
foreach($arr as $para) {
if (($para === 'file=index') || ($para === 'op=modload')) {
continue;
}
$xar = explode('=', $para);
if (!isset($xar[1])) {
// falls kein Wert zum Parameter vorhanden ist
$xar[1] = '';
} else if (isset($xar[2])) {
// falls zusaetzliche IstGleich-Zeichen im Wert vorhanden sind
$uups = $xar;
array_shift($uups);
// das Array neu zusammensetzen
$xar = array($xar[0], implode('=', $uups));
}
if ($xar[0] === 'name') {
$name = $xar[1];
} else {
$check = explode('#', $xar[1]);
if (isset($check[1])) {
$ilink = '#' . $check[1];
$xar[1] = $check[0];
}
$newarr[] = $xar[0] . '-' . $xar[1];
}
}
$newstr = $name;
if (count($newarr)) {
$newstr .= '-' . (implode('-', $newarr));
}
$newstr .= '.html';
// Extralange Parameter ignorieren
if (strlen($newstr) < 255) {
// der zu ersetzende String
$old[$i] = $matches[0][$i];
// der neue String
$new[$i] = $matches[1][$i] . MX_BASE_URL . $newstr . $ilink . $matches[3][$i] . $matches[4][$i];
}
}
if (isset($old)) {
$content = str_replace($old, $new, $content);
// Start mod_rewrite Erweiterung (News, Downloads, Web_Links, Content)
// Umlaute
$umlaute = array("ä", "ü", "ö", "Ä", "Ü", "Ö", "ß", "&");
$ersetzung = array("ae", "ue", "oe", "Ae", "Ue", "Oe", "ss", "und");
//DOWNLOADS DETAILS LID
global $prefix;
preg_match_all('#Downloads-op-view-lid-(\d*)#', $content, $down, PREG_SET_ORDER);
foreach ($down as $down1){
$down2[0] = preg_replace('#Downloads-op-view-lid-#', '', $down1[0]);
$abfrage = "SELECT title, lid FROM " . $prefix . "_downloads_downloads WHERE lid = '$down2[0]'";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_array($ergebnis))
{
$titel_down_rewrite = $row["title"];
$titel_down_rewrite = str_replace($umlaute, $ersetzung, $titel_down_rewrite);
$titel_down_rewrite = preg_replace('#\W#', "-", $titel_down_rewrite);
$titel_down_rewrite = preg_replace('#---#', "-", $titel_down_rewrite);
$titel_down_rewrite = preg_replace('#--#', "-", $titel_down_rewrite);
$titel_down_fert = "Downloads-lid-";
$titel_down_fert.= "$titel_down_rewrite-";
$titel_down_fert.= $down2[0];
$replace = "#".$down1[0]."(?!\d)#";
$content = preg_replace($replace, $titel_down_fert, $content);
}
}
//Downloads Categorie (CID)
preg_match_all('#Downloads-cid-(\d*)#', $content, $down, PREG_SET_ORDER);
foreach ($down as $down1){
$down2[0] = preg_replace('#Downloads-cid-#', '', $down1[0]);
$abfrage = "SELECT title, cid FROM " . $prefix . "_downloads_categories WHERE cid = '$down2[0]'";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_array($ergebnis))
{
$titel_down_rewrite = $row["title"];
$titel_down_rewrite = str_replace($umlaute, $ersetzung, $titel_down_rewrite);
$titel_down_rewrite = preg_replace('#\W#', "-", $titel_down_rewrite);
$titel_down_rewrite = preg_replace('#---#', "-", $titel_down_rewrite);
$titel_down_rewrite = preg_replace('#--#', "-", $titel_down_rewrite);
$titel_down_fert = "Downloads-cid-";
$titel_down_fert.= "$titel_down_rewrite-";
$titel_down_fert.= $down2[0];
$replace = "#".$down1[0]."(?!\d)#";
$content = preg_replace($replace, $titel_down_fert, $content);
}
}
/**
* ############################################################################################
* ############################################################################################
* ############################################################################################
* Content-Modification Start
* ############################################################################################
* ############################################################################################
* ############################################################################################
*/
//Content Categorie
preg_match_all('#Content-cid-(\d*)#', $content, $pages, PREG_SET_ORDER);
foreach ($pages as $pages1){
$pages2[0] = preg_replace('#Content-cid-#', '', $pages1[0]);
$abfrage = "SELECT title, cid FROM " . $prefix . "_pages_categories WHERE cid = '$pages2[0]'";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_array($ergebnis))
{
$titel_pages_rewrite = $row["title"];
$titel_pages_rewrite = str_replace($umlaute, $ersetzung, $titel_pages_rewrite);
$titel_pages_rewrite = preg_replace('#\W#', "-", $titel_pages_rewrite);
$titel_pages_rewrite = preg_replace('#---#', "-", $titel_pages_rewrite);
$titel_pages_rewrite = preg_replace('#--#', "-", $titel_pages_rewrite);
/** normalerweise 1 Bindestrich am Ende */
$titel_pages_fert = "Content-cid---";
$titel_pages_fert.= "$titel_pages_rewrite---";
$titel_pages_fert.= $pages2[0];
$replace = "#".$pages1[0]."(?!\d)#";
$content = preg_replace($replace, $titel_pages_fert, $content);
}
}
//Content Details
preg_match_all('#Content-pid-(\d*)#', $content, $pages, PREG_SET_ORDER);
foreach ($pages as $pages1){
$pages2[0] = preg_replace('#Content-pid-#', '', $pages1[0]);
$abfrage = "SELECT title, pid FROM " . $prefix . "_pages WHERE pid = '$pages2[0]'";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_array($ergebnis))
{
$titel_pages_rewrite = $row["title"];
$titel_pages_rewrite = str_replace($umlaute, $ersetzung, $titel_pages_rewrite);
$titel_pages_rewrite = preg_replace('#\W#', "-", $titel_pages_rewrite);
$titel_pages_rewrite = preg_replace('#---#', "-", $titel_pages_rewrite);
$titel_pages_rewrite = preg_replace('#--#', "-", $titel_pages_rewrite);
/** normalerweise 1 Bindestrich am Ende */
$titel_pages_fert = "Content-pid---";
$titel_pages_fert.= "$titel_pages_rewrite---";
$titel_pages_fert.= $pages2[0];
$replace = "#".$pages1[0]."(?!\d)#";
$content = preg_replace($replace, $titel_pages_fert, $content);
}
}
/**
* ############################################################################################
* ############################################################################################
* ############################################################################################
* Content-Modification Ende
* ############################################################################################
* ############################################################################################
* ############################################################################################
*/
//Web_Links Categorie
preg_match_all('#Web_Links-cid-(\d*)#', $content, $links, PREG_SET_ORDER);
foreach ($links as $links1){
$links2[0] = preg_replace('#Web_Links-cid-#', '', $links1[0]);
$abfrage = "SELECT title, cid FROM " . $prefix . "_links_categories WHERE cid = '$links2[0]'";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_array($ergebnis))
{
$titel_links_rewrite = $row["title"];
$titel_links_rewrite = str_replace($umlaute, $ersetzung, $titel_links_rewrite);
$titel_links_rewrite = preg_replace('#\W#', "-", $titel_links_rewrite);
$titel_links_rewrite = preg_replace('#---#', "-", $titel_links_rewrite);
$titel_links_rewrite = preg_replace('#--#', "-", $titel_links_rewrite);
$titel_links_fert = "Web_Links-cid-";
$titel_links_fert.= "$titel_links_rewrite-";
$titel_links_fert.= $links2[0];
$replace = "#".$links1[0]."(?!\d)#";
$content = preg_replace($replace, $titel_links_fert, $content);
}
}
//Web_Links Details
preg_match_all('#Web_Links-op-view-lid-(\d*)#', $content, $links, PREG_SET_ORDER);
foreach ($links as $links1){
$links2[0] = preg_replace('#Web_Links-op-view-lid-#', '', $links1[0]);
$abfrage = "SELECT title, lid FROM " . $prefix . "_links_links WHERE lid = '$links2[0]'";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_array($ergebnis))
{
$titel_links_rewrite = $row["title"];
$titel_links_rewrite = str_replace($umlaute, $ersetzung, $titel_links_rewrite);
$titel_links_rewrite = preg_replace('#\W#', "-", $titel_links_rewrite);
$titel_links_rewrite = preg_replace('#---#', "-", $titel_links_rewrite);
$titel_links_rewrite = preg_replace('#--#', "-", $titel_links_rewrite);
$titel_links_fert = "Web_Links-lid-";
$titel_links_fert.= "$titel_links_rewrite-";
$titel_links_fert.= $links2[0];
$replace = "#".$links1[0]."(?!\d)#";
$content = preg_replace($replace, $titel_links_fert, $content);
}
}
// News Categorie
preg_match_all('#News-file-categories-catid-(\d*)#', $content, $news, PREG_SET_ORDER);
foreach ($news as $news1){
$news2[0] = preg_replace('#News-file-categories-catid-#', '', $news1[0]);
$abfrage = "SELECT title, catid FROM " . $prefix . "_stories_cat WHERE catid = '$news2[0]'";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_array($ergebnis))
{
$titel_news_rewrite = $row["title"];
$titel_news_rewrite = str_replace($umlaute, $ersetzung, $titel_news_rewrite);
$titel_news_rewrite = preg_replace('#\W#', "-", $titel_news_rewrite);
$titel_news_rewrite = preg_replace('#---#', "-", $titel_news_rewrite);
$titel_news_rewrite = preg_replace('#--#', "-", $titel_news_rewrite);
$titel_news_fert = "News-cat-";
$titel_news_fert.= "$titel_news_rewrite-";
$titel_news_fert.= $news2[0];
$replace = "#".$news1[0]."(?!\d)#";
$content = preg_replace($replace, $titel_news_fert, $content);
}
}
//News Details
preg_match_all('#News-file-article-sid-(\d*)#', $content, $news, PREG_SET_ORDER);
foreach ($news as $news1){
$news2[0] = preg_replace('#News-file-article-sid-#', '', $news1[0]);
$abfrage = "SELECT title, sid FROM " . $prefix . "_stories WHERE sid = '$news2[0]'";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_array($ergebnis))
{
$titel_news_rewrite = $row["title"];
$titel_news_rewrite = str_replace($umlaute, $ersetzung, $titel_news_rewrite);
$titel_news_rewrite = preg_replace('#\W#', "-", $titel_news_rewrite);
$titel_news_rewrite = preg_replace('#---#', "-", $titel_news_rewrite);
$titel_news_rewrite = preg_replace('#--#', "-", $titel_news_rewrite);
$titel_news_fert = "News-sid-";
$titel_news_fert.= "$titel_news_rewrite-";
$titel_news_fert.= $news2[0];
$replace = "#".$news1[0]."(?!\d)#";
$content = preg_replace($replace, $titel_news_fert, $content);
}
}
// Ende mod_rewrite
}
}
return $content;
}
/**
* Die per umgeschriebener URL dem Script uebergebene Request Parameter
* wieder in eine verwendbare Form bringen
*/
function mxUndoModRewrite()
{
global $modrew_alternate, $PHP_SELF;
$name = '';
$get = array();
if (isset($_GET['name'])) {
$name = $_GET['name'];
} else if (strpos($_SERVER['QUERY_STRING'], '&________________________') === false) {
$name = str_replace('..', '', $_SERVER['QUERY_STRING']);
} else {
list($name, $querystring) = explode('&________________________', $_SERVER['QUERY_STRING']);
unset($_GET['________________________' . $querystring], $_REQUEST['________________________' . $querystring]);
$che = explode('-', $querystring);
$che = array_chunk($che, 2);
foreach($che as $part) {
$key = @str_replace($modrew_alternate, '-', $part[0]);
$value = @str_replace($modrew_alternate, '-', $part[1]);
$get[$key] = $value;
}
}
if ($name != 'mxcredit' && !file_exists(PMX_REAL_BASE_DIR . '/modules/' . $name . '/.')) {
switch (true) {
case file_exists(PMX_REAL_BASE_DIR . '/modules/' . ucfirst($name) . '/.'):
$name = ucfirst($name);
break;
case file_exists(PMX_REAL_BASE_DIR . '/modules/' . strtolower($name) . '/.'):
$name = strtolower($name);
break;
case file_exists(PMX_REAL_BASE_DIR . '/modules/' . strtoupper($name) . '/.'):
$name = strtoupper($name);
break;
case file_exists(PMX_REAL_BASE_DIR . '/modules/' . ucwords($name) . '/.'):
$name = ucwords($name);
break;
default:
header('HTTP/1.1 301 Moved Permanently');
header("Refresh: 2;url=./?moderror=" . urlencode($name));
}
}
unset($_GET[$name], $_REQUEST[$name], $get[$name]);
$_GET = array_merge(array('name' => $name), $get, $_GET);
$new = '';
foreach ($_GET as $key => $value) {
$new .= '&' . $key . '=' . $value;
}
$_SERVER['QUERY_STRING'] = trim($new, '& ');
$_SERVER["PHP_SELF"] = rtrim(dirname($_SERVER["PHP_SELF"]), '/') . '/modules.php';
$_SERVER['SCRIPT_NAME'] = $_SERVER["PHP_SELF"];
$_SERVER['SCRIPT_FILENAME'] = rtrim(dirname($_SERVER['SCRIPT_FILENAME']), '/') . '/modules.php';
if (isset($PHP_SELF)) {
$PHP_SELF = $_SERVER["PHP_SELF"];
}
}