213 lines
5.9 KiB
PHP
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;
|
|
}
|
|
|
|
|
|
};
|
|
|
|
?>
|