02. Jan 2013
Beliebige Verzeichnisse oder dynamische Anwendungen lassen sich über frei definierbare Pfade in die Webseite einbinden.
Beliebige Verzeichnisse oder dynamische Anwendungen lassen sich über frei definierbare Pfade in die Webseite einbinden. So können z.B. externe Shop-Anwendungen, Produktkataloge und beliebige Verzeichnisstrukturen über die gewünschten Pfade angeboten werden.
// Callback-Funktion, die aufgerufen wird, falls eine Seite unter der eingegebenen URL nicht existiert
$preVars['callback404'] = 'wMyProject::getPathDocument404';
Die Funktion wMyProject::getPathDocument404 kann einen beliebigen Pfad liefern, welcher dann als Dokumentenpfad genutzt wird. Während über .htaccess mod_rewrite einfache Umschreibungsregeln erstellt werden können, sind mit diese Funktion beliebige Abfragen möglich. Pfade lassen sich nicht nur umschreiben, sondern können auch bedingt generiert werden.
//*********************************************************************************/
/**
* @method String getPathDocument404(String $file)
*
* @description Callback Funktion, die aufgerufen wird, wenn eine Seite nicht gefunden wurde
*
* @param file jeweilige Datei
*
* @return String
*
*
*/
//*********************************************************************************/
public static function getPathDocument404($pathNotFound, $documentPath){
$mountingDirs['/wDeutsch/produkte'] = array('root' => '/products');
if(is_array($mountingDirs)){
foreach($mountingDirs as $mountRoot => $mountData){
$mountRoot = $mountRoot;
$sourceRoot = $mountData['root'];
$mountPath = $sourceRoot.preg_replace('/^'.preg_quote($mountRoot, '/').'/', '', $pathNotFound);
if(is_dir($_SERVER['DOCUMENT_ROOT'].$mountPath)){
$mountPath = $mountPath.'/index.php';
}
if(is_file($_SERVER['DOCUMENT_ROOT'].$mountPath) && !preg_match('/\/weblication\//', $mountPath)){
$documentPath = $mountPath;
$_SERVER['PHP_SELF'] = $documentPath;
$GLOBALS['wHasMounted'] = true;
$contentPath = wReadWrite::readFile($documentPath);
// Falls es sich um eine eigene Anwendung handelt - SICHERHEIT beachten!
//if(!preg_match('/<wd:document/', $contentPath)){
// include($_SERVER['DOCUMENT_ROOT'].$documentPath);
// exit;
//}
break;
}
}
}
return $documentPath;
}
Die Ermittlung eines Pfades über die Callback-Funktion findet zu Beginn innerhalb der internen Steuerungsdatei statt, so dass die Online-Prüfung und die Personalisierung wie gewohnt durchgeführt werden. Handelt es sich um eine eigene Anwedung, kann der markierte Bereich des Skriptes auskommentiert werden. In diesem Fall muss sichergestellt werden, dass Inhalte nicht unberechtigt eingebunden werden können.