/**
  * @magentoDataFixture Magento/Customer/_files/customer.php
  */
 public function testGetSubscriptionObject()
 {
     $this->customerSession->setCustomerId(1);
     $subscriber = $this->block->getSubscriptionObject();
     $this->assertInstanceOf('Magento\\Newsletter\\Model\\Subscriber', $subscriber);
     $this->assertFalse($subscriber->isSubscribed());
 }
 public function add($data)
 {
     $model = new Newsletter();
     $email = $data['email'];
     // verificam daca e email
     return $model->add($email);
 }
 public function testDeveriaRetornarGruposVaziosSeRecebeuNenhumEmail()
 {
     $expected = ['tecnologia' => [], 'filosofia' => []];
     $emails = array();
     $service = new Newsletter();
     $groups = $service->sendAll($emails);
     $this->assertEquals($expected, $groups);
 }
 public function Create(Newsletter &$newsletter)
 {
     $subject = $newsletter->getSubject();
     $content = $newsletter->getContent();
     $statement = $this->instance->prepare("INSERT INTO Newsletters (Subject, Content) VALUES (:subject, :content)");
     $statement->bindParam(':subject', $subject);
     $statement->bindParam(':content', $content);
     return $statement->execute();
 }
 /**
  * @param Newsletter $newsletter
  * @param NewsletterType $type
  */
 function __construct($newsletter, $type = null)
 {
     $this->newsletter = $newsletter;
     $this->nlType = $type ? $type : $newsletter->getNewsletterType();
     parent::__construct();
     $this->body = $newsletter->getContentBody();
     $this->populateTemplate(new ArrayData(array('Newsletter' => $this->Newsletter, 'UnsubscribeLink' => $this->UnsubscribeLink())));
     $this->extend('updateNewsletterEmail', $this);
 }
Example #6
0
 public function actionCheck($key)
 {
     $executionTime = KeyValue::model()->findByPk('newsletter_execution_time');
     $frequency = KeyValue::model()->findByPk('newsletter_frequency');
     $newsletter = new Newsletter();
     if (time() >= strtotime($executionTime->value) + $frequency->value && $frequency->value != '1' && $newsletter->make() !== false) {
         $this->render('check', array('send' => 'true'));
     } else {
         $this->render('check', array('send' => 'false'));
     }
     Yii::app()->end();
 }
 /**
  * @param Newsletter $newsletter
  * @param Mailinglists $recipient
  * @param Boolean $fakeRecipient
  */
 function __construct($newsletter, $recipient, $fakeRecipient = false)
 {
     $this->newsletter = $newsletter;
     $this->mailinglists = $newsletter->MailingLists();
     $this->recipient = $recipient;
     $this->fakeRecipient = $fakeRecipient;
     parent::__construct($this->newsletter->SendFrom, $this->recipient->Email);
     $this->populateTemplate(new ArrayData(array('UnsubscribeLink' => $this->UnsubscribeLink(), 'SiteConfig' => DataObject::get_one('SiteConfig'), 'AbsoluteBaseURL' => Director::absoluteBaseURLWithAuth())));
     $this->body = $newsletter->getContentBody();
     $this->subject = $newsletter->Subject;
     $this->ss_template = $newsletter->RenderTemplate;
     if ($this->body && $this->newsletter) {
         $text = $this->body->forTemplate();
         //Recipient Fields ShortCode parsing
         $bodyViewer = new SSViewer_FromString($text);
         $text = $bodyViewer->process($this->templateData());
         // Install link tracking by replacing existing links with "newsletterlink" and hash-based reference.
         if ($this->config()->link_tracking_enabled && !$this->fakeRecipient && preg_match_all("/<a\\s[^>]*href=\"([^\"]*)\"[^>]*>(.*)<\\/a>/siU", $text, $matches)) {
             if (isset($matches[1]) && ($links = $matches[1])) {
                 $titles = isset($matches[2]) ? $matches[2] : array();
                 $id = (int) $this->newsletter->ID;
                 $replacements = array();
                 $current = array();
                 // workaround as we want to match the longest urls (/foo/bar/baz) before /foo/
                 array_unique($links);
                 $sorted = array_combine($links, array_map('strlen', $links));
                 arsort($sorted);
                 foreach ($sorted as $link => $length) {
                     $SQL_link = Convert::raw2sql($link);
                     $tracked = DataObject::get_one('Newsletter_TrackedLink', "\"NewsletterID\" = '" . $id . "' AND \"Original\" = '" . $SQL_link . "'");
                     if (!$tracked) {
                         // make one.
                         $tracked = new Newsletter_TrackedLink();
                         $tracked->Original = $link;
                         $tracked->NewsletterID = $id;
                         $tracked->write();
                     }
                     // replace the link
                     $replacements[$link] = $tracked->Link();
                     // track that this link is still active
                     $current[] = $tracked->ID;
                 }
                 // replace the strings
                 $text = str_ireplace(array_keys($replacements), array_values($replacements), $text);
             }
         }
         // replace the body
         $output = new HTMLText();
         $output->setValue($text);
         $this->body = $output;
     }
 }
 public function actionNewsletter()
 {
     $news = new Newsletter();
     if (isset($_POST['email'])) {
         $news->email = $_POST['email'];
         $news->active = 1;
         if ($news->save()) {
             $this->render('newletter-thankyou');
         }
         Yii::app()->end();
     }
     $news->validate();
     $this->render('newletter-error', array('model' => $news));
 }
