header-xh-01 header-xh-02 header-xh-03 header-xh-04 header-xh-05 header-xh-06 header-xh-07 header-xh-08 header-xh-09 header-xh-10 header-xh-11 header-xh-12 header-xh-13 header-xh-14
Lembach's nichtkommerzielle Website rund um CMSimple_XH
Templates, Plugins, Tools, Programme
und Tips und Tricks die mir wichtig sind
Sie sind hier: Startseite > Plugins > SimplePlugins_XH Edition KRL > Function eingliedern

Function eingliedern

Useage : {{­{eingliedern($string [,$url_string]);}}}
Example : {{­{eingliedern('/pfad/datei.htm');}}}

Bindet HTML-Code aus einer auf dem Server befindlichen reinen HTML-Datei in den Content ein (in der Art von Textbausteinen). Nach Möglichkeit werden dabei in den <img> - Tags die Links zu den Grafikdateien angepasst.
Enthält die einzugliedernde Datei die '<?php' - Anweisung bricht das Plugin mit einer Fehlermeldung ab.
Im Ordner /plugins/simpleplugins_xh/simpleplugins_library/eingliedern/ befindet sich die Test-Datei test.htm. Sie kann direkt durch klicken dieses Links angezeigt werden: /plugins/simpleplugins_xh/simpleplugins_library/eingliedern/test.htm.

{{{eingliedern($pth['folder']['plugins']."simpleplugins_xh/simpleplugins_library/eingliedern/test.htm");}}­} ⇒

Test der Korrektur der Bilderreferenzierung

Bild im Ordner der eingegliederten Datei:

Keks

Bild in einem benachbarten Ordner:

src="../../help/SimplePlugins_XH.gif"

SimplePlugin_XH

Bild, das relativ referenziert ist:

Das Bild liegt an dieser Stelle: https://lembach-cmsimple.de/plugins/simpleplugins_xh/simpleplugins_library/eingliedern/krl-3col-flex-Logo-100.png
und die aufrufende Datei liegt im gleichen Ordner.

Will man die Adresse über den Weg zum root angeben muss für jede Ebene unter dem root erst ein "../" davor gesetzt werden: src="../../../../plugins/simpleplugins_xh/simpleplugins_library/eingliedern/krl-3col-flex-Logo-100.png"

krl-3col-flex

und bezogen auf das root Verzeichnis: src="/plugins/simpleplugins_xh/simpleplugins_library/eingliedern/krl-3col-flex-Logo-100.png"

krl-3col-flex

Bild, das ins Web referenziert ist:

krl-3col-flex

 

Dateiname: ./plugins/simpleplugins_xh/simpleplugins_library/eingliedern/index.php

<?php
/*****************************************************
* CMSimple Very Very Simple Plugin Sample
*****************************************************
* Plugin name : eingliedern
* File name : index.php
* Version : 1.0
* Purpose : to insert external code from files into
* the HTML code of the page in the content area that
* can be edited by the editor.
* Autor : Karl Richard Lembach https://lembach-cmsimple.de
* Lizenz : CC-by-SA https://creativecommons.org/licenses/by-sa/4.0/deed.de
******************************************************/
/*
* Prevent direct access.
*/
if (!defined('CMSIMPLE_XH_VERSION')) {
header('HTTP/1.0 403 Forbidden');
exit;
}


