コード例 #1
0
 /**
  * Binds all subscribers from the campaign groups to the message.
  */
 public function bindGroupSubscribers($campaign)
 {
     $groups = $campaign->groups;
     if (!is_array($groups)) {
         return;
     }
     /*
      * Get all group subscriber emails and info
      */
     $groupSubscribers = [];
     foreach ($groups as $groupType) {
         $groupSubscribers = $groupSubscribers + $this->getGroupRecipientsData($groupType);
     }
     /*
      * Pair them to existing subscribers, or create them
      */
     $allSubscribers = Subscriber::lists('id', 'email');
     $ids = [];
     foreach ($groupSubscribers as $email => $info) {
         /*
          * New subscriber
          */
         if (!isset($allSubscribers[$email])) {
             $info['email'] = $email;
             $subscriber = new Subscriber();
             $subscriber->forceFill($info);
             $subscriber->confirmed_at = Carbon::now();
             $subscriber->save();
             $ids[] = $subscriber->id;
         } else {
             $ids[] = $allSubscribers[$email];
         }
     }
     /*
      * Sync to the campaign
      */
     if (count($ids) > 0) {
         $campaign->subscribers()->sync($ids, false);
     }
 }