public function actionRenderSend($broadcast_id)
 {
     $broadcast = Broadcast::findOne($broadcast_id);
     $broadcast_send = new BroadcastSend();
     $broadcast_send->broadcast_id = $broadcast_id;
     $broadcast_send->status = 0;
     $broadcast_send->save();
     if ($broadcast->registered_users == 1) {
         $users = User::find()->where(['status' => 10])->orderBy(['username' => SORT_ASC])->all();
         if ($users) {
             foreach ($users as $user) {
                 $broadcast_address = new BroadcastAddress();
                 $broadcast_address->broadcast_send_id = $broadcast_send->id;
                 $broadcast_address->user_id = $user->id;
                 $broadcast_address->save();
             }
         }
     }
     if ($broadcast->destinations) {
         $destinations = preg_split('/\\,/', $broadcast->destinations);
         foreach ($destinations as $destination) {
             $arr = preg_split('/#/', $destination);
             $broadcast_address = new BroadcastAddress();
             $broadcast_address->broadcast_send_id = $broadcast_send->id;
             $broadcast_address->email = trim($arr[0]);
             $broadcast_address->fio = isset($arr[1]) ? trim($arr[1]) : '';
             $broadcast_address->save();
         }
     }
     return $this->redirect(['send', 'broadcast_send_id' => $broadcast_send->id]);
 }
 /**
  * @param $id BroadcastSend->id
  * @return bool
  */
 public function actionSend($id)
 {
     if (!$id) {
         return false;
     }
     $broadcast_send = BroadcastSend::findOne($id);
     $broadcast_files = BroadcastFiles::find()->where(['broadcast_id' => $broadcast_send->broadcast_id])->all();
     $view = $broadcast_send->broadcast->broadcastLayout->layout_path;
     $title = $broadcast_send->broadcast->title;
     $broadcast_addresses = BroadcastAddress::find()->where(['broadcast_send_id' => $id, 'status' => 0])->all();
     $messages = [];
     /** @var $address BroadcastAddress */
     foreach ($broadcast_addresses as $address) {
         $email = $address->user_id ? $address->user->email : $address->email;
         $emailValidator = new EmailValidator();
         if (!$emailValidator->validate($email)) {
             continue;
         }
         $fio = $address->fio;
         $company = '';
         //$content = preg_replace('/{{content}}/', $broadcast_send->broadcast->broadcastLayout->content, $this->handleContent($broadcast_send->broadcast));
         $content = $this->handleContent($broadcast_send->broadcast, '', '');
         if ($broadcast_send->broadcast->broadcastLayout->content) {
             $content = preg_replace('/{{content}}/', $content, $broadcast_send->broadcast->broadcastLayout->content);
         }
         $mailer = Yii::$app->mailer->compose($view, ['content' => $content]);
         if ($broadcast_files) {
             foreach ($broadcast_files as $file) {
                 $attach_file = Yii::getAlias('@backend/web') . preg_replace('/^' . addcslashes(Yii::$app->params['broadcast']['clearMngUrl'], '/') . '/', '', $file->file);
                 if (is_file($attach_file)) {
                     $mailer = $mailer->attach($attach_file);
                 }
             }
         }
         $mailer->setFrom([Yii::$app->params['supportEmail'] => Yii::$app->name])->setTo($email)->setSubject($title);
         try {
             $mailer->send();
             $address->status = 1;
             $address->update();
         } catch (\Exception $e) {
             echo "ERROR: " . $e . "\n";
         }
     }
     try {
         Yii::$app->mailer->sendMultiple($messages);
     } catch (Exception $e) {
         echo "Error\n";
     }
     $broadcast_send->status = 1;
     if ($broadcast_send->update()) {
         return true;
     }
     return false;
 }
Example #3
0
 /**
  * @return \yii\db\ActiveQuery
  */
 public function getBroadcastSendAmount()
 {
     return BroadcastSend::find()->where(['broadcast_id' => $this->id, 'status' => 1])->count();
 }