function eingliedern($dateinamenundpfad = ""){ /* $dateinamenundpfad = "" verhindert Fehler, wenn beim Pluginaufruf kein Argument übergeben wird (Fehler bei der Codierung im Editor) */
/* https://wiki.cmsimple-xh.org/doku.php/core_variables */
global $edit, $normal, $pth, $sn; /* vorsorgliche Bereitstellung globaler Variablen, wird hier jedoch nicht wirklich benötigt */
if ($dateinamenundpfad == "") { /* Ende des Plugins, wenn kein Argument übergeben wird */
return '<span class="label-danger">Plugin EINGLIEDERN meldet: Kein Dateinamen übergeben!</span>';
}
if (substr($dateinamenundpfad, 0, 1) == "/") {
$dateinamenundpfad = substr($dateinamenundpfad, 1, strlen($dateinamenundpfad));
}
$aktuelleDir = getcwd(); /* root des Web */
$pfadnamen = realpath($aktuelleDir.'/'.$dateinamenundpfad); /* kompletter Dateisystem-Pfad mit Dateinamen */
if (!file_exists($dateinamenundpfad)) { /* falls die Datei nicht existiert */
return '<span class="label-danger">Plugin EINGLIEDERN meldet: Kann die Datei '.$dateinamenundpfad.' nicht finden!</span>';
}
if (!is_readable($pfadnamen)) { /* falls die Datei nicht zum lesen geöffnet werden kann */
return '<span class="label-danger">Plugin EINGLIEDERN meldet: Kann die Datei '.$pfadnamen.' nicht zum lesen öffnen!</span>';
}

// echo '<p>Dateinamenparameter: '.$dateinamenundpfad . "</p>\n";
// echo '<p>Pfadnamen: ' . $pfadnamen . "</p>\n";
$dateiinhalt = file_get_contents($pfadnamen);
// echo '<p>Zeichenanzahl in der Datei: ' . strlen($dateiinhalt) . "</p>\n";
$phpdokument = strpos($dateiinhalt,'<?php');
if ($phpdokument > 0) {
return '<span class="label-danger">Plugin EINGLIEDERN meldet: Die Datei '.$pfadnamen.' enthält PHP-Anweisungen und kann deshalb nicht eingegliedert werden!</span>';
}
$headpos = strpos($dateiinhalt,"</head>");
if ($headpos > 0) {
$dateiinhalt = substr($dateiinhalt,$headpos+7);
}
$bodypos = strpos($dateiinhalt,"<body>");
// echo '<p>Position body-Tag: ' . $bodypos . "</p>\n";
if ($bodypos > 0) {
$dateiinhalt = substr($dateiinhalt,$bodypos+6);
}

// echo '<p>1. Zeile nach body-Tag: ' . substr($dateiinhalt,0,10) . "---</p>\n";
$bodypos = strpos($dateiinhalt,'</body');
// echo '<p>Position body-Ende-Tag: ' . $bodypos . "</p>\n";
if ($bodypos > 0) {
$ueberhang = $bodypos-strlen($dateiinhalt);
// echo '<p>Überhang über body-Ende-Tag: ' . $ueberhang . "</p>\n";
$dateiinhalt = substr($dateiinhalt,0,$bodypos-strlen($dateiinhalt));
}

// Aus der Variablen $dateinamenundpfad dem Pfad zur Datei herausfiltern:
$pfadzurdatei = "";
if (strpos($dateinamenundpfad,"/")) {
$pfadzurdatei = substr($dateinamenundpfad,0,strripos($dateinamenundpfad,"/")+1);
}
// echo '<p>Dateipfad: '.$pfadzurdatei."</p>\n";
$zeigeraufinhalt = 0; //Zeiger auf $dateiinhalt auf Anfang (=0) setzen.
imgloop: //Sprungmarke Anfang des Loop
if (!strpos(substr($dateiinhalt,$zeigeraufinhalt),'<img')) {goto exitloop;} //Loop abbrechen wenn im Rest keine <img enthalten
$posimg = $zeigeraufinhalt + strpos(substr($dateiinhalt,$zeigeraufinhalt),'<img'); //Position '<img' finden.
$inhaltvorimg = substr($dateiinhalt,0,$posimg); //$dateiinhalt aufteilen in $inhaltvorimg und $inhaltabimg.
$inhaltabimg = substr($dateiinhalt,$posimg);
$zeigeraufinhalt = strlen($inhaltvorimg-1); //Zeiger auf ende von $inhaltvorimg setzen.
// echo '<p>kurz vor &lt;img: <code>... '.nl2br(htmlspecialchars(substr($inhaltvorimg,-15),ENT_QUOTES))."</code></p>\n";
// echo '<p>unmittelbar ab &lt;img: <code>'.nl2br(htmlspecialchars(substr($inhaltabimg,0,80),ENT_QUOTES))." ...</code></p>\n";
$posendimg = strpos($inhaltabimg,">"); //Schließenden > von <img finden
$inhaltnachimg = substr($inhaltabimg,$posendimg+1); //$inhaltnachimg von $inhaltabimg abtrennen.
$inhaltabimg = substr($inhaltabimg,0,$posendimg+1); //$inhaltabimg auf img-Tag kürzen.
// echo '<p>unmittelbar vor &gt;: <code>... '.nl2br(htmlspecialchars(substr($inhaltabimg,-40),ENT_QUOTES))."</code></p>\n";
// echo '<p>Position StartImg: '.$posimg.' Position EndImg: '.$posendimg.'<br>unmittelbar ab &gt;: <code>'.nl2br(htmlspecialchars(substr($inhaltnachimg,0,80),ENT_QUOTES))." ...</code></p>\n";
$srcanfang = substr($inhaltabimg,strpos($inhaltabimg,"src=")+4,1); // 'src=' in $inhaltabimg finden und ermitteln welches Zeichen auf '=' folgt.
// echo '<p>src=: <code>'.$srcanfang."</code></p>\n";
$srcstringanfang = strpos($inhaltabimg,"src=")+4+1; //Position des ersten Zeichens des SRC-Strings
$srcstringende = strpos($inhaltabimg,$srcanfang,$srcstringanfang); //Position des letzten Zeichens des SRC-Strings
$srcstring = substr($inhaltabimg,$srcstringanfang,$srcstringende-$srcstringanfang); //reiner src-String
// echo ' <p><code>src-Anfang: '.$srcstringanfang.' # src-Ende: '.$srcstringende.'# src-String: '.nl2br(htmlspecialchars($srcstring,ENT_QUOTES))."</code></p>\n";
$httpflag = strtolower(substr($srcstring,0,4));
// echo '<p><code>http-Flag: '.$httpflag."</code></p>\n";
if ($httpflag == 'http') { //wenn der src-String eine komplette URL ist keine Veränderung des Strings
goto imgtag;
}
$ersteszeichen = substr($srcstring,0,1);
if ($ersteszeichen == '/') { //wenn der src-String mit '/' beginnt ist er ein link ins root und muss nicht geändert werden.
goto imgtag;
}
$erstezeichen = substr($srcstring,0,2);
if ($erstezeichen == './') { //wenn der src-String mit './' beginnt bezieht er sich auf das root und muss nicht geändert werden.
goto imgtag;
}
$srcstring = $pfadzurdatei.$srcstring; //Pfad zur html-Datei dem Bild-src-String voranstellen.
imgtag:
$inhaltabimg = substr($inhaltabimg,0,$srcstringanfang).$srcstring.substr($inhaltabimg,$srcstringende);
// echo ' <p>Tag: <code>'.nl2br(htmlspecialchars($inhaltabimg,ENT_QUOTES))."</code></p>\n";

zusammensetzen: //Zusammensetzen der Teilstrings zum neuen Dateiinhalt
$dateiinhalt = $inhaltvorimg . $inhaltabimg; //Teil vor dem Bild und det neuen Bildtag werden zusammengeführt
$zeigeraufinhalt = strlen($dateiinhalt)-1;
// echo '<p>Position EndImg: '.$posendimg."</p>\n";
// echo '<p>Zeiger auf $dateiinhalt: '.$zeigeraufinhalt."</p>\n";
// echo '<p>Länge des Strings $inhaltnachimg: '.strlen($inhaltnachimg)."</p>\n";
$dateiinhalt .= $inhaltnachimg;
// echo '<p>Anzahl Zeichen der geänderten htm-Datei: '. strlen($dateiinhalt) ."</p>\n";

if ($zeigeraufinhalt < strlen($dateiinhalt)-1) {
goto imgloop; //wenn Zeiger kleiner als Länge $dateiinhalt Sprung zur Marke imgloop
}

exitloop: //Sprungmarke Ende des Loop
return $dateiinhalt;
}

?>

| Seitenanfang | |  - - - By CrazyStat - - -