Example #9
0
 /**
  * Sends newsletter to User groups
  */
 protected function _newsletters()
 {
     $now = date('Y-m-d');
     $emails = array();
     $newsletters = Newsletter::all(array("scheduled = ?" => $now), array("template_id", "group_id"));
     foreach ($newsletters as $n) {
         $template = Template::first(array("id = ?" => $n->template_id));
         $group = Group::first(array("id = ?" => $n->group_id), array("users"));
         $results = json_decode($group->users);
         if (count($results) == 1 && $results[0] == "*") {
             $users = User::all(array(), array("email"));
             foreach ($users as $user) {
                 array_push($emails, $user->email);
             }
         } else {
             foreach ($results as $r) {
                 array_push($emails, $r->email);
             }
         }
         $batches = array_chunk($emails, 100);
         foreach ($batches as $batch) {
             $e = implode(",", $batch);
             $this->notify(array("template" => "newsletter", "subject" => $template->subject, "message" => $template->body, "track" => true, "emails" => $e));
         }
     }
 }
Example #10
0
 function PrivateNewsletter($news_id, $subs_retriever = null)
 {
     if (is_null($subs_retriever)) {
         $subs_retriever = new JUserInfoRetriever($news_id);
     }
     parent::Newsletter($news_id, $subs_retriever);
 }
Example #11
0
 protected final function __construct()
 {
     //If there is a login attempt
     if (isset($_POST['username']) && isset($_POST['password']) && !empty($_POST['username']) && !empty($_POST['password'])) {
         //Did they check the remember me box
         $remember = isset($_POST['remember']) && !empty($_POST['remember']) ? true : false;
         $this->authenticate($_POST['username'], $_POST['password'], $remember);
     } else {
         //If there is a cookie for the username and they are not logged in
         if (isset($_COOKIE['username']) && !empty($_COOKIE['username']) && !$this->is()) {
             //If we haven't pushed the user to the login
             if (!$GLOBALS['session']->get('login_push')) {
                 $GLOBALS['session']->set('login_push', true);
                 //Try to have them login
                 if (!isset($_GET['_a']) || $_GET['_a'] != 'login') {
                     httpredir('index.php?_a=login');
                 }
             }
         }
         $this->_load();
         //IS_USER defines if a the user is a valid user on the template
         $GLOBALS['smarty']->assign('IS_USER', $this->is());
         if ($this->is() && isset($_POST['mailing_list'])) {
             Newsletter::getInstance()->subscribe($this->get('email'), $this->getId());
         }
         $this->isBot();
     }
 }
Example #12
0
 /**
  * The PublicNewsletter constructor.
  *
  * @access	public
  * @param   integer news_id The newsletter identifier.
  * @param   SubsRetriever $subs_retriever The subscribers info retriever
  * @return	PublicNewsletter
  * @since	0.6
  * @see     Newsletter, NewsletterFactory
  */
 function PublicNewsletter($news_id, $subs_retriever = null)
 {
     if (is_null($subs_retriever)) {
         $subs_retriever = new PublicRetriever($news_id);
     }
     parent::Newsletter($news_id, $subs_retriever);
 }
Example #13
0
 /**
  * Setup the instance (singleton)
  *
  * @return Newsletter
  */
 public static function getInstance()
 {
     if (!self::$_instance instanceof self) {
         self::$_instance = new self();
     }
     return self::$_instance;
 }
