Joomla – Berichte über neue Nutzer, Berichte und Events regelmäßig erzeugen

In meiner Obhut habe ich eine Webseite, die mit Joomla CMS läuft. Als Jahrelanger WordPress-Nutzer ist das eine ganz schöne Arbeit gewesen, mich in die Joomla Logik reinzudenken und die Seite zu verstehen. Dummerweise lief Langezeit die E-Mail-Benachrichtigung der Joomla-Seite nicht, sodass man alle paar Tage mal reinschauen musste um zu prüfen ob es was freizugeben gab.

Um dieses unnötige Übel zu erleichtern habe ich mir folgendes PHP-Script geschrieben, welches neue Nutzer, neue Beiträge und neue Events ausliest und mich per Mail informiert. Das Script lief dann über einen Crontab oder direkten Aufruf der URL.

Bevor ihr das Script nutzt, müsst ihr Zugangsdaten zur MySQL/Maria-Datenbank und E-Mail-Adressen eintragen. Zu finden im Abschnitt „configuration“.

<?php
/* PHP Script zum Auslesen neuer Nutzer und unveröffentlicher Berichte und Events
 * www.mathias-jaekel.de
 * 04.05.2019
 * 
 * Konfiguration:
 * - Variablen im Abschnitt "configuration" anpassen
 */

error_reporting(E_ALL ^  E_NOTICE ^ E_DEPRECATED); 

//
// configuration
//

    $CONFIG['mail_sender']="webmaster@webseit....de";
	$CONFIG['db_server']="localhost";
	$CONFIG['db_name']="joomla_db123";
	$CONFIG['db_user']="joomla_db_user";
	$CONFIG['db_password']="sicheres_password";
	$CONFIG['db_joomla_prefix']="ohfy5";
    
    $mail_receiver=array("hab_eine_mail@web...de");


//
// functions
//
function send_email($mail_receiver,$mail_subject="",$Text){
	
	global $CONFIG;
	
	$FromName=$CONFIG['mail_sender'];	
	$Header ="From:".$FromName." <".$FromName.">\r\n";
	$Header .= "Reply-To: ".$FromName."\r\n";
	$Header .= "X-Mailer: PHP/".phpversion()."\r\n";
	$Header .= "MIME-Version: 1.0\r\n";	
	$Header .= "Content-Type: text/html; charset=ISO-8859-1\r\n";	
	mail($mail_receiver,$mail_subject,$Text,$Header);
}

//
// BRAIN
//
$mysqli = new mysqli($CONFIG['db_server'],$CONFIG['db_user'],$CONFIG['db_password'],$CONFIG['db_name']);
echo "-".$mysqli->connect_error;


//check for registered new users   
    $create_month=date("Y-m");
    $content="";
    
///////////////////
    $query = "SELECT name, username, email, registerDate FROM ".$CONFIG['db_joomla_prefix']."_users";// WHERE registerDate LIKE '".$create_month."%'";	
    $result = $mysqli->query($query);
    while($data = $result->fetch_assoc()){
        
         $content.="name:".$data['name']." username:".$data['username']." registered: ".$data['registerDate']."<br>";
    }
    

////////////////////

    echo "<h1>User registrations</h1>content: ".$content."<br>";
    if(strlen($content)>5){
        foreach($mail_receiver as $receiver){
            echo "- sende status an: ".$receiver."<br>";
            send_email($receiver,"ASVzR.de - Zusammenfassung neue Nutzer",$content);
        }
    }else{
        
        echo "- no new users found<br>";
        
    }

//check for new unpublished content
    $create_month=date("Y-m");
    $content="";
    $query   	= "SELECT title, modified, created FROM ".$CONFIG['db_joomla_prefix']."_content WHERE created LIKE '".$create_month."%' AND publish_up='0000-00-00 00:00:00'";	
    $result = $mysqli->query($query);
    while($data = $result->fetch_assoc()){

        $content.="Titel:".$data['title']." created: ".$data['created']." modified:".$data['modified']."<br>";
    }
    echo "<h1>new Content</h1>content: ".$content."<br>";
    if(strlen($content)>5){
        foreach($mail_receiver as $receiver){
            send_email($receiver,"Zusammenfassung neue Berichte",$content);
        }
    }else{
        
        echo "- no new content found<br>";
        
    }
    
//check for new unpublished events
    $create_month=date("Y-m");
    $content="";
    $query   	= "SELECT * FROM ".$CONFIG['db_joomla_prefix']."_jevents_vevdetail WHERE modified LIKE '".$create_month."%'";	
    $result = $mysqli->query($query);
    while($data = $result->fetch_assoc()){

        $content.="Event:".$data['summary']." modified:".$data['modified']."<br>";
    }  
    echo "<h1>new Events</h1>content: ".$content."<br>";
    if(strlen($content)>5){
        foreach($mail_receiver as $receiver){
            send_email($receiver,"Zusammenfassung neue Events",$content);
        }
    }else{
        
        echo "- no new events found<br>";
        
    }
$mysqli->close();
?>

weitere Beiträge über JOOMLA CMS

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.