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')); } } }
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)); } } } } }