Anleitungen & FAQ

Nach erfolgreich abgeschlossener Installation, gibt es 4 Ränge. Den Webmaster, der mächtigste Rang, sollte daher nur dem Programmierer/Inhaber vergeben werden. Denn der Webmaster darf ALLES! Er hat immer alle Rechte und darf auf alle Seiten zugreifen (auch wenn gewisse Regeln noch nicht angelegt wurden)!

Der zweite Rang ist der Administrator und hat alle zu dem Zeitpunkt der Installation verfügbaren Rechte.

Als dritten Rang gibt es das Mitglied. Dies ist der Standard-Rang nach der Installation für die Registration, erkennbar durch das Bookmark Symbol. Dieser hat am Anfang keine Berechtigungen (Somit nur standard Funktionen für normale Benutzer) und kann somit keine verwaltenden Tätigkeiten durchführen.

Der Gast-Rang ist, wie der Name schon verrät, für die Gäste (also nicht Registrierte Mitglieder "NonMember"). Er hat ebenfalls keine Berechtigungen, aber er darf auf andere Seiten zugreifen als die anderen Ränge (Login, Registrierung, Passwort vergessen). Daher ist es wichtig, wenn neue Seiten angelegt werden, diese auch den entsprechenden Gruppen (Rängen) freizugeben.

Ebenfalls sind mit der Installation 3 Benutzer angelegt. Dazu zählen zwei versteckte Benutzer die für das System sind (System und Gast) und daher nicht Sichtbar/Editierbar sind. Es kann sich mit diesen Benutzern auch nicht eingeloggt werden. Der dritte Benutzer bist du, den du bei der Installation angelegt hast. Dieser Benutzer erhält den Rang "Webmaster". Achte somit streng darauf, wem du welche Rechte vergibst!

Jeder ist herzlich dazu eingeladen eigene Funktionen für das System zu schreiben. Wir haben dafür extra Dateien im "system/" Verzeichnis vorgesehen. Erkennbar durch das ".user" im Namen der Datei, so brauchst du bei Updates deine eigenen Funktionen nicht neu schreiben oder das Update mühseelig per Hand durchführen. Deine eigenen Klassen kannst du in das Verzeichnis "system/classes" einfügen, beachte aber bitte das durch Updates neue Klassen/Dateien hinzukommen können.

Solltest du das EASY 2.0 bereits nutzen, kannst du Problemlos dein System auf den neusten Stand bringen.

  1. Lade dazu dir das aktuellste System herunter
  2. Entpacke das ZIP-Verzeichnis
  3. Öffne dein FTP-Programm und verbinde dich mit deinem Server
  4. Gehe in das Verzeichnis "system/"
  5. Ersetze alle Dateien aus dem Verzeichnis bis auf:
    • functions.user.php
    • run.user.php
    • classes.run.user.php

Sofern keine anderen Dateien betroffen sind (siehe Changelog), ist das Update abgeschlossen!
Wenn andere Dateien betroffen sind, werden diese im Changelog genau benannt. So müssen nur die genannten Dateien ausgetauscht werden. Hier musst du beachten, dass du diese Datei verändert haben könntest. Sollte dies der Fall sein, mache ein Backup dieser Datei und ersetze diese durch die neue. Nun nehme deine Änderungen erneut vor.

Das Rechtesystem regelt alle Berechtigungen. Dazu zählen Seiten sowie Berechtigungen um Aktionen auszuführen.

Du bestimmst bei jedem Rang, wer welche Seiten aufrufen und Aktionen ausführen darf. Um eine Änderung vorzunehmen, einfach auf den Menüpunkt "Ränge verwalten" klicken. Dort findest du alle Ränge aufgelistet. Mit dem Augen-Symbol kannst du dir die Ränge ansehen und Informationen wie, welche Benutzer haben diesen Rang, welche Berechtigungen besitzt dieser Rang und welche Seiten darf er aufrufen.

