Ejemplo n.º 1
0
 /**
  * Signs up a user as a subscriber, adds them to supplied list code.
  */
 public static function signup($details, $addToList = null, $isConfirmed = true)
 {
     if (is_string($details)) {
         $details = ['email' => $details];
     }
     if (!($email = array_get($details, 'email'))) {
         throw new ApplicationException('Missing email for subscriber!');
     }
     $subscriber = self::firstOrNew(['email' => $email]);
     $subscriber->first_name = array_get($details, 'first_name');
     $subscriber->last_name = array_get($details, 'last_name');
     $subscriber->created_ip_address = array_get($details, 'created_ip_address');
     if ($isConfirmed) {
         $subscriber->confirmed_ip_address = array_get($details, 'created_ip_address');
         $subscriber->confirmed_at = $subscriber->freshTimestamp();
         $subscriber->unsubscribed_at = null;
     }
     // Already subscribed and opted-in
     if ($subscriber->exists && !$subscriber->unsubscribed_at) {
         $subscriber->unsubscribed_at = null;
     }
     $subscriber->save();
     if ($addToList) {
         if (!($list = SubscriberList::where('code', $addToList)->first())) {
             throw new ApplicationException('Unable to find a list with code: ' . $addToList);
         }
         if (!$list->subscribers()->where('id', $subscriber->id)->count()) {
             $list->subscribers()->add($subscriber);
         }
     }
     return $subscriber;
 }