Example #1
0
 public function actionSendMessages()
 {
     $itemsSelected = Yii::app()->request->getParam('itemsSelected');
     $errorsSend = array();
     $messageModel = new Messages();
     $this->performAjaxValidation($messageModel);
     if (isset($_POST['Messages'])) {
         $messageModel->attributes = $_POST['Messages'];
         if ($messageModel->validate()) {
             if (is_array($itemsSelected) && count($itemsSelected)) {
                 ########################################################################
                 // check file errors
                 $fileErrors = array();
                 if (count($itemsSelected) > Mailing::MAILING_USERS_LIMIT) {
                     Yii::app()->user->setFlash('error', Yii::t('module_messages', 'max_newsletter_limit', array('{n}' => Mailing::MAILING_USERS_LIMIT)));
                     $fileErrors[] = 3;
                 }
                 $files = CUploadedFile::getInstancesByName('files');
                 if (isset($files) && count($files) > 0) {
                     foreach ($files as $file) {
                         $fName = $file->name;
                         $fSize = $file->size;
                         // check file size
                         if ($fSize > $messageModel->fileMaxSize) {
                             Yii::app()->user->setFlash('error', Yii::t('module_messages', 'Size {fName} exceeds the allowed (specified in php.ini) size {fileMaxSize} bytes.', array('{fName}' => $fName, 'fileMaxSize' => $messageModel->fileMaxSize)));
                             $fileErrors[] = 1;
                         }
                         // check file extension
                         $pathInfo = pathinfo($fName);
                         $fileName = $pathInfo['filename'];
                         $fileExt = strtolower($pathInfo['extension']);
                         $supportExtArr = explode(',', $messageModel->supportExt);
                         $supportExtArr = array_map('trim', $supportExtArr);
                         if (!in_array($fileExt, $supportExtArr)) {
                             Yii::app()->user->setFlash('error', Yii::t('module_messages', 'File extension: {fName} is not valid.', array('{fName}' => $fName)));
                             $fileErrors[] = 2;
                         }
                     }
                 }
                 if (count($fileErrors)) {
                     $this->redirect(array('admin'));
                     Yii::app()->end;
                 }
                 ########################################################################
                 // pre files
                 $filesPre = array();
                 $files = CUploadedFile::getInstancesByName('files');
                 $m = 1;
                 if (isset($files) && count($files) > 0) {
                     foreach ($files as $file) {
                         $m++;
                         $fName = $file->name;
                         // check file extension
                         $pathInfo = pathinfo($fName);
                         $fileName = $pathInfo['filename'];
                         $fileExt = strtolower($pathInfo['extension']);
                         // save file
                         $fullFileName = '_' . md5(uniqid()) . '.' . $fileExt;
                         $file->saveAs($messageModel->uploadPath . '/' . $fullFileName);
                         $filesPre[] = array('file_id' => $m, 'file_path' => $fullFileName, 'orig_file_path' => $fileName . '.' . $fileExt);
                     }
                 }
                 foreach ($itemsSelected as $item) {
                     $userModel = User::model()->findByPk($item);
                     if ($userModel) {
                         $messageModel = new Messages();
                         $messageModel->attributes = $_POST['Messages'];
                         $messageModel->message = str_replace('{username}', $userModel->username, $messageModel->message);
                         $messageModel->id_userFrom = Yii::app()->user->id;
                         $messageModel->id_userTo = $item;
                         $messageModel->is_read = Messages::STATUS_UNREAD_USER;
                         $messageModel->allowHtml = 1;
                         if ($messageModel->save(false)) {
                             // save file
                             if ($filesPre && count($filesPre)) {
                                 foreach ($filesPre as $fileOne) {
                                     $messageFile = new MessagesFiles();
                                     $messageFile->file_id = Yii::app()->user->id . $messageModel->id . $fileOne['file_id'];
                                     $messageFile->id_message = $messageModel->id;
                                     $messageFile->file_path = $fileOne['file_path'];
                                     $messageFile->orig_file_path = $fileOne['orig_file_path'];
                                     $messageFile->save();
                                 }
                             }
                         }
                     }
                 }
                 $messageModel->unsetAttributes();
                 if (!count($errorsSend)) {
                     Yii::app()->user->setFlash('success', tt('Message sent to the users', 'messages'));
                     $this->redirect(array('admin'));
                 } else {
                     Yii::app()->user->setFlash('error', tt('Message not sent to the users: ', 'messages') . ' ' . implode(', ', $errorsSend));
                     $this->redirect(array('admin'));
                 }
             } else {
                 Yii::app()->user->setFlash('error', tt('check_users_send', 'messages'));
                 $this->redirect(array('admin'));
             }
         } else {
             if ($messageModel->hasErrors()) {
                 Yii::app()->user->setFlash('error', CHtml::errorSummary($messageModel, null, null, array('class' => '')));
             }
             $this->redirect(array('admin'));
         }
     }
 }
