Files
bm/public_html/public/cms/modules/newslettermailer.class.php
2025-09-24 13:26:28 +02:00

213 lines
5.9 KiB
PHP

<?php
/** Newsletter Mailer
*
* @version 1.0.1
* @since 2008-04-07
* @author martin lenzelbauer
*
*/
class NewsletterMailer extends CmsObject{
var $newsletter;
var $status;
/** C'tor
*/
//-----------------------------------------------
function NewsletterMailer($id, $parent){
//-----------------------------------------------
parent::CmsObject($id, $parent);
$this->name = "Newsletter senden";
$this->status = "new";
$this->newsletter = 0;
}
/** @see CmsObject::update()
*/
//-----------------------------------------------
function update(){
//-----------------------------------------------
$this->newsletter = $_POST['newsletter'];
}
/** @see CmsObject::printContent()
*/
//-----------------------------------------------
function printContent(){
//-----------------------------------------------
$out .= $this->doPrintErrors();
$out .= $this->doPrintNewsletterForm();
return $out;
}
/** shows the newsletter form
*/
//----------------------------------------------
function doPrintNewsletterForm(){
//----------------------------------------------
$t = new Template(CMS_TEMPLATE_DIR."newslettermailer1.html");
// status
if($this->status != "preview"){
$t->removeBlock("PREVIEW");
}
if($this->status != "send"){
$t->removeBlock("SEND");
}
// newsletter selection
$query = sprintf("SELECT id,creationDate FROM bruckm_newsletter ORDER BY creationDate DESC");
$result = dbQuery($query);
$newsletters = "";
while($line = mysqli_fetch_array($result, MYSQLI_ASSOC)){
$query = sprintf("SELECT id,name FROM bruckm_index WHERE classId = %d AND class = 'newsletter' LIMIT 1",
sqlnum($line['id']));
$result2 = dbQuery($query);
$line2 = mysqli_fetch_array($result2, MYSQLI_ASSOC);
$newsletters .= "<option value=\"$line2[id]\" ";
if($line2['id'] == $this->newsletter){
$newsletters .= "selected=\"selected\" ";
}
else if ($this->newsletter == 0) {
$this->newsletter = $line2['id'];
}
$newsletters .= ">" . htmlspecialchars($line2['name']) . " ($line[creationDate])</option>";
}
$t->setVar("NEWSLETTERS", $newsletters);
// status
$query = sprintf("SELECT classId FROM bruckm_index WHERE id = %d", sqlnum($this->newsletter));
$result = dbQuery($query);
$line = mysqli_fetch_array($result, MYSQLI_ASSOC);
$query = sprintf("SELECT recipientGroup, sent, total FROM bruckm_newsletter WHERE id = %d", sqlnum($line['classId']));
$result = dbQuery($query);
$newsletter = mysqli_fetch_array($result, MYSQLI_ASSOC);
$t->setVar("STATUS", "$newsletter[sent]/$newsletter[total] versendet");
if ($newsletter['sent'] != $newsletter['total']) {
$t->setVar("DISABLED", "disabled=\"disabled\"");
}
else {
$t->setVar("DISABLED", "");
}
// recipients
$groups = "<option value=\"0\"";
if ($newsletter['recipientGroup'] == 0) {
$groups .= " selected=\"selected\"";
}
$groups .= ">Alle</option>";
$query = sprintf("SELECT * FROM bruckm_ticketcustomergroup ORDER BY name ASC");
$result = dbQuery($query);
while($line = mysqli_fetch_array($result, MYSQLI_ASSOC)){
$groups .= "<option value=\"$line[id]\"";
if ($newsletter['recipients'] == $line['id']) {
$groups .= " selected=\"selected\"";
}
$groups .= ">$line[name]</option>";
}
$t->setVar("RECIPIENTS", $groups);
return $t->toString();
}
/** @see CmsObject::handleAction()
*/
//---------------------------------------------
function handleAction($action, $position=0, $type=NULL){
//---------------------------------------------
switch($action){
case "sendNewsletter":
$this->doSendNewsletter();
break;
case "sendPreview":
$this->doSendPreview();
break;
case "cancelNewsletter":
$this->doCancelNewsletter();
break;
}
}
/** @see CmsObject::getCssClass()
*/
//-----------------------------------------------
function getCssClass(){
//-----------------------------------------------
return "itemNewsletter";
}
// === ADDITIONAL METHODS ================================================================= //
/** activates sending the newsletter
*/
//-----------------------------------------------
function doSendNewsletter(){
//-----------------------------------------------
$newsletter = FlexiconFactory::instanceById($this->newsletter);
$newsletter->load();
$newsletter->setRecipientGroup($_POST['recipients']);
$newsletter->initSendingProcess();
$newsletter->sendNewsletter();
$newsletter->save();
$this->status = "send";
}
/** sends a preview version to the bruckmuehle
*/
//-----------------------------------------------
function doSendPreview(){
//-----------------------------------------------
$newsletter = FlexiconFactory::instanceById($this->newsletter);
$newsletter->load();
$newsletter->setRecipientGroup($_POST['recipients']);
$newsletter->save();
$newsletter->sendPreview($_POST['previewRecipient']);
$this->status = "preview";
}
/** cancels the sending process of the current newsletter
*/
//-----------------------------------------------
function doCancelNewsletter(){
//-----------------------------------------------
$newsletter = FlexiconFactory::instanceById($this->newsletter);
$newsletter->load();
$newsletter->cancel();
}
/** disables the newsletter for an e-mail address
* @param id customer id
*
//-----------------------------------------------
function doDisableNewsletter($id){
//-----------------------------------------------
$query = sprintf("SELECT email FROM bruckm_ticketcustomer WHERE id = %d", $id);
$result = dbQuery($query);
$line = mysqli_fetch_array($result, MYSQLI_ASSOC);
$query = sprintf("UPDATE bruckm_ticketcustomer SET newsletter = 'no' WHERE email = %s",
sqlstring($line['email']));
dbQuery($query);
}*/
/** sets the id
* @param id id
*/
//-----------------------------------------------
function setId($id){
//-----------------------------------------------
$this->id = $id;
}
};
?>