Example #1
0
 public function _handleAll(&$page, Am_BatchProcessor $batch)
 {
     $q = $this->grid->getDi()->resourceAccessTable->getResourcesForMembers('newsletterlist', 'resource_id=' . $this->list->pk());
     $ids = array();
     foreach ($q->selectRows((int) $page, $this->batchCount) as $row) {
         $ids[] = $row['user_id'];
     }
     $page++;
     if (!$ids) {
         return true;
     }
     if ($this->list->plugin_id == '') {
         $this->grid->getDi()->db->query("INSERT IGNORE INTO ?_newsletter_user_subscription\n                 SELECT null, user_id, ?d, 1, 'auto'\n                 FROM ?_user \n                 WHERE user_id IN (?a) AND unsubscribed=0", $this->list->pk(), $ids);
     } else {
         // select users who has no records in newsletter_user_subscription table for this newsletter list
         $users = $this->grid->getDi()->userTable->selectObjects("SELECT u.* \n                FROM ?_user u\n                LEFT JOIN ?_newsletter_user_subscription s \n                    ON s.user_id = u.user_id AND s.list_id = ?d\n                WHERE u.user_id IN (?a) AND ((s.list_id IS NULL) OR (s.is_active = 0 AND s.type = 'auto'))", $this->list->pk(), $ids);
         $newsletterUserSubscriptionTable = $this->grid->getDi()->newsletterUserSubscriptionTable;
         foreach ($users as $user) {
             $newsletterUserSubscriptionTable->add($user, $this->list, NewsletterUserSubscription::TYPE_AUTO);
         }
     }
 }
Example #2
0
 /**
  * Get the fieldset to display in the administration section
  */
 function getCMSFields()
 {
     $group = null;
     if ($this->GroupID) {
         $group = DataObject::get_one("Group", "ID = {$this->GroupID}");
     }
     $fields = new FieldSet(new TextField("Title", _t('NewsletterType.NEWSLETTERTYPE', 'Newsletter Type')), new TextField("FromEmail", _t('NewsletterType.SENDFROM', 'Send newsletters from')), new TabSet("Root", new Tab(_t('NewsletterType.DRAFTS', 'Drafts'), $draftList = new NewsletterList("Draft", $this, _t('NewsletterType.DRAFT', 'Draft'))), new TabSet('Sent', new Tab(_t('NewsletterType.SENT', 'Sent'), $sendList = new NewsletterList("Send", $this, _t('NewsletterType.SEND', 'Send'))), new Tab(_t('NewsletterType.UNSUBSCRIBED', 'Unsubscribed'), $unsubscribedList = new UnsubscribedList("Unsubscribed", $this)), new Tab(_t('NewsletterType.BOUNCED', 'Bounced'), $bouncedList = new BouncedList("Bounced", $this)))));
     if ($this->GroupID) {
         $fields->addFieldToTab('Root', new TabSet("Recipients", new Tab(_t('NewsletterType.RECIPIENTS', 'Recipients'), $recipients = new MemberTableField($this, "Recipients", $group)), new Tab(_t('NewsletterType.IMPORT', 'Import'), $importField = new RecipientImportField("ImportFile", _t('NewsletterType.IMPORTFROM', 'Import from file'), $group))));
         $recipients->setController($this);
         $importField->setController($this);
         $importField->setTypeID($this->ID);
     }
     $fields->addFieldToTab('Root', new Tab(_t('NewsletterType.TEMPLATE', 'Template'), $templates = new TemplateList("Template", "Template", $this->Template, NewsletterAdmin::template_path())));
     $draftList->setController($this);
     $sendList->setController($this);
     $templates->setController($this);
     $unsubscribedList->setController($this);
     $bouncedList->setController($this);
     $fields->push($idField = new HiddenField("ID"));
     $fields->push(new HiddenField("executeForm", "", "TypeEditForm"));
     $idField->setValue($this->ID);
     return $fields;
 }
 /**
  * Add or enable subscription
  * @param type $user_id
  * @param type $list_id
  * @param type $type
  * @return type 
  */
 function add(User $user, NewsletterList $list, $type)
 {
     $list_id = $list->pk();
     $user_id = $user->pk();
     $sub = $this->findFirstBy(array('user_id' => $user_id, 'list_id' => $list_id));
     if (!$sub) {
         $sub = $this->createRecord();
         $sub->user_id = $user_id;
         $sub->list_id = $list_id;
         $sub->is_active = 0;
         $sub->insert();
     }
     $sub->enable($type);
     return $sub;
 }
 /**
  * Shows either the 'Sent' or 'Drafts' folder using the NewsletterList template
  * Didn't see anywhere it is called from top level ajax call or from templete,
  * it is only called internally from showdrafts and showsent.
  */
 public function ShowNewsletterFolder($params, $type)
 {
     $id = $params['ID'];
     if (!is_numeric($id)) {
         $id = Session::get('currentPage');
     }
     if (is_a($id, 'NewsletterType')) {
         $mailType = $id;
         $id = $mailType->ID;
     } else {
         if ($id && is_numeric($id)) {
             $mailType = DataObject::get_by_id('NewsletterType', $id);
         }
     }
     $draftList = new NewsletterList($type, $mailType, $type);
     return $draftList->renderWith("NewsletterList");
 }