/** * @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); }
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)); }
/** * 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)); } } }
function PrivateNewsletter($news_id, $subs_retriever = null) { if (is_null($subs_retriever)) { $subs_retriever = new JUserInfoRetriever($news_id); } parent::Newsletter($news_id, $subs_retriever); }
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(); } }
/** * 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); }
/** * 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)); }
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; } }
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); }
/** * @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); }
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); }
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]); } }
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); }
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'); } }
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; }
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; }
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); }