Um einen Rang zu bearbeiten, klicke auf das Stift-Symbol. Du kannst auf der linken Seite alles bearbeiten, dazu zählt auch wie der Rang dargestellt werden soll. Möchtest du dem Rang Seiten hinzufügen (Wenn du Sie zuvor erstellt hast) oder entfernen, scrolle in der Liste unter "Seite/n" bis du die gewünschte Seite gefunden hast. Klicke nun mit gehaltener Strg-Taste auf die Seite. Nun ist sie für den Rang freigegeben (blau/selektiert) oder blockiert.

Das gleiche Prinzip funktioniert bei den Regeln. Diese geben den Benutzern des Ranges Berechtigungen um Aktionen auszuführen. Nach der Installation sind dies aber nur Berechtigungen (Regeln) zum Verwalten der Seite.

Der Haken in der Menüverwaltng "Nur für Gäste sichtbar" dient ausschließlich dazu, das der Webmaster sich diese Menüpunkte ausblenden kann. Da der Webmaster so mächtig ist, kann er immer auf ALLE Seiten zugreifen. Somit ist das die einzige Möglichkeit sich das Menü für den Webmaster anzupassen. Daher empfehlen wir den Webmaster sehr gut zu sichern und ihn nur zum Programmieren oder verwalten der Administratoren zu nutzen! Für den normalen Betrieb verwende kein Webmaster sondern einen Administrator, denn als Webmaster kannst du mögliche Fehler wie "fehlende Berechtigungen" nicht sehen! Teste daher alle Änderungen mit jedem Rang durch, ob es nach deinen wünschen funktioniert.

Öffne das Verzeichnis ./emailtpl/ mit einem FTP-Programm auf deinem Server. Lade dir die gewünschte HTML-Datei herunter und bearbeite diese mit einem Editor. Z.B. Notepad++. Nun speichere die Datei und ersetze diese durch die alte auf deinem Server.

Das Easy 2 nutzt den Standard-Mailer von PHP. Dies führt häufig dazu das die E-Mails im SPAM landen. Um dem entgegenzuwirken, kann der PHPMailer genutzt werden.

Wie integriere ich den PHPMailer ins Easy2?

Das ist relativ einfach! Zuerst musst du dazu den PHPMailer herunterladen. Dazu gehe zu den GitHub-Repository von PHPMailer. Über "Code" oben rechts kann alles mit "Download Zip" heruntergeladen werden. Anschließend entpacke die Datei in ein Verzeichnis.

Erstelle nun ein Verzeichnis im Easy unter "system/classes" mit dem Namen "PHPMailer". Kopiere dann alle Dateien aus dem "src" Verzeichnis in das gerade erstellte. Im Anschluss musst du in jeder kopierten Datei den namespace ändern. (ca. Zeile 22) Dieser muss von namespace PHPMailer\PHPMailer; in namespace PHPMailer; geändert werden.

Nun müsst ihr noch die Funktion zum versenden von E-Mail austauschen gegen folgende (in loginsystem.php letzte function):