function check_configuration($port, $security)
{
    flush();
    try {
        $mail = Newsletter::initMailer($port, $security);
        $mail->Timeout = 3;
        // seconds
        $mail->SMTPDebug = 2;
        $mail->clearAddresses();
        $mail->addAddress(SENDER_ADDRESS, SENDER_NAME);
        $mail->addReplyTo(SENDER_ADDRESS, SENDER_NAME);
        $mail->setFrom(SENDER_ADDRESS, SENDER_NAME);
        $mail->Subject = "Open-Letters NewsletterSoftware => Test-Email";
        $mail->Body = "Dear Newsletter owner,\n\nThis mail was sent to You by file " . __FILE__ . " on Your Webspace. That You can read this mail means the" . " email configuration in Your config/config.inc.php is right.\n\n" . "best regards\nOpen-Letters";
        $mail->smtpConnect();
        if (!$mail->send()) {
            throw new Exception("ERROR sending an Email: " . $mail->ErrorInfo, "666");
        } else {
            echo "This configuration DID work: Port=" . $port . " and Security=" . $security . "!!!<br>" . "The inbox of " . SENDER_ADDRESS . " should " . "have a new email right now. If this email was not received, " . "please check Your spam folder and configuration.<br>" . "<span class='success'>Success, test mail was sent!</span><br>";
            return true;
        }
    } catch (Exception $e) {
        echo "Your configuration did NOT work: Port=" . $port . " and Security=" . $security . "<br>";
        echo $e->getMessage();
        echo "<span class='error'>Sorry, this try did not work.</span><br><br>";
        return false;
    }
}
 /**
  * Index action
  */
 public function actionindex()
 {
     $model = new Newsletter();
     $sent = false;
     if (isset($_POST['Newsletter'])) {
         $model->attributes = $_POST['Newsletter'];
         if ($model->save()) {
             $sent = true;
             Yii::app()->user->setFlash('success', Yii::t('index', 'Thank you. You are now subscribed to our newsletter.'));
         }
     }
     // Load facebook
     Yii::import('ext.facebook.facebookLib');
     $facebook = new facebookLib(array('appId' => Yii::app()->params['facebookappid'], 'secret' => Yii::app()->params['facebookapisecret'], 'cookie' => true, 'disableSSLCheck' => false));
     facebookLib::$CURL_OPTS[CURLOPT_CAINFO] = Yii::getPathOfAlias('ext.facebook') . '/ca-bundle.crt';
     $this->render('index', array('model' => $model, 'facebook' => $facebook, 'sent' => $sent));
 }
Example #16
0
 protected function loadDBData()
 {
     if ($this->newsletter->isScheduled()) {
         $send_date = clone $this->newsletter->send_date;
         $send_date->setTimezone($this->app->default_time_zone);
         $this->ui->getWidget('send_date')->value = $send_date;
     }
 }
Example #17
0
function wpr_newmail()
{
    global $wpdb;
    if (isset($_POST['subject'])) {
        date_default_timezone_set("UTC");
        $subject = $_POST['subject'];
        $nid = $_POST['newsletter'];
        $textbody = trim($_POST['body']);
        $htmlbody = trim($_POST['htmlbody']);
        $whentosend = $_POST['whentosend'];
        $date = $_POST['date'];
        $htmlenabled = $_POST['htmlenabled'] == "on";
        $hour = $_POST['hour'];
        $timezoneOffset = $_POST['timezoneoffset'];
        $min = $_POST['minute'];
        if ($whentosend == "now") {
            $timeToSend = time();
        } else {
            if (empty($date)) {
                $error = "The date field is required";
            } else {
                $sections = explode("/", $date);
                $timeToSend = mktime($hour, $min, 0, $sections[0], $sections[1], $sections[2]);
                $timeToSend = $timeToSend - $timezoneOffset;
            }
        }
        if (!(trim($subject) && trim($textbody))) {
            $error = "Subject and the Text Body are mandatory.";
        }
        if ($timeToSend < time() && !$error) {
            $error = "The time mentioned is in the past. Please enter a time in the future.";
            if ($htmlenabled && !$error) {
                if (empty($htmlbody)) {
                    $error = "HTML Body is empty. Enter the HTML body of this email";
                }
            }
        }
        if (!$htmlenabled) {
            $htmlbody = "";
        }
        if (!$error) {
            $query = "insert into " . $wpdb->prefix . "wpr_newsletter_mailouts (nid,subject,textbody,htmlbody,time,status) values ('{$nid}','{$subject}','{$textbody}','{$htmlbody}','{$timeToSend}',0);";
            $wpdb->query($query);
            _wpr_mail_sending();
            return;
        }
    }
    $param = (object) array("nid" => $nid, "textbody" => $textbody, "subject" => $subject, "htmlbody" => $htmlbody, "htmlenabled" => 1, "whentosend" => $whentosend, "date" => $date, "hour" => $hour, "minute" => $min, "title" => "New Mail");
    //There are no newsletters. Ask to create one before sending mailouts
    if (Newsletter::whetherNoNewslettersExist()) {
        ?>
        <h2>No Newsletters Found</h2>
            You need to create a newsletter before you can send a broadcast.
    <?php 
        return;
    }
    wpr_mail_form($param, "new", $error);
}
Example #18
0
 /**
  * @before _secure, _admin
  */
 public function manageNewsletter()
 {
     $this->seo(array("title" => "Manage Newsletter", "keywords" => "admin", "description" => "admin", "view" => $this->getLayoutView()));
     $view = $this->getActionView();
     $page = Shared\Markup::page(array("model" => "Newsletter", "where" => array()));
     $newsletters = Newsletter::all(array(), array("*"), "created", "desc", $page["limit"], $page["page"]);
     $view->set($page);
     $view->set("newsletters", $newsletters);
 }
