コード例 #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);
         }
     }
 }
コード例 #2
0
 /**
  * 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;
 }