public function sendMail($tpl, $userID = NULL, array $data, $to = NULL, $rplto = NULL, $header_file = 'header.tpl', $footer_file = 'footer.tpl'){
        /***********************
         * $tpl => Datei mit dem gewuenschtem Inhalt
         * $userID => UserID uebergeben (noch keine Verwendung)
         * $data => Das "data" Array enthaelt alle Variablen Werte welche in dem E-Mail Template ersetzt werden sollen.
         *          Der "key" enthaelt den Variablennamen und das "value" enthaelt den zu ersetzenden Wert.
         * $to => Empfaenger der E-Mail (E-Mail Adresse)
         * $rplto => E-Mail zurueck zu (E-Mail Adresse)
         * $header_file => Abweichende Header(Kopf)-Datei angeben (Aus dem Verzeichnis "./emailtpl/")
         * $footer_file => Abweichende Footer(Fuss)-Datei angeben (Aus dem Verzeichnis "./emailtpl/")
         ***********************/
        
        $mail = new PHPMailer\PHPMailer(true);
        $tpl_dir = './emailtpl/';
        $tpl_file = $tpl_dir.$tpl;
        $tpl_header_file = $tpl_dir.$header_file;
        $tpl_footer_file = $tpl_dir.$footer_file;
        $content = file_get_contents($tpl_header_file);
        $content .= file_get_contents($tpl_file);
        $content .= file_get_contents($tpl_footer_file);
        
        // Replacement
        foreach($data as $key => $val){
            $content = str_replace('['.$key.']', $val, $content);
        }
        
        $link = getCurrentUrl();
        $content = str_replace('[link]', $link, $content);
        
        $content = str_replace('[title]', $this->getMainData('site_title'), $content);
        $message = str_replace('[adminmail]', $this->getMainData('administrator_mail'), $content);
        
        $to = empty($to) ? [$this->getMainData('administrator_mail')] : [$to];
        $rplToEmail = empty($rplto) ? $this->getMainData('mail_receiver') : $rplto;
        
        
        try {
            
            $smtpData = [
                "host" => "", //Set the SMTP server to send through
                "port" => 465, // TCP port to connect to; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS`
                "user" => "", //SMTP username
                "password" => "", //SMTP password
                "secure" => "", //Enable implicit TLS encryption (tls oder ssl)
                "sendemail" => $this->getMainData('mail_sender'), // Absender E-Mail Adresse
                "sendname" => $this->getMainData('site_title') // Absender Name
            ];
            
            //Server settings
            $mail->isSMTP();                                            // Send using SMTP
            $mail->Host       = $smtpData['host'];                      // Set the SMTP server to send through
            $mail->SMTPAuth   = true;                                   // Enable SMTP authentication
            $mail->Username   = $smtpData['user'];                      // SMTP username
            $mail->Password   = $smtpData['password'];                  // SMTP password
            $mail->SMTPSecure = $smtpData['secure'];  // Enable TLS encryption; `PHPMailer::ENCRYPTION_SMTPS` encouraged
            $mail->Port       = (int) $smtpData['port'];                // TCP port to connect to, use 465 for `PHPMailer::ENCRYPTION_SMTPS` above
            $mail->CharSet    = 'utf-8';
            
            
            
            //Recipients
            $mail->setFrom($smtpData['sendemail'], $smtpData['sendname']);
            foreach($to as $key=>$email){
                if(!is_array($email)){
                    if(is_numeric($key)){
                        $mail->addAddress($email);
                    } else {
                        $mail->addAddress($key, $email);
                    }
                } elseif(array_key_exists("BCC", $email)) {
                    $mail->addBCC($email["BCC"]);
                }
            }
            $rpl['to'] = $smtpData['sendemail'];
            $rpl['name'] = $smtpData['sendname'];
            if(!empty($rplToEmail)){
                $rpl['to'] = $rplToEmail;
            }
            if(!empty($rplToName)){
                $rpl['name'] = $rplToName;
            }
            $mail->addReplyTo($rpl['to'], $rpl['name']);
            
            // Content
            $mail->isHTML(true);                                  // Set email format to HTML
            $mail->Subject = $data['subject'];
            $mail->Body    = $message;
            
            return $mail->send();
        } catch (Exception $e) {
            die($e);
        }
        return false;
    }

Zu guter Letzt, tragt noch eure SMTP Daten dort ein. Fertig!

Solltet ihr einen Fehler bekommen, setzt folgenden Code eine Zeile unter "$mail->isSMTP();" ein:

$mail->SMTPDebug = 4; 

Jetzt wird euch detailliert angegeben, woran es scheitert.

Öffne das Verzeichnis ./emailtpl/ mit einem FTP-Programm auf deinem Server. Lade dir eine beliebige HTML-Datei herunter und bearbeite diese mit einem Editor. Z.B. Notepad++. Nun speichere die Datei unter einem neuen Namen und lade diese auf deinen Server. Anschließend kannst du diese in deinem Script verwenden. Schaue hier wie man eine E-Mail versendet.
Wie kann ich Informationen über den Benutzer abrufen? Schau dir die getUser(); Funktion an.
Spaltenname Kommentar
id BenutzerID
username Benutzername (muss einzigartig sein)
email E-Mail Adresse (muss einzigartig sein)
password Passwort des Benutzers (als Hash) (nicht wiederherstellbar!!!)
active Benutzerkonto aktiviert? 0 = nein / 1 = ja
rank ID des Ranges
regdate Timestamp der Registrierung
first_name Vorname des Benutzers
last_name Nachname des Benutzers
uik UserIdentificationKey (UIK) 32 Stelliger Code um den Benutzer zu Identifizieren
avatar Wenn ein Profilbild gesetzt wurde, wird hier der Dateityp des Profilbildes eingetragen
zusätzlich über getUser(); abfragbar
fullname Gibt den kompletten Namen zurück wenn möglich, sonst nur das was angegeben ist. Sollte kein Vor-/Nachname angegeben sein wird der Benutzername eingesetzt.
Schritt 1:

Erstelle ein Backup deines Systems. Öffne anschließend die index.php des Systems und die index.html des neuen Designs z.B. mit Notepad++ oder einem anderen Editor für HTML und PHP.

Schritt 2: (Ersetzen der CSS-Einbindungen)

Ersetze alle <link>-Tags in der index.php durch die der index.html. (Achtung! Bis auf den Tag mit der "mlsystems.css"!)

Schritt 3: (Anpassen des Body)

Schritt 3.1:
Schaue in die index.html ob dort im <body>-Tag Attribute wie class="[...]" etc angeben sind. Falls ja, müssen wir diese kopieren und in der index.php in den <body>-Tag einsetzen. Ist auch das Attribut class="" vorhanden müssen wir noch einen weiteren Schritt machen.

Schritt 3.1.1: (Nur wenn class="" vorhanden)
Kopiere das Attribut class="" in dem <body>-Tag, nun gehe mit dem Cursor in das Attribut vor das zweite " (Anführungszeichen). Füge eine Leertaste hinzu und setze den PHP-Code welcher noch in dem <body>-Tag steht hinein. Jetzt musst du noch im PHP-Code das class="[...]" um "locked" entfernen, so das dort nur noch 'locked' steht.

Schritt 3.2:
Entferne alles was zwischen der PHP-if() Bedingung steht:

