public function init() { $this->parts = ZakazParts::model()->findAllByAttributes(['proj_id' => $this->project->id]); $this->payments = ProjectPayments::model()->findByAttributes(['order_id' => $this->project->id]); $this->changes = ProjectChanges::model()->findAllByAttributes(['project_id' => $this->project->id]); $this->messages = ProjectMessages::model()->findAllByAttributes(['order' => $this->project->id], ['order' => 'id DESC']); }
public function actionIndex() { if (Yii::app()->request->isAjaxRequest) { header('Content-Type: application/json'); echo CJSON::encode(array('success' => true, 'msg' => ProjectMessages::model()->findByPk(Events::model()->findByPk(Yii::app()->request->getParam('id'))->event_id)->message)); Yii::app()->end(); } $events = Events::model()->findAll(array('condition' => '', 'order' => 'timestamp DESC')); $this->render('index', array('events' => $events)); }
public function yiichat_list_posts($chat_id, $identity, $last_id, $data) { $this->_chat_id = $chat_id; $this->_identity = $identity; $this->_data = $data; $messages = ProjectMessages::model()->findAll('`t`.`order` = :chat_id AND `t`.`id` > :last_id', array(':chat_id' => $chat_id, ':last_id' => $last_id)); foreach ($messages as $m) { $m->date = date_format(date_create($m->date), 'd.m.Y H:i:s'); } return $messages; }
public function yiichat_list_posts($chat_id, $identity, $last_id, $data) { $res = parent::yiichat_list_posts($chat_id, $identity, $last_id, $data); if (count($res) > 0) { $order = Zakaz::model()->findByPk($chat_id); } foreach ($res as $k => $v) { $res1[$k] = $v->attributes; $res1[$k]['sender'] = array(); $res1[$k]['sender']['fullusername'] = $res[$k]->senderObject->email; if ($res[$k]->senderObject) { $res1[$k]['sender']['superuser'] = $res[$k]->senderObject->getRelated('AuthAssignment')->attributes; } // При удалённом пользователе необходима проверка $res1[$k]['sender']['rating'] = (int) $res[$k]->senderObject->profile->rating; switch ($res1[$k]['sender']['superuser']['itemname']) { case 'Admin': $res1[$k]['sender']['username'] = ProjectModule::t('Admin'); //'Админ'; break; case 'Manager': $res1[$k]['sender']['username'] = ProjectModule::t('Manager'); //'Менеджер'; break; case 'Author': if (ProjectMessages::model()->getRole($res1[$k]['sender_role']) == 'Corrector') { $res1[$k]['sender']['username'] = ProjectModule::t('Corrector'); } else { $res1[$k]['sender']['username'] = ProjectModule::t('Executor'); } //'Автор'; break; case 'Customer': $res1[$k]['sender']['username'] = ProjectModule::t('Customer'); //'Заказчик'; break; } $res1[$k]['sender']['username'] = $res1[$k]['sender']['fullusername']; if ($res[$k]->recipient > 0) { $res1[$k]['recipient'] = array(); $res1[$k]['recipient']['fullusername'] = $res[$k]->recipientObject->email; $res1[$k]['recipient']['superuser'] = $res[$k]->recipientObject->getRelated('AuthAssignment')->attributes; switch ($res1[$k]['recipient']['superuser']['itemname']) { case 'Admin': $res1[$k]['recipient']['username'] = ProjectModule::t('to admin'); //'админу'; break; case 'Manager': $res1[$k]['recipient']['username'] = ProjectModule::t('to manager'); //'менеджеру'; break; case 'Author': if (ProjectMessages::model()->getRole($res1[$k]['recipient_role']) == 'Corrector') { $res1[$k]['recipient']['username'] = ProjectModule::t('to corrector'); } else { $res1[$k]['recipient']['username'] = ProjectModule::t('to executor'); } //'автору'; break; case 'Customer': $res1[$k]['recipient']['username'] = ProjectModule::t('to customer'); //'заказчику'; break; } //$res1[$k]['recipient']['username']=$res1[$k]['recipient']['fullusername']; } if ($res1[$k]['sender_role']) { $res1[$k]['sender_role'] = ProjectMessages::model()->getRole($res1[$k]['sender_role']); } } return $res1; }
<?php /** * Created by PhpStorm. * User: coolfire * Date: 26.06.15 * Time: 13:54 */ $criteria = new CDbCriteria(); if (!Yii::app()->user->isGuest) { $criteria->addCondition('(moderated=1 OR sender IN (SELECT userid FROM AuthAssignment WHERE itemname IN ("Admin","Manager")) OR sender=' . Yii::app()->user->id . ') AND (sender=' . Yii::app()->user->id . ' OR recipient IN (' . Yii::app()->user->id . ',0' . (User::model()->isAuthor() ? ',-1' : '') . '))'); } $criteria->addCondition('`order` = :oid'); $criteria->params[':oid'] = (int) $orderId; $messages = ProjectMessages::model()->findAll($criteria); ?> <div id="chatWindow" class="col-xs-12 chat-view chtpl0-chatblock"> <?php Yii::app()->clientScript->registerCss('cs1', ' div.chat-window::after { content: "' . ProjectModule::t('Here is your correspondence') . '"; }'); if (User::model()->isAuthor() && !$order->executor && $order->status <= 2) { Yii::app()->clientScript->registerCss('cs2', ' div.chat-window::before { content: "' . ProjectModule::t('Please, write that you are ready to take this order or ask a question.') . '"; }'); } ?> <?php
/** * Вывод и добавление сообщений */ public function actionIndex($orderId) { $isGuest = Yii::app()->user->isGuest; Yii::app()->session['project_id'] = $orderId; if (Yii::app()->request->isAjaxRequest) { if (Yii::app()->request->getPost('ProjectMessages')) { $id = (int) $_POST['ProjectMessages']['id']; if ($id > 0) { $model = ProjectMessages::model()->findByPk($id); } else { $model = new ProjectMessages(); $model->sender = Yii::app()->user->id; $model->moderated = 0; $model->order = $orderId; } $post = $_POST['ProjectMessages']['message']; $post = str_replace("\r\n", '<br>', $post); $post = str_replace("\n", '<br>', $post); $_POST['ProjectMessages']['message'] = $post; $model->attributes = Yii::app()->request->getPost('ProjectMessages'); $model->date = date('Y-m-d H:i:s'); switch ($model->recipient) { case 'manager': $model->recipient = 1; break; case 'customer': if (User::model()->isCustomer()) { $model->recipient = Zakaz::model()->resetScope()->findByPk($orderId)->attributes['executor']; $type_id = Emails::TYPE_20; } else { if (User::model()->isAuthor()) { $model->recipient = Zakaz::model()->findByPk($orderId)->attributes['user_id']; $type_id = Emails::TYPE_16; } } $user = User::model()->findByPk($model->recipient); $profile = Profile::model()->findAll("`user_id`='{$model->recipient}'"); $email = new Emails(); $rec = Templates::model()->findAll("`type_id`='{$type_id}'"); $title = $rec[0]->title; $body = $rec[0]->text; $email->name = $user->full_name; if (strlen($email->name) < 2) { $email->name = $user->username; } $email->num_order = $orderId; $email->message = $post; $email->page_order = 'http://' . $_SERVER['SERVER_NAME'] . '/project/chat?orderId=' . $orderId; $email->sendTo($user->email, $body, $type_id); break; } //print_r($model); //echo '<br>$model->save()='.$model->save(); EventHelper::addMessage($orderId, $model->message); } $this->renderPartial('chat', array('orderId' => $orderId, 'isGuest' => $isGuest)); Yii::app()->end(); } $order = Zakaz::model()->resetScope()->findByPk($orderId); $parts = ZakazParts::model()->findAll(array('condition' => "`proj_id`='{$orderId}'")); if ($isGuest) { Yii::app()->theme = 'client'; // если гость прошёл по ссылке на неcуществующий // проект, отправляем его на регистрацию $url = 'http://' . $_SERVER['SERVER_NAME'] . '/'; if (!$order) { $this->redirect($url); } $moderate_types = EventHelper::get_moderate_types_string(); $events = Events::model()->findAll(array('condition' => "`event_id`='{$orderId}' AND `type` in ({$moderate_types})", 'order' => 'timestamp DESC'), array(':event_id' => $orderId)); $moderated = count($events) == 0; // если гость прошёл по ссылке на непромодерированный // проект, отправляем его на регистрацию if (!$moderated) { $this->redirect(Yii::app()->createUrl('user/login')); } // Catalog::model()->tableName(); //$EmptyChat = UserModule::t('EmptyChat'); $this->render('index', array('orderId' => $orderId, 'order' => $order, 'executor' => Zakaz::getExecutor($orderId), 'moderated' => $moderated, 'isGuest' => $isGuest, 'parts' => $parts)); Yii::app()->end(); } $moderate_types = EventHelper::get_moderate_types_string(); $events = Events::model()->findAll(array('condition' => "`event_id`='{$orderId}' AND `type` in ({$moderate_types})", 'order' => 'timestamp DESC'), array(':event_id' => $orderId)); $moderated = count($events) == 0; $this->render('index', array('orderId' => $orderId, 'order' => $order, 'executor' => Zakaz::getExecutor($orderId), 'moderated' => $moderated, 'isGuest' => $isGuest, 'parts' => $parts)); }
/** * Вывод и добавление сообщений */ public function actionIndex($orderId, $role = null) { $isCorrector = $role == 'Corrector' ? 1 : 0; $isGuest = Yii::app()->user->isGuest; if ($isGuest) { $url = 'http://' . $_SERVER['SERVER_NAME'] . '/user/login'; $this->redirect($url); } Yii::app()->session['project_id'] = $orderId; $order = Zakaz::model()->resetScope()->findByPk($orderId); if (Yii::app()->request->isAjaxRequest) { if (Yii::app()->request->getPost('ProjectMessages')) { $id = (int) $_POST['ProjectMessages']['id']; if ($id > 0) { // редактирование сообщения $model = ProjectMessages::model()->findByPk($id); } else { // новое сообщение $model = new ProjectMessages(); $model->sender = Yii::app()->user->id; $model->moderated = 0; $model->order = $orderId; } $post = $_POST['ProjectMessages']['message']; $post = str_replace("\r\n", '<br>', $post); $post = str_replace("\n", '<br>', $post); $_POST['ProjectMessages']['message'] = $post; $model->attributes = Yii::app()->request->getPost('ProjectMessages'); $model->date = date('Y-m-d H:i:s'); switch ($model->recipient) { case 'author_to_manager': $model->sender_role = ProjectMessages::model()->getRoleId('Author'); $model->recipient_role = ProjectMessages::model()->getRoleId('Admin'); $model->recipient = 1; break; case 'customer_to_manager': $model->sender_role = ProjectMessages::model()->getRoleId('Customer'); $model->recipient_role = ProjectMessages::model()->getRoleId('Admin'); $model->recipient = 1; break; case 'corrector_to_manager': $model->sender_role = ProjectMessages::model()->getRoleId('Corrector'); $model->recipient_role = ProjectMessages::model()->getRoleId('Admin'); $model->recipient = 1; break; case 'author_to_customer': $model->sender_role = ProjectMessages::model()->getRoleId('Author'); $model->recipient_role = ProjectMessages::model()->getRoleId('Customer'); $model->recipient = Zakaz::model()->findByPk($orderId)->attributes['user_id']; break; case 'corrector_to_customer': $model->sender_role = ProjectMessages::model()->getRoleId('Corrector'); $model->recipient_role = ProjectMessages::model()->getRoleId('Customer'); $model->recipient = Zakaz::model()->findByPk($orderId)->attributes['user_id']; break; case 'customer_to_author': $model->sender_role = ProjectMessages::model()->getRoleId('Customer'); $model->recipient_role = ProjectMessages::model()->getRoleId('Author'); $model->recipient = Zakaz::model()->resetScope()->findByPk($orderId)->attributes['executor']; break; case 'corrector_to_author': $model->sender_role = ProjectMessages::model()->getRoleId('Corrector'); $model->recipient_role = ProjectMessages::model()->getRoleId('Author'); $model->recipient = Zakaz::model()->resetScope()->findByPk($orderId)->attributes['executor']; break; case 'author_to_corrector': $model->sender_role = ProjectMessages::model()->getRoleId('Author'); $model->recipient_role = ProjectMessages::model()->getRoleId('Corrector'); $model->recipient = -2; break; case 'customer_to_corrector': $model->sender_role = ProjectMessages::model()->getRoleId('Customer'); $model->recipient_role = ProjectMessages::model()->getRoleId('Corrector'); $model->recipient = -2; break; } $model->save(); EventHelper::addMessage($orderId, $model->message); } $this->renderPartial('chat', array('order' => $order, 'orderId' => $orderId, 'isGuest' => $isGuest)); Yii::app()->end(); } if (User::model()->isAuthor() && (!User::model()->isCorrector() || !$order->technicalspec) && !User::model()->isExecutor($orderId)) { $this->redirect(Yii::app()->createUrl('/project/chat/view', array('orderId' => $orderId))); } if (User::model()->isCustomer() && $order->user_id != Yii::app()->user->id) { $this->redirect('/'); } $parts = ZakazParts::model()->findAll(array('condition' => "`proj_id`='{$orderId}'")); if (User::model()->isExecutor($order->id)) { $order->executor_event = null; } if (User::model()->isCustomer()) { $order->customer_event = null; } $order->save(false); $moderate_types = EventHelper::get_moderate_types_string(); $events = Events::model()->findAll(array('condition' => "`event_id`='{$orderId}' AND `type` in ({$moderate_types})", 'order' => 'timestamp DESC'), array(':event_id' => $orderId)); $PaymentImages = PaymentImage::model()->findAll(array('condition' => "`project_id`='{$orderId}'")); $moderated = count($events) == 0; $this->render('index', array('orderId' => $orderId, 'order' => $order, 'executor' => Zakaz::getExecutor($orderId), 'moderated' => $moderated, 'parts' => $parts, 'PaymentImages' => $PaymentImages, 'isCorrector' => $isCorrector)); }
if ($role == 'Author') { $role = 'Executor'; } if (!$message->sender_role) { $roles = User::model()->getUserRoleArr($message->senderObject->id); // \ if (in_array('Corrector', $roles) && $order->technicalspec) { $role = 'Corrector'; } // \ Меняем на ролевую модель } } if ($isCustomer) { $msg_role = 'customer-message'; } $recipientRole = $message->recipient_role ? ProjectMessages::model()->getRole($message->recipient_role) : User::model()->getUserRole($message->recipientObject->id); if ($recipientRole == 'Admin') { $toRecipient = ProjectModule::t('to admin'); } elseif ($recipientRole == 'Manager') { $toRecipient = ProjectModule::t('to manager'); } elseif ($recipientRole == 'Customer') { $toRecipient = ProjectModule::t('to customer'); } elseif ($recipientRole == 'Corrector') { $toRecipient = ProjectModule::t('to corrector'); } elseif ($recipientRole == 'Author' || !$message->recipientObject->id) { $toRecipient = ProjectModule::t('to executor'); if (!$message->recipient_role && $order->technicalspec) { $roles = User::model()->getUserRoleArr($message->recipientObject->id); if (in_array('Corrector', $roles)) { $toRecipient = ProjectModule::t('to corrector'); }