'Varchar', 'MailingPageAfzenderEmail' => 'Varchar', 'MailingPageOnderwerp' => 'Varchar', 'MailingPageAlternatieveTekst' => 'Text', 'MailingPageContent' => 'Text', 'VerzendStatus' => "Enum('InWachtrij, AdressenToevoegen, WordtVerstuurd, IsVerstuurd','InWachtrij')" ); static $has_one = array ( 'MailingPage' => 'SiteTree' ); static $has_many = array ( 'GelezenDoor' => 'SimpleMailGelezenDoor' ); static $many_many = array ( 'VerzondenAanMailingListPages' => 'MailingListPage', 'EmailOntvangers' => 'SimpleMailInschrijving' ); public static $many_many_extraFields = array ( 'EmailOntvangers' => array('MailStatus' => "Enum('InWachtrij, Verstuurd, Gelezen','InWachtrij')", 'Hostname' => 'Varchar(250)', 'GelezenOp' => 'Varchar') ); static $defaults = array ( 'VerzendStatus' => 'InWachtrij' ); public function SetContentFields($MailingPage) { $this->MailingPageAfzenderNaam = $MailingPage->MailingPageAfzenderNaam; $this->MailingPageAfzenderEmail = $MailingPage->MailingPageAfzenderEmail; $this->MailingPageOnderwerp = $MailingPage->MailingPageOnderwerp; $this->MailingPageAlternatieveTekst = $MailingPage->MailingPageAlternatieveTekst; SSViewer::setOption('rewriteHashlinks', false); $this->MailingPageContent = $MailingPage->render(); SSViewer::setOption('rewriteHashlinks', true); $this->MailingPageID = $MailingPage->ID; } public function GetTable() { return $this->renderWith('SimpleMailInschrijvingTable'); } public function GetStatusen() { $sqlQuery = new SQLQuery ( $select = "MailStatus, COUNT(MailStatus) AS Aantal ", $from = array('SimpleMailVerzendOpdracht_EmailOntvangers'), $where = "SimpleMailVerzendOpdrachtID = ".$this->ID, $orderby = "MailStatus", $groupby = "MailStatus", $having = "", $limit = "" ); //$rawSQL = $sqlQuery->sql(); //mail("t.schippers@tirato.nl", 'SQL', $rawSQL); $results = $sqlQuery->execute(); $data = new DataObjectSet(); foreach ($results as $item) { $data->push(new ArrayData(array( 'Aantal' => (string)$item['Aantal'], 'MailStatus' => (string)$item['MailStatus'] ))); } return $data; } public function AddOntvangersVanuitLijst() { if($this->VerzendStatus == 'InWachtrij') { $this->VerzendStatus = 'AdressenToevoegen'; $this->write(); $thisId = $this->ID; $insert = 'INSERT INTO `SimpleMailVerzendOpdracht_EmailOntvangers` (`SimpleMailVerzendOpdrachtID`, `SimpleMailInschrijvingID`) VALUES '; $i = 0; foreach ($this->VerzondenAanMailingListPages() as $lijst) { $sqlQuery = new SQLQuery("SimpleMailInschrijving.ID AS InschrijfId", "MailingListPage LEFT JOIN SimpleMailInschrijving ON MailingListPage.ID = SimpleMailInschrijving.MailingListPageID", "Status = 'Geactiveerd' AND MailingListPage.ID = ".$lijst->ID); $rawSQL = $sqlQuery->sql(); $result = $sqlQuery->execute(); foreach ($result as $ding) { if($i < 1000000) { $insert .= "($thisId, ".$ding['InschrijfId']."),"; } else { $insert .= "($thisId, ".$ding['InschrijfId'].");"; mysql_query($insert) or die(mysql_error())."
"; $i = 0; $insert = 'INSERT INTO `SimpleMailVerzendOpdracht_EmailOntvangers` (`SimpleMailVerzendOpdrachtID`, `SimpleMailInschrijvingID`) VALUES '; } $i++; } } mysql_query(rtrim($insert, ",")) or die(mysql_error()); $this->VerzendStatus = 'WordtVerstuurd'; $this->write(); } } public function IsGelezenImage($inschrijving = null) { return '/SimpleMailController/read/'.$this->ID.'/'.$inschrijving->ID."-".$inschrijving->GetHash(); } public function VerstuurNaarOntvangers($limit = null) { if($limit == null) $limit = self::$MailtjesPerMinuut; $items = $this->GetManyManyComponents('EmailOntvangers', "SimpleMailVerzendOpdracht_EmailOntvangers.MailStatus = 'InWachtrij'", 'RAND()','', "0, $limit"); if($items->Count() < 1) { $this->VerzendStatus = 'IsVerstuurd'; $this->write(); } else { foreach ($items as $inschrijving) { $this->VerstuurNaarOntvanger($inschrijving); //$items->remove($inschrijving); //Many_many_extrafield zooi aanpassen naar MailStatus Verstuurd $items->add($inschrijving, array('MailStatus'=>'Verstuurd')); /*echo '
Inschrijving
'; Debug::show($inschrijving); echo '
This/Verzendopdracht
'; Debug::show($this); echo '
inschrijving->many_many_extraFields()
'; Debug::show($inschrijving->many_many_extraFields());*/ } } } public function VerstuurNaarOntvanger($inschrijving) { require_once("class.phpmailer.php"); $body = $this->MailingPageContent; $body = eregi_replace("[\]",'',$body); $body = $inschrijving->VervangVariabelenInHtml($body); $body .= ''; $mail = new PHPMailer(); $mail->IsSMTP(); $mail->Host = "reseller-relay.mail.pcextreme.nl"; $mail->SMTPDebug = 1; //$mail->AddReplyTo('aap@woho.nl'); $mail->SetFrom($this->MailingPageAfzenderEmail, $this->MailingPageAfzenderNaam); $mail->Subject = $inschrijving->VervangVariabelenInHtml($this->MailingPageOnderwerp); $mail->AltBody = $inschrijving->VervangVariabelenInHtml($this->MailingPageAlternatieveTekst); $mail->MsgHTML($body); $mail->AddAddress($inschrijving->GetEmailAdres(), $inschrijving->GetNaam()); $mail->CharSet = 'UTF-8'; if(!$mail->Send()) { echo 'Error: '.$mail->ErrorInfo.'
'; return false; } else { echo $inschrijving->GetEmailAdres()." Bericht is verzonden
"; return true; } } } ?>