<?php if($loginsystem->is_locked() == false){ ?>
<!-- Hier steht HTML Code der Entfernt werden muss -->
<?php } else { // Benutzer gesperrt ...
Der "else" Teil ist am Ende der index.php zu finden. Füge für den entfernten Teil alles was zwischen den <body>-Tags in der index.html steht. (Bis auf am Ende die <script>-Tags!)

Schritt 3.3: (Das Menü anpassen)
Entferne alle Menüpunkte aus der index.php. Meist sind die in <li>-Tags. Dafür fügst du folgendes ein:

<?php echo $menu->getMenu(); ?>
Wenn das Menü mit einer "Liste" (<ul>) erstellt wurde, müsste das Ergebnis so ausssehen:
<ul class="nav navbar-nav [oder andere CSS-Klassen]">
<?php echo $menu->getMenu(); ?>
</ul>

Schritt 3.3.1: (Anpassen der Menüpunkte)
Dazu müssen die Dateien "menu_point.tpl", "menu_dropdown_link.tpl" und "menu_dropdown_point.tpl" aus dem Verzeichnis "system/tpl/menu/default" geöffnet werden. In der "menu_point.tpl" muss der normale Menüpunkt angepasst werden. Bei einer "Lsite" mit <li>-Tags könnte es so aussehen:

<li class="[active]"><a href="[url]" target="[target]" title="[title]">[icon] [title]</a></li>
Hierbei steht [active] dafür, dass wenn der Link aufgerufen ist, die CSS-Klasse "active" gesetzt wird um den Benutzer zu signalisieren bei welchem Menüpunkt er sich befindet. Für [icon] wird folgendes eingesetzt, wenn ein Icon angegeben wurde:
<i class="fa [eingegebenes Icon]"></i>
Wie ein Menüpunkt oder Dropdown aussehen muss, entnimmst du der index.html.

Schritt 4: (Inhalt anpassen)
Jetzt steht noch in der index.php die komplette "Home" Seite der anderen Datei. Diesen Teil wollen wir aber dynamisch haben, deshalb muss dieser weg. Meist sind diese in <div>-Tags (Containern) oder es ist in der Datei in einem HTML-Kommentar z.B. <-- Start Content --> <-- End Content --> geschrieben wo der Inhalt startet. Statt dem Inhalt muss folgender Code eingefügt werden:

<?php include($sites->includeSite()); ?>

Schritt 5: (Script Einbindungen anpassen)
Am Ende der index.php sind <script> Einbindungen. Diese müssen gegen die aus der index.html ersetzt werden.

Schritt 6: (Dateien austauschen)
Ersetze alle CSS und JS Dateien aus deinem neuen Design im System.
Du kannst hier auch den Ordner "js" löschen und den neuen hineinkopieren. Im CSS Ordner können alle Dateien bis auf die mlsystems.css gelöscht und durch die neuen ersetzt werden. Das neue Design kann auch noch einen Ordner besitzen welcher "assets" oder "vendor" heißt. Diese müssen ebenfalls kopiert / ersetzt werden.

Schritt 7: (Inhalt anpassen)
Es kann passieren, dass die Inhalte der einzelnen Seiten nicht ins Desgin passen. Dann muss jede Datei im "template" Verzeichnis angepasst werden. Hier muss aber nur noch der "Inhalts"-Part angepasst werden. Meist muss nur die CSS-Klasse des ersten <div>-Tags angepasst werden.

Als was bist du angemeldet?
Als Webmaster: Prüfe ob die Seite unter "Seiten verwalten" existiert. Falls ja, prüfe ob die Datei im Verzeichnis "./templates/" existiert.
Als Benutzer/Gast (nicht angemeldet): (Wir gehen davon aus, das der Webmaster diese sehen kann) Hat der Rang in dem sich der Benutzer befindet auch die Berechtigung diese Seite einzusehen?

Um eine Seite zu erstellen gehe zunächst auf den Menüpunkt "Seiten verwalten". Auf der linken Seite befindet sich das Formular um eine neue Seite zu erstellen oder auch um Seiten zu bearbeiten. Rechts daneben siehst du alle bestehenden Seiten aufgelistet.

Gebe als erstes einen Seitentitel ein. Dieser wird als "Überschrift" verwendet und auch oben im Browser-Tab angezeigt. Anschließend gebe einen Namen für die Datei ein. Z.B. "example.php". Wichtig ist, dass dieser Dateinmane noch nicht von einer der bestehenden Seiten verwendet wird! Wenn du schon eine Seite vorbereitet hast, kannst du diese via "Datei hochladen" auswählen. Mit dem Verzeichnis gibst du an, wo die Datei liegen soll. Nichts eingetragen bedeutet das diese im Stammverzeichnis des Seitensystems liegt "./templates/". Falls du keine Datei ausgewält hast, aktivere den Haken "Seite mit Datei und Verzeichnis anlegen" und drücke auf "Hinzufügen".

Über das Download-Symbol kannst du dir diese Seite herunterladen und auf deinem Computer bearbeiten. Um diese auf der Webseite zu aktualiseren, drücke auf das Stift-Symbol zum bearbeiten. Wähle dort deine Datei aus und klicke auf "Speichern". Fertig!

Du willst eigene Funktionen erstellen? Das musst du beachten!

Um Probleme bei Updates zu vermeiden, gibt es eigene Dateien in denen du deine Funktionen schreiben darfst. Diese sind durch ein ".user" im Dateinamen gekennzeichnet. Diese Dateien brauchen bei Updates nicht überschrieben werden! Neue Klassen im Verzeichnis "classes/" sind kein Problem.

Wir nehmen an du möchtest eine Tabelle ausgeben lassen, in der Ergebnisse von Spielen stehen. Zuerst müssen wir uns überlegen welche Felder wir brauchen. In unserem Beispiel erstellen wir folgende MySQL-Tabelle:

CREATE TABLE `[prefix]_ml_spiele` (
  `id` bigint(16) UNSIGNED NOT NULL,
  `spiel` varchar(64) NOT NULL,
  `ergebnis` varchar(8) NOT NULL,
  `zeitpunkt` DATETIME NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

ALTER TABLE `[prefix]_ml_spiele`
  ADD PRIMARY KEY (`id`);

ALTER TABLE `[prefix]_ml_spiele`
  MODIFY `id` bigint(16) UNSIGNED NOT NULL AUTO_INCREMENT;
COMMIT;
Hier muss noch der Prefix durch euren angegebenen ersetzt werden.

Nachdem wir die MySQL-Tabelle erstellt haben, legen wir eine Seite an. Wir nennen diese mal "spiel.php". (siehe Anleitung: Eine Seite erstellen)

<table class="table table-bordered">
	<thead>
		<tr>
			<th>Spiel</th>
			<th>Ergebnis</th>
			<th>Tag</th>
		</tr>
	</thead>
	<tbody>
		<!-- Hier kommt unsere PHP Ausgabe -->
		<?php echo spieleTabelle(); // Ausgabe der Rückgabe unserer Funktion welche wir noch erstellen ?>
	</tbody>
</table>

Um keinen HTML-Code in die PHP-Funktion zu schreiben nutzen wir noch eine so genannte "TPL" (Template) Datei. Diese ist eine Vorlage mit Platzhaltern wo unser PHP-Script später unsere Informationen einsetzt. Nun legen wir eine Datei im Verzeichnis "./system/tpl/spiel/" (Verzeichnis "spiel" muss erstellt werden) mit dem Namen "spiel_eintrag.tpl" an. Bei uns sieht die folgendermaßen aus, dabei geben wir unsere Platzhalter mit geschweiften Klammern an:
<tr>
	<td>{SPIEL}</td>
	<td>{ERGEBNIS}</td>
	<td>{TAG}</td>
</tr>


Jetzt schreiben wir unsere Funktion in die Datei "functions.user.php".

function spieleTabelle(){
	global $mysql; // Um Zugriff auf die Datenbank zu haben
	$template = file_get_contents('./system/tpl/spiel/spiel_eintrag.tpl'); // Unsere TPL-Datei laden
	$rueckgabe = array(); // Erstellen eines Array für die Rückgabe
	$suchen = array("{SPIEL}", "{ERGEBNIS}", "{TAG}"); // Erstelen eines Arrays für alle Platzhalter welche wir verwendet haben.
	
	$sql = $mysql->query("SELECT * FROM `".Prefix."_spiele` ORDER BY `zeitpunkt` DESC"); // MySQL Abfrage um die Tabelle auszugeben und nach dem Zeitpunkt zu sortieren (aktuellste zuerst)
	while($row = $sql->fetch_assoc()){ // Alle Zeilen der Tabelle auslesen
		$ersetzen = array($row["spiel"], $row["ergebnis"], $row["zeitpunkt"]); // Erstellen eines Arrays mit den Werten gegen wir die Platzhalter tauschen wollen
		$rueckgabe[] = str_replace($suchen, $ersetzen, $template); // Ersetzt alle Platzhalter die im $suchen Array angegeben sind durch die Werte aus dem $ersetzen Array und speichert den Eintrag in unser $rueckgabe Array
	}
	
	if($sql->num_rows == 0){ // Falls unsere Tabelle leer ist wird folgendes zurück gegeben
		$rueckgabe[] = str_replace($suchen, array("Kein", "Eintrag", "vorhanden"), $template);
	}
	
	return implode("\n", $rueckgabe); // Rückgabe des kompletten Arrays als String
	// implode macht aus dem Array ein String und setzt dabei alle Werte aus dem Array zusammen mit dem "Kleber" (engl. glue) "\n" (Zeilenumbruch)
}

Nun brauchen wir unsere Tabelle nur noch mit Daten füllen und wir sehen wie diese auf unserer Seite ausgegeben werden.


Tabelle '[prefix]_ml_spiele'
+----+---------+----------+---------------------+
| id | spiel    | ergebnis  | zeitpunkt            |
+----+---------+----------+---------------------+
|  1 | BVB/S04  | 1:1       | 2018-01-01 20:00:00 |
|  2 | S04/HSV  | 3:1       | 2018-02-01 19:00:00 |
+----+---------+----------+---------------------+