Example #19
0
 function get_current_theme_options()
 {
     $theme_options = $this->themes->get_options($this->get_current_theme());
     // main options merge
     $main_options = Newsletter::instance()->options;
     foreach ($main_options as $key => $value) {
         $theme_options['main_' . $key] = $value;
     }
     return $theme_options;
 }
 public function show($id)
 {
     // init
     $data = array();
     $newsletter = Newsletter::getByNID($id);
     if ($newsletter == null) {
         return App::abort('404');
     }
     $data = array('content' => $newsletter->message);
     return View::make('emails.blank', $data);
 }
Example #21
0
 public function actionAdmin()
 {
     $model = new AdminForm();
     $frequency = KeyValue::model()->findByPk('newsletter_frequency');
     $model->frequency = abs($frequency->value);
     if (isset($_POST['AdminForm'])) {
         $model->attributes = $_POST['AdminForm'];
         if ($model->validate()) {
             if (isset($_POST['yt1']) || $frequency->value < 0) {
                 $frequency->value = -$model->frequency;
             } else {
                 $frequency->value = $model->frequency;
             }
             $frequency->save();
             $this->redirect('admin');
         }
     }
     $newsletter = new Newsletter();
     $this->render('admin', array('newsletter' => $newsletter->make(), 'model' => $model));
 }
 public static function createSubscriber(Newsletter $newsletter, ArrayObject $subscriber = null)
 {
     global $wpdb;
     if (null == $subscriber) {
         $subscriber = array('name' => self::randomString("name"), 'email' => self::randomString("user") . '@' . self::randomString("domain") . '.com', 'nid' => $newsletter->getId(), 'date' => time(), 'active' => 1, 'confirmed' => 1, 'hash' => self::randomString(self::randomString()));
     }
     $createSubscriberQuery = sprintf("INSERT INTO %swpr_subscribers (`nid`,`name`, `email`, `date`, `active`, `confirmed`, `hash` ) VALUES (%d, '%s', '%s','%s','%s','%s','%s');", $wpdb->prefix, $subscriber['nid'], $subscriber['name'], $subscriber['email'], $subscriber['date'], $subscriber['active'], $subscriber['confirmed'], $subscriber['hash']);
     $wpdb->query($createSubscriberQuery);
     $subscriberId = $wpdb->insert_id;
     return new Subscriber($subscriberId);
 }
 public function getSubscribe($email)
 {
     $user = Newsletter::searchSubscribedEmail($email);
     if (!$user) {
         Newsletter::saveEmail($email);
         Newsletter::sendEmail($email);
         return json_encode(['success' => 1]);
     } else {
         return json_encode(['success' => 0]);
     }
 }
Example #24
0
 public function subscriptionAction()
 {
     $email = $this->getRequest()->getParam('email');
     $validator = new Zend_Validate_EmailAddress();
     if ($validator->isValid($email)) {
         $response['code'] = 'SUCCESS';
         $response['text'] = Newsletter::checkForAdd($email) ? 'Your email have been add to our subscription list' : 'This email has subscription';
     } else {
         $response = array('text' => 'You input not valid email address');
     }
     echo Zend_Json::encode($response);
 }
