/**
  * Creates a new Subscriber model.
  * If creation is successful, the browser will be redirected to the 'view' page.
  * @return mixed
  */
 public function actionCreate()
 {
     $model = new Subscriber();
     if ($model->load(Yii::$app->request->post()) && $model->save()) {
         return $this->redirect(['view', 'id' => $model->id]);
     } else {
         return $this->render('create', ['model' => $model]);
     }
 }
 public function save($request)
 {
     $subscriber = new Subscriber();
     $subscriber->email = $request->input('email');
     $subscriber->ip = $request->input('ip');
     if ($subscriber->save()) {
         return $subscriber->id;
     } else {
         return false;
     }
 }
 /**
  * Creates a new Subscriber model.
  * If creation is successful, the browser will be redirected to the 'view' page.
  * @return mixed
  */
 public function actionCreate()
 {
     $model = new Subscriber();
     $modelsPhone = [new Phone()];
     if ($model->load(Yii::$app->request->post())) {
         $model->user_id = Yii::$app->user->getId();
         if ($model->save()) {
             $modelsPhone = Model::createMultiple(Phone::classname());
             Model::loadMultiple($modelsPhone, Yii::$app->request->post());
             // validate all models
             $valid = $model->validate();
             $valid = Model::validateMultiple($modelsPhone) && $valid;
             if ($valid) {
                 $transaction = \Yii::$app->db->beginTransaction();
                 try {
                     if ($flag = $model->save(false)) {
                         foreach ($modelsPhone as $modelPhone) {
                             $modelPhone->subscriber_id = $model->id;
                             if (!($flag = $modelPhone->save(false))) {
                                 $transaction->rollBack();
                                 break;
                             }
                         }
                     }
                     if ($flag) {
                         $transaction->commit();
                         return $this->redirect(['view', 'id' => $model->id]);
                     }
                 } catch (Exception $e) {
                     $transaction->rollBack();
                 }
             }
         }
     } else {
         return $this->render('create', ['model' => $model, 'modelsPhone' => empty($modelsPhone) ? [new Phone()] : $modelsPhone]);
     }
 }
示例#4
0
 /**
  * Handle the event.
  *
  * @param  \App\Events\WechatUserSubscribed  $event
  * @return \App\Models\Message
  */
 public function handle(WechatUserSubscribed $event)
 {
     $m = $event->message;
     /**
      * openId is always unique to our official account, so if user subscribes
      * again, we just need to toggle un-subscribed flag.
      */
     if ($subscriber = Subscriber::where('openId', $m->fromUserName)->where('unsubscribed', true)->first()) {
         $subscriber->unsubscribed = false;
     } else {
         $subscriber = new Subscriber();
         $subscriber->openId = $m->fromUserName;
     }
     $subscriber->save();
     // Link profile with subscriber if subscribe comes from profile page.
     if ($key = $m->messageable->eventKey) {
         Profile::find(Str::substr($key, Str::length('qrscene_')))->update(['weixin' => $m->fromUserName]);
         event(new ChangeSubscriberGroup($subscriber));
     }
     return $this->greetMessage($m->fromUserName, !is_null($key));
 }