Example #2
0
 public function beforeDelete()
 {
     $sql = 'SELECT id, file_path FROM {{messages_files}} WHERE id_message="' . $this->id . '"';
     $items = Yii::app()->db->createCommand($sql)->queryAll();
     $message = new Messages();
     if ($items) {
         foreach ($items as $item) {
             if (file_exists($message->uploadPath . '/' . $item['file_path'])) {
                 unlink($message->uploadPath . '/' . $item['file_path']);
                 MessagesFiles::model()->deleteByPk($item['id']);
             }
         }
     }
     return parent::beforeDelete();
 }
 public function actionDoSend()
 {
     $this->modelName = 'Messages';
     $id = (int) Yii::app()->request->getParam('id');
     $apId = (int) Yii::app()->request->getParam('apId');
     if (!$id) {
         throw404();
     }
     // сами себе пытаемся отправить сообщение
     if ($id == Yii::app()->user->id) {
         throw404();
     }
     $user = User::model()->findByPk($id);
     $model = new $this->modelName();
     $this->performAjaxValidation($model);
     if (isset($_POST[$this->modelName])) {
         $model->attributes = $_POST[$this->modelName];
         if ($model->validate()) {
             $model->id_userFrom = Yii::app()->user->id;
             $model->id_userTo = $id;
             $model->from_listing_id = $apId;
             $model->is_read = Messages::STATUS_UNREAD_USER;
             $model->allowHtml = Yii::app()->user->checkAccess('backend_access') ? 1 : 0;
             ########################################################################
             // check file errors
             $fileErrors = array();
             $files = CUploadedFile::getInstancesByName('files');
             if (isset($files) && count($files) > 0) {
                 foreach ($files as $file) {
                     $fName = $file->name;
                     $fSize = $file->size;
                     // check file size
                     if ($fSize > $model->fileMaxSize) {
                         Yii::app()->user->setFlash('error', Yii::t('module_messages', 'Size {fName} exceeds the allowed (specified in php.ini) size {fileMaxSize} bytes.', array('{fName}' => $fName, 'fileMaxSize' => $model->fileMaxSize)));
                         $fileErrors[] = 1;
                     }
                     // check file extension
                     $pathInfo = pathinfo($fName);
                     $fileName = $pathInfo['filename'];
                     $fileExt = strtolower($pathInfo['extension']);
                     $supportExtArr = explode(',', $model->supportExt);
                     $supportExtArr = array_map('trim', $supportExtArr);
                     if (!in_array($fileExt, $supportExtArr)) {
                         Yii::app()->user->setFlash('error', Yii::t('module_messages', 'File extension: {fName} is not valid.', array('{fName}' => $fName)));
                         $fileErrors[] = 2;
                     }
                 }
             }
             if (count($fileErrors)) {
                 $this->redirect(array('read', 'id' => $id));
             }
             ########################################################################
             if ($model->save(false)) {
                 // get files
                 $files = CUploadedFile::getInstancesByName('files');
                 $m = 1;
                 if (isset($files) && count($files) > 0) {
                     foreach ($files as $file) {
                         $m++;
                         $fName = $file->name;
                         // check file extension
                         $pathInfo = pathinfo($fName);
                         $fileName = $pathInfo['filename'];
                         $fileExt = strtolower($pathInfo['extension']);
                         // save file
                         $fullFileName = $model->id . '_' . md5(uniqid()) . '.' . $fileExt;
                         $file->saveAs($model->uploadPath . '/' . $fullFileName);
                         // save to DB
                         $messageFile = new MessagesFiles();
                         $messageFile->file_id = Yii::app()->user->id . $model->id . $m;
                         $messageFile->id_message = $model->id;
                         $messageFile->file_path = $fullFileName;
                         $messageFile->orig_file_path = $fileName . '.' . $fileExt;
                         $messageFile->save();
                     }
                 }
                 $model->unsetAttributes();
                 Yii::app()->user->setFlash('success', tt('Message sent to the user', 'messages'));
                 if (Yii::app()->user->checkAccess('backend_access')) {
                     $this->redirect(array('/messages/backend/main/read', 'id' => $id));
                 } else {
                     $this->redirect(array('/messages/main/read', 'id' => $id));
                 }
             }
         }
     }
 }