Hallo Community,
ich versuche gerade ein Script zu erstellen das über den Contao3 (Version 3.1.1) Scheduler terminiert wird.
Das Script soll Inhalte aus der News Tabelle per E-Mail verschicken.
Soweit funktioniert das auch alles, bis auf den Datenbankzugriff innerhalb des Scripts.
Irgendwie bekomme ich das mit dem Datenbank-Objekt nicht hin. Das durchlaufen der Treffer liefert nicht das erhoffte Ergebnis und der Task wird nicht korrekt beendet.
Die Suche gibt außer dem Hinweis auf die PurgeLog leider nicht viel her.
Ich habe mich jedoch bereits an der Datei PurgeLog orientiert und diese als Vorlage genommen.
Hier mein Script:
PHP-Code:
/**
* Initialize the system
*/
define('TL_MODE', 'BE');
require_once('../../../initialize.php');
class SendMessagesIntranet extends Backend
{
/**
* Initialize the controller
*/
public function __construct()
{
parent::__construct();
$this->import( 'Database' );
} // __construct
/**
* Implement the commands to run by this batch program
*/
public function run()
{
global $cronJob; // from CronController
//At this time the job should be defered,
//no new actions should be started after this time.
if (time() >= $cronJob['endtime'])
{
$cronJob['completed'] = false;
return;
}
// Datenbank auslesen
$intranetNews = $this->Database->prepare("SELECT id, teaser FROM tl_news
WHERE pid=4 AND UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 7 day)) <= time AND published = 1
ORDER BY time DESC")
->execute();
unset($mailtext);
$mailtext = "Alle News dieser Woche:\n\n";
$mailtext .= "----------------------------------------------------------------------------------------------------------------------------\n";
while ($intranetNews->next())
{
// HTML Konvertieren
$strTeaser = strip_tags($intranetNews->teaser);
$strTeaser = $this->String->decodeEntities($strTeaser);
$strTeaser = str_replace(array('[&]', '[lt]', '[gt]'), array('&', '<', '>'), $strTeaser);
$mailtext .= wordwrap($strTeaser, 80)."\n\n";
}
$mailtext .= "----------------------------------------------------------------------------------------------------------------------------\n";
/*--------------E-mail -------------- */
// Notification
$objEmail = new Email();
$objEmail->from = 'info@meinedomain.de';
$objEmail->fromName = 'Meine Domain';
$objEmail->subject = 'News dieser Woche';
// Die E-Mail an verschicken
$objEmail->sendTo('mail@empfaengerdomain.de');
} // run
}
/**
* Instantiate
*/
$SendMessagesIntranet = new SendMessagesIntranet();
$SendMessagesIntranet->run();
Woran könnte das liegen und wie kann ich das hinbekommen?
Vielen Dank
Timon
Lesezeichen