*/
/*
* Dieses Skript durchläuft alle Dateien vom Typ .sql im Ordner system/sql.
* Wenn von diesen SQLs Datensätze retourniert werden (die nicht NULL sind) oder Fehler auftreten, werden diese in ein Mail gepackt und an MAIL_ADMIN geschickt.
*/
require_once('../config/global.config.inc.php');
require_once('../config/vilesci.config.inc.php');
require_once('../include/functions.inc.php');
require_once('../include/benutzerberechtigung.class.php');
require_once('../include/mail.class.php');
// Datenbankverbindung herstellen
if (! $db = new basis_db ())
die ( 'Es konnte keine Verbindung zum Server aufgebaut werden.' );
$slq_import_path = DOC_ROOT.'system/sql';
$mailcontent = '';
$mailheader = '
';
// Wenn das Script ueber die Kommandozeile aufgerufen wird, erfolgt keine Authentifizierung
if (php_sapi_name() != 'cli')
{
$uid = get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($uid);
if(!$rechte->isBerechtigt('admin'))
{
exit($rechte->errormsg);
}
}
$files = glob($slq_import_path.'/*.sql');
$filename = '';
$db_row = '';
if (($files = glob($slq_import_path.'/*.sql')) != false)
{
foreach ($files as $file)
{
$filename = (basename($file));
$sql = file_get_contents($file);
// Checken, ob letztes Zeichen ; ist, wenn nicht, hinzufügen
if (substr($sql, -1, 1) != ';')
$sql = $sql .= '; ';
// Wenn Fehler auftritt, diesen ins Mail schreiben
if (! @$result = $db->db_query ($sql))
{
$mailcontent .= '
Die Abfrage der Datei "'.$filename.'" hat folgenden Fehler geliefert:
';
$mailcontent .= ''.$db->db_last_error () . '
';
$mailcontent .= ''.$sql.'
';
continue;
}
// Wenn mehr als eine row vom SQL zurückkommen und diese nicht NULL ist, diese ins Mail schreiben
if ($db->db_num_rows($result) > 1 || ($db->db_num_rows($result) == 1 && $db->db_fetch_row($result)[0] != ''))
{
$mailcontent .= 'Die Abfrage der Datei "'.$filename.'" hat folgendes Ergebnis geliefert:
';
// Wenn zu viele Datensätze retourniert werden, abbrechen und Meldung ausgeben
if ($db->db_num_rows($result) > 1000)
$mailcontent .= 'ACHTUNG! Es wurden mehr als 1000 Datensätze zurückgegeben
';
$mailcontent .= '';
$array = array();
$result = $db->db_query ($sql);
$object = $db->db_fetch_object($result);
$row_array = get_object_vars($object);
foreach($row_array AS $key => $value)
{
$mailcontent .= '| '.$key.' | ';
}
$mailcontent .= '
';
$counter = 0; // Wenn mehr als 1000 Datensätze retourniert werden, abbrechen
$result = $db->db_query ($sql);
while($row = $db->db_fetch_object($result))
{
if ($counter == 1000)
break;
$mailcontent .= '';
foreach ($row AS $column)
{
$mailcontent .= '| '.($column === 'f' ? 'false' : ($column === 't' ? 'true' : $column)).' | ';
}
$mailcontent .= '
';
$counter++;
}
$mailcontent .= '
';
}
}
}
else
$mailcontent = '';
// Wenn Mailcontent nicht leer ist, Mail senden
if ($mailcontent != '')
{
$mailcontent = $mailheader.$mailcontent;
echo $mailcontent;
$mail = new mail(MAIL_ADMIN, 'no-reply', 'Fehler in System Check "addons/bewerbung/cronjobs/system_check.php"', 'Bitte sehen Sie sich die Nachricht in HTML Sicht an, um den Inhalt vollständig darzustellen.');
$mail->setHTMLContent($mailcontent);
$mail->send();
}
else
echo 'Es sind keine Fehler aufgetreten';