CMS Contao 2.11.1x

Hier findest Du einige von mir geänderte Templates, die ich unter anderem auf dieser Seite verwende. Einige Ideen und Anregungen hab ich dem Contao Community Forum entnommen. Viel Hilfe habe ich auch vom Kellerkind erhalten, an dieser Stelle nochmals vielen Dank dafür!

Datenbank Backup bei all-inkl + Link im Backend

Der Webhoster all-inkl bietet ein kleines Script an, mit dem man seine Datenbank sichern kann. Hier poste ich das Script und gleich die nötige Änderung im Backend, um einen Link anzuzeigen. Sicherheitshalber setzt man einen .htaccess Verzeichnis / Zugriffsschutz auf das Verzeichnis, in dem die Backupdatei liegt.

Diese Datei im obersten Verzeichnis von Contao als backup/db_backup.phpx speichern:

Code eingefügt. Hier klicken zum Ein- / Ausblenden
<?php
    ######## einstellungen #############################################
    $db_name = "xxxxxxx";
    $db_passwd = "xxxxxx";
    $downloadlink_erstellen = "ja";

    $bestaetigungsmail_senden = "ja";

    $bestaetigungsmail_adresse = "xxx@xxx.xx";
    $bestaetigungsmail_betreff = "Backup DB";

    $sql_file = "dump_" . $db_name . "_" . date('Ymd_Hi') . ".sql";

    ####################################################################
    ################## AB HIER BITTE NICHTS MEHR ÄNDERN!!! ################

    ### daten überprüfen
    if ( $db_name == "IhreDatenBank" or $db_passwd == "IhrDatenBankPasswort" )    {
        die("FEHLER: Sie m&uuml;ssen zun&auml;chst Ihre Datenbankdaten im Script eingeben!");
    }
        if ( file_exists($sql_file) or file_exists($sql_file . ".gz") )    {
            die("FEHLER: Das zu erstellende Dump existiert bereits!");
    }

    ## dump erstellen
    exec("mysqldump -u $db_name -p'$db_passwd' --quick --allow-keywords --add-drop-table --complete-insert --quote-names $db_name >$sql_file");
    exec("gzip $sql_file");


    ### größe ermitteln
    $datei = $sql_file . ".gz";
    $size = filesize($datei);
    $i = 0;
    
    while ( $size > 1024 )    {
        $i++;
        $size = $size / 1024;
    }
    
    $fileSizeNames = array(" Bytes", " KiloBytes", " MegaBytes", " GigaBytes", " TerraBytes");
    $size = round($size,2);
    $size = str_replace(".", ",", $size);
    $groesse = "$size $fileSizeNames[$i]";

    ### nachricht erstellen
    $message = "Ihr Backup der Datenbank <b>" . $db_name . "</b> wurde durchgeführt.<br>";
    $message .= "Die Größe des erstellten Dumps beträgt <b>" . $groesse . "</b>.<br>";

    if ($downloadlink_erstellen == "yes" or $downloadlink_erstellen == "ja" or $downloadlink_erstellen == "1")    {
        $link = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['PHP_SELF'];
        $link = str_replace(basename(__FILE__),$datei,$link);
        $message .= "Downloadlink: <a href=" . $link . ">" . $datei . "</a>";
    }

    ## nachricht ausgeben
    echo $message;

    ### mail versenden
    $message = str_replace("<br>", "\r\n", $message);
    $message = str_replace("<b>", "", $message);
    $message = str_replace("</b>", "", $message);
    
    if ($bestaetigungsmail_senden == "yes" or $bestaetigungsmail_senden == "ja" or $bestaetigungsmail_senden == "1")    {
    
        if(!preg_match( '/^([a-zA-Z0-9])+([.a-zA-Z0-9_-])*@([a-zA-Z0-9_-])+(.[a-zA-Z0-9_-]+)+/' , $bestaetigungsmail_adresse))    {
            echo "<br>FEHLER: Mail konnte nicht versendet werden, da die Adresse ung&uuml;ltig ist!";
        }
        else    {
            mail($bestaetigungsmail_adresse, $bestaetigungsmail_betreff,
            $message,"From: backupscript@{$_SERVER['SERVER_NAME']}\r\n" . "Reply-To: backupscript@{$_SERVER['SERVER_NAME']}\r\n")
            or die("FEHLER: Mail konnte wegen eines unbekannten Fehlers nicht versendet werden");
            echo "<br>Best&auml;tigungsmail wurde erfolgreich versandt!";
        }
    }
?>

Im Template be_main.html5 noch folgende Zeile einfügen. Hier im Beispiel ist es die Zeile 6, ich habe ein paar Zeilen drumrum dringelassen zur Orientierung:

Code eingefügt. Hier klicken zum Ein- / Ausblenden
<h1>Contao Open Source CMS <?php echo VERSION . '.' . BUILD; ?></h1>

<div>
<?php $this->import('BackendUser', 'User'); ?>
<?php if ($this->User->isAdmin): ?>
<span class="backup_db"><a href="backup/db_backup.phpx" title="Datenbank Backup">DB Backup</a> &nbsp; :: &nbsp; </span>
<?php endif; ?>
<span class="header_user_container"><a href="<?php echo $this->base; ?>contao/main.php?do=login" class="header_user" title="<?php echo $this->account; ?>"><?php echo $this->username; ?></a> &nbsp; :: &nbsp; </span>
<span class="header_preview_container"><a href="contao/preview.php<?php echo $this->frontendFile; ?>" target="_blank" class="header_preview" title="<?php echo $this->preview; ?>" accesskey="f"><?php echo $this->preview; ?></a> &nbsp; :: &nbsp; </span>
<span class="header_home_container"><a href="<?php echo $this->base; ?>contao/main.php" class="header_home" title="<?php echo $this->home; ?>" accesskey="h"><?php echo $this->home; ?></a> &nbsp; :: &nbsp; </span>
<span class="header_logout_container"><a href="<?php echo $this->base; ?>contao/index.php" class="header_logout" title="<?php echo $this->logout; ?>" accesskey="q"><?php echo $this->logout; ?></a></span>
</div>

Mit dem Zusatz zu Beginn des Linkelements wird noch geprüft, ob der User Administrator ist und nur dieser Gruppe angezeigt:

Code eingefügt. Hier klicken zum Ein- / Ausblenden
<?php $this->import('BackendUser', 'User'); ?>
<?php if ($this->User->isAdmin): ?> 

/* Hier entsprechende Elemente einbringen, die nur Administratoren angezeigt werden */

<?php endif; ?>

Achtung:

Bitte die Templates im Backend unter Templates auswählen und speichern und dann dort editieren! Ansonsten sind die Änderungen nicht updatesicher.

Zurück