Example #25
0
function wpr_replace_tags($sid, &$subject, &$body, $additional = array())
{
    global $wpdb;
    $query = "SELECT * FROM " . $wpdb->prefix . "wpr_subscribers WHERE id='{$sid}'";
    $subscriber = $wpdb->get_results($query);
    $subscriber = $subscriber[0];
    $nid = $subscriber->nid;
    $newsletter = new Newsletter($nid);
    $parameters = array();
    //newsletter name
    $newsletterName = $newsletter->getNewsletterName();
    $parameters['newslettername'] = $newsletterName;
    $query = "SELECT * FROM " . $wpdb->prefix . "wpr_custom_fields where nid='{$nid}'";
    $custom_fields = $wpdb->get_results($query);
    //blog name
    $parameters['sitename'] = get_bloginfo("name");
    //blog url
    $parameters['homeurl'] = get_bloginfo("home");
    //subscriber name
    $parameters['name'] = $subscriber->name;
    //the address of the sender (as required by can spam)
    $parameters['address'] = get_option("wpr_admin_address");
    //the email address
    $parameters['email'] = $subscriber->email;
    //admin email
    $parameters['adminemail'] = get_option('admin_email');
    $query = "select * from " . $wpdb->prefix . "wpr_subscribers_{$nid} where id={$id};";
    $subscriber = $wpdb->get_results($query);
    $subscriber = $subscriber[0];
    //custom fields defined by the administrator
    foreach ($custom_fields as $custom_field) {
        $name = $custom_field->name;
        $parameters[$custom_field->name] = $subscriber->{$name};
    }
    $parameters = array_merge($parameters, $additional);
    foreach ($parameters as $name => $value) {
        $subject = str_replace("[!{$name}!]", $value, $subject);
        $body = str_replace("[!{$name}!]", $value, $body);
    }
}
 public function registerAction()
 {
     $form = $this->container->get('fos_user.registration.form');
     $formHandler = $this->container->get('fos_user.registration.form.handler');
     $confirmationEnabled = $this->container->getParameter('fos_user.registration.confirmation.enabled');
     $process = $formHandler->process($confirmationEnabled);
     if ($process) {
         $user = $form->getData();
         // Add user email to newsletter
         $em = $this->container->get('doctrine')->getManager();
         $newsletter = new Newsletter();
         $newsletter->setName($user->getUsername());
         $newsletter->setEmail($user->getEmail());
         $newsletter->setStatus(true);
         $em->persist($newsletter);
         $em->flush();
         // send a welcome message
         $sender = $this->container->get('fos_user.user_manager')->findUserByUsername('admin');
         $threadBuilder = $this->container->get('fos_message.composer')->newThread();
         $threadBuilder->addRecipient($user)->setSender($sender)->setSubject('welcome message')->setBody('You have a typo, : mondo instead of mongo. Also for coding standards ...');
         $sender = $this->container->get('fos_message.sender');
         $sender->send($threadBuilder->getMessage());
         /*****************************************************/
         if ($confirmationEnabled) {
             $this->container->get('session')->set('fos_user_send_confirmation_email/email', $user->getEmail());
             $route = 'fos_user_registration_check_email';
         } else {
             $this->authenticateUser($user);
             $route = 'fos_user_registration_confirmed';
         }
         $this->setFlash('fos_user_success', 'registration.flash.user_created');
         $url = $this->container->get('router')->generate($route);
         return new RedirectResponse($url);
     }
     //login variables
     $error = '';
     $lastUsername = '';
     $csrfToken = $this->container->get('form.csrf_provider')->generateCsrfToken('authenticate');
     return $this->renderLogin(array('last_username' => $lastUsername, 'error' => $error, 'csrf_token' => $csrfToken, 'form' => $form->createView()));
 }
 public function createNewsletter()
 {
     $validator = Validator::make(Input::all(), $this->rules);
     if ($validator->passes()) {
         $newsletter = new Newsletter();
         $count = Newsletter::orderby('ID_Newsletter', 'DESC')->first();
         $tampID = $count->ID_Newsletter;
         $checkYear = substr(strval($tampID), 3, -5);
         $incrementID = substr($tampID, 3) + 1;
         $join = "NEW" . $incrementID;
         $success = "Thank you for register to our newsletter, we will send you our newsletter to you, please check your folder spam as well";
         date_default_timezone_set('Asia/Jakarta');
         $date = date('Y-m-d h:i:s', time());
         if ($checkYear == strval(date("y"))) {
             $newsletter->ID_Newsletter = $join;
             $newsletter->First_Name = Input::get('news-firstname');
             $newsletter->Last_Name = Input::get('news-lastname');
             $newsletter->Email = Input::get('news-email');
             $newsletter->Date = $date;
             $newsletter->Status = "Pending";
             $newsletter->save();
             return Redirect::to('/aboutus')->with('message', $success);
         } else {
             $testimonial = new Testimonial();
             date_default_timezone_set('Asia/Jakarta');
             $date = date('Y-m-d h:i:s', time());
             $newsletter->ID_Newsletter = "NEW" . date('y') . "00001";
             $newsletter->First_Name = Input::get('news-firstname');
             $newsletter->Last_Name = Input::get('news-lastname');
             $newsletter->Email = Input::get('news-email');
             $newsletter->Date = $date;
             $newsletter->Status = "Pending";
             $newsletter->save();
             return Redirect::to('/aboutus')->with('message', $success);
         }
     } else {
         return Redirect::to('/aboutus')->withErrors($validator, 'newsletter')->withInput()->with('active', 'active');
     }
 }
