Example #1
0
 /**
  * Add to the queue the subscriber selected
  * @param integer $subscriber_id
  */
 public static function add_to_queue($subscriber_id, $news_id)
 {
     // Check if the subscriber is already in the current queue
     if (false == self::subscriber_exists_in_active_queue($subscriber_id, $news_id)) {
         $queue = new NewslettersHistory();
         $queue['subscriber_id'] = $subscriber_id;
         $queue['news_id'] = $news_id;
         $queue['date_added'] = date('Y-m-d H:i:s');
         return $queue->trySave();
     }
 }
Example #2
0
 /**
  * Send the newsletter to the queue
  */
 public static function send_queue($test = FALSE, $id = NULL)
 {
     $queue = NewslettersHistory::get_active_queue($test, $id);
     $isp = Isp::getActiveISP();
     try {
         // Get the template from the main email template folder
         $retval = Shineisp_Commons_Utilities::getEmailTemplate('newsletter');
         if (!empty($retval) && !empty($queue)) {
             $contents = Newsletters::fill_content();
             $subject = $retval['subject'];
             $template = $retval['template'];
             $subject = str_replace("[subject]", $queue[0]['Newsletters']['subject'], $subject);
             $template = str_replace("[subject]", $queue[0]['Newsletters']['subject'], $template);
             $template = str_replace("[body]", $queue[0]['Newsletters']['message'], $template);
             foreach ($contents as $name => $content) {
                 $template = str_replace("[" . $name . "]", $content, $template);
             }
             foreach ($isp as $field => $value) {
                 $template = str_replace("[" . $field . "]", $value, $template);
             }
             $template = str_replace("[url]", "http://" . $_SERVER['HTTP_HOST'] . "/media/newsletter/", $template);
             foreach ($queue as $item) {
                 // Send a test of the newsletter to the default isp email otherwise send an email to the queue
                 if ($test) {
                     $body = str_replace("[optout]", "#", $template);
                     Shineisp_Commons_Utilities::SendEmail($isp['email'], $isp['email'], null, "<!--TEST --> " . $subject, $body, true);
                     break;
                 } else {
                     // Create the optout link to be added in the email
                     $body = str_replace("[optout]", '<a href="http://' . $_SERVER['HTTP_HOST'] . "/newsletter/optout/id/" . MD5($item['NewslettersSubscribers']['email']) . '" >Unsubscribe</a>', $template);
                     $result = Shineisp_Commons_Utilities::SendEmail($isp['email'], $item['NewslettersSubscribers']['email'], null, $subject, $body, true);
                     if ($result === true) {
                         NewslettersHistory::set_status($item['subscriber_id'], $item['newsletter_id'], 1, "Mail Sent");
                     } else {
                         NewslettersHistory::set_status($item['subscriber_id'], $item['newsletter_id'], 0, $result['message']);
                     }
                     Newsletters::set_sending_date($item['news_id']);
                 }
             }
         }
     } catch (Exception $e) {
         echo $e->getMessage();
         return false;
     }
     return true;
 }
Example #3
0
 /**
  * editAction
  * Get a record and populate the application form 
  * @return unknown_type
  */
 public function editAction()
 {
     $form = $this->getForm('/admin/newsletter/process');
     $id = $this->getRequest()->getParam('id');
     if (!empty($id) && is_numeric($id)) {
         $fields = "news_id, subject, DATE_FORMAT(sendat, '%d/%m/%Y %H:%i:%s') as sendat, DATE_FORMAT(sent, '%d/%m/%Y %H:%i:%s') as sent, subject, message";
         $rs = $this->newsletter->getAllInfo($id, $fields, true);
         if (!empty($rs[0])) {
             $form->populate($rs[0]);
             $this->view->record = $rs[0];
             // Get the queue
             $this->view->queue = array('records' => NewslettersHistory::get_queue_by_newsletter_id($id, "newsletter_id, nh.date_added as added, nh.date_sent as sent, ns.email as email, c.lastname as user"));
             // Hide these fields and values inside the vertical grid object
             $this->view->data = array('records' => $rs);
             // Create the buttons in the edit form
             $this->view->buttons = array(array("url" => "#", "label" => $this->translator->translate('Save'), "params" => array('css' => null, 'id' => 'submit')), array("url" => "/admin/newsletter/sendtest//id/{$id}", "label" => $this->translator->translate('Test'), "params" => array('css' => null)), array("url" => "/admin/newsletter/confirm/id/{$id}", "label" => $this->translator->translate('Delete'), "params" => array('css' => null)), array("url" => "/admin/newsletter/list", "label" => $this->translator->translate('List'), "params" => array('css' => null, 'id' => 'submit')), array("url" => "/admin/newsletter/new/", "label" => $this->translator->translate('New'), "params" => array('css' => null)));
         }
     }
     $this->view->title = $this->translator->translate("Newsletter edit");
     $this->view->description = $this->translator->translate("Here you can edit the newsletter.");
     $this->view->form = $form;
     $this->render('applicantform');
 }
Example #4
0
 /**
  * Save all the information about the newsletter
  * @param array $params
  */
 public static function save_data($params)
 {
     if (is_numeric($params['news_id'])) {
         $newsletter = self::getbyId($params['news_id']);
     } else {
         $newsletter = new Newsletters();
     }
     $newsletter['subject'] = $params['subject'];
     $newsletter['sendat'] = Shineisp_Commons_Utilities::formatDateIn($params['sendat']);
     $newsletter['sent'] = Shineisp_Commons_Utilities::formatDateIn($params['sent']);
     $newsletter['message'] = $params['message'];
     $newsletter->save();
     // If the newsletter has been already sent and you'd like to send it again, clear the history
     if ($params['sendagain']) {
         NewslettersHistory::clear_queue($newsletter['news_id']);
         // Update the sent field value
         $newsletter['sent'] = null;
         $newsletter->save();
     }
     // Create the queue
     NewslettersHistory::add_all_to_queue($newsletter['news_id']);
     return $newsletter['news_id'];
 }