Example #28
0
 static function newDraft($parentID, $subject, $content)
 {
     if (is_numeric($parentID)) {
         $newsletter = new Newsletter();
         $newsletter->Status = 'Draft';
         $newsletter->Title = $newsletter->Subject = $subject;
         $newsletter->ParentID = $parentID;
         $newsletter->Content = $content;
         $newsletter->write();
     } else {
         user_error($parentID, E_USER_ERROR);
     }
     return $newsletter;
 }
Example #29
0
    public function report()
    {
        $data = Newsletter::get(FALSE);
        $html = '<table>
						<tr>
							<th>nome</th>
							<th>email</th>
							
						</tr>';
        foreach ($data as $row) {
            $html .= "<tr>\n\t\t\t\t\t\t\t<td>{$row->name}</td>\n\t\t\t\t\t\t\t<td>{$row->email}</td>\n\t\t\t\t\t\t</tr>";
        }
        $html .= '</table><script type="text/javascript"><!--window.close()--></script>';
        header("Content-type: application/vnd.ms-excel");
        header("Content-Disposition: attachment;Filename=relatorio_newsletter" . date('Y_m_d_-_H_i_s') . ".xls");
        echo $html;
    }
Example #30
0
 protected function doJob($arg)
 {
     $models = Newsletter::model()->findAll(array('condition' => 't.remain_subscribers IS NOT NULL AND length(t.remain_subscribers) > 0 AND t.send_time <= NOW()', 'order' => 't.id ASC'));
     foreach ($models as $model) {
         $mail_models = ProNewsletterMail::model()->findAll(array('condition' => 't.newsletter_id = ' . $model->id, 'order' => 't.id ASC'));
         if (count($mail_models)) {
             $receivers = explode(',', $model->remain_subscribers);
             $subscriber_count = 0;
             foreach ($mail_models as $key => $k) {
                 $revei = array_shift($receivers);
                 // need update this field
                 $s = Subscriber::model()->getSubscriberByEmail($k->email);
                 if (empty($s)) {
                     continue;
                 }
                 if ($s) {
                     if ($s->status == 0) {
                         continue;
                     }
                 }
                 // add by Nguyen Dung
                 $url = Yii::app()->setting->getItem('server_name') . '/site/track_newsletter?newsletter_id=' . $model->id . '&subscriber_email=' . $s->email;
                 $img_track_read_email = '<img src="' . $url . '" alt="" height="1" width="1"/>';
                 $r = array('subject' => $model->subject, 'params' => array('content' => $model->content . $img_track_read_email, 'newsletterName' => Yii::app()->params['title'], 'unsubscribe' => Yii::app()->setting->getItem('server_name') . '/site/unsubscribe?id=' . $s->id . '&code=' . md5($s->id . $s->email)), 'view' => 'newsletter', 'to' => $s->email, 'from' => Yii::app()->params['autoEmail']);
                 $this->data[] = $r;
                 //Delete record in newsletter mail
                 ProNewsletterMail::model()->deleteByPk($k->id);
                 $subscriber_count++;
                 //count subscriber is served for current newsletter job
                 $this->index++;
                 //count email is sent for current cron job
                 if ($this->index >= $this->max) {
                     break;
                 }
             }
             $model->total_sent = $model->total_sent + $subscriber_count;
             // track amount mail sent
             $model->remain_subscribers = implode(',', $receivers);
             $model->update(array('remain_subscribers', 'total_sent'));
         }
     }
     //when sent all subscriber of a newsletter job but the
     //        if($this->index < $this->max)
     //            $this->doJob($arg);
 }