Commit af5c9885551c091ed34d9a7648d7192fe70e1850

Authored by Yarik
1 parent 9b93120e

Fixes

frontend/controllers/ChatController.php
1 <?php 1 <?php
2 -namespace frontend\controllers;  
3 -  
4 -use common\models\Chat;  
5 -use common\models\Fields;  
6 -use common\models\File;  
7 -use common\models\Message;  
8 -use Yii;  
9 -use common\models\User;  
10 -use yii\data\ActiveDataProvider;  
11 -use yii\filters\AccessControl;  
12 -use yii\helpers\ArrayHelper;  
13 -use yii\web\Controller;  
14 -use yii\web\NotFoundHttpException;  
15 -use yii\web\UploadedFile;  
16 -  
17 -  
18 -/**  
19 - * Site controller  
20 - */  
21 -class ChatController extends Controller  
22 -{  
23 - public $defaultAction = 'list';  
24 -  
25 - public function behaviors() 2 + namespace frontend\controllers;
  3 +
  4 + use common\models\Chat;
  5 + use common\models\Fields;
  6 + use common\models\File;
  7 + use common\models\Message;
  8 + use Yii;
  9 + use common\models\User;
  10 + use yii\data\ActiveDataProvider;
  11 + use yii\db\ActiveQuery;
  12 + use yii\filters\AccessControl;
  13 + use yii\helpers\ArrayHelper;
  14 + use yii\web\Controller;
  15 + use yii\web\NotFoundHttpException;
  16 + use yii\web\UploadedFile;
  17 +
  18 + /**
  19 + * Site controller
  20 + */
  21 + class ChatController extends Controller
26 { 22 {
27 - return [  
28 - 'access' => [  
29 - 'class' => AccessControl::className(),  
30 - 'rules' => [  
31 - [  
32 - 'actions' => ['list', 'message', 'message-save'],  
33 - 'allow' => true,  
34 - 'roles' => ['@'], 23 + public $defaultAction = 'list';
  24 +
  25 + public function behaviors()
  26 + {
  27 + return [
  28 + 'access' => [
  29 + 'class' => AccessControl::className(),
  30 + 'rules' => [
  31 + [
  32 + 'actions' => [
  33 + 'list',
  34 + 'message',
  35 + 'message-save',
  36 + ],
  37 + 'allow' => true,
  38 + 'roles' => [ '@' ],
  39 + ],
35 ], 40 ],
36 ], 41 ],
37 - ],  
38 - ];  
39 - }  
40 -  
41 -  
42 - public function actionList()  
43 - {  
44 - $user = \Yii::$app->user->identity;  
45 - $chat = Chat::find()  
46 - ->where([  
47 - 'or',  
48 - ['from_user' => $user->id,],  
49 - ['to_user' => $user->id,],  
50 - ])  
51 -  
52 - ->with('messages.user');  
53 -  
54 - $chat = new ActiveDataProvider([  
55 - 'query' => $chat,  
56 - 'pagination' => [  
57 - 'pageSize' => 5,  
58 - ],  
59 - ]);  
60 -  
61 - return $this->render('list',[  
62 - 'chat' => $chat  
63 - ]);  
64 - }  
65 -  
66 - public function actionMessage($user_id)  
67 - {  
68 - $user = \Yii::$app->user->identity;  
69 -  
70 - $chat = Chat::find()  
71 - ->where([  
72 - 'or',  
73 - ['from_user' => $user_id,],  
74 - ['to_user' => $user_id,],  
75 - ])  
76 - ->andWhere([  
77 - 'or',  
78 - ['from_user'=> $user->id,],  
79 - ['to_user'=> $user->id,],  
80 - ])  
81 - ->with('messages.user')  
82 - ->one();  
83 - if(!$chat instanceof Chat){  
84 - $chat = new Chat();  
85 - $chat->from_user = $user->id;  
86 - $chat->to_user = $user_id;  
87 - $chat->save(); 42 + ];
  43 + }
  44 +
  45 + public function actionList()
  46 + {
  47 + $user = \Yii::$app->user->identity;
  48 + $chat = Chat::find()
  49 + ->where(
  50 + [
  51 + 'or',
  52 + [ 'from_user' => $user->id, ],
  53 + [ 'to_user' => $user->id, ],
  54 + ]
  55 + )
  56 + ->with('messages.user');
  57 +
  58 + $chat = new ActiveDataProvider(
  59 + [
  60 + 'query' => $chat,
  61 + 'pagination' => [
  62 + 'pageSize' => 5,
  63 + ],
  64 + ]
  65 + );
  66 +
  67 + return $this->render(
  68 + 'list',
  69 + [
  70 + 'chat' => $chat,
  71 + ]
  72 + );
88 } 73 }
89 -  
90 - $phones = Fields::getData($chat->interlocutor->id, User::className(), 'phone');  
91 - $sites = Fields::getData($chat->interlocutor->id, User::className(), 'site');  
92 -  
93 -  
94 - $post = \Yii::$app->request->post();  
95 - if(isset($post)){  
96 -  
97 - $message = new Message();  
98 -  
99 - if($message->load($post, 'Message')){  
100 -  
101 - $message->chat_id = $chat->chat_id;  
102 - $message->user_id = $user->id;  
103 -  
104 - $message->file = UploadedFile::getInstances($message, 'file');  
105 -  
106 - if(!empty($message->file)) {  
107 -  
108 - if(is_array($message->file)){  
109 -  
110 - foreach($message->file as $file){  
111 -  
112 - if($file instanceof UploadedFile){  
113 - 74 +
  75 + public function actionMessage($user_id)
  76 + {
  77 + $user = \Yii::$app->user->identity;
  78 + if ($user->getId() == $user_id) {
  79 + return $this->redirect([ 'chat/list' ]);
  80 + }
  81 +
  82 + $chat = Chat::find()
  83 + ->where(
  84 + [
  85 + 'or',
  86 + [ 'from_user' => $user_id, ],
  87 + [ 'to_user' => $user_id, ],
  88 + ]
  89 + )
  90 + ->andWhere(
  91 + [
  92 + 'or',
  93 + [ 'from_user' => $user->id, ],
  94 + [ 'to_user' => $user->id, ],
  95 + ]
  96 + )
  97 + ->with(
  98 + [
  99 + 'messages' => function ($query) {
  100 + /**
  101 + * @var ActiveQuery $query
  102 + */
  103 + $query->orderBy([ 'date' => SORT_DESC ])
  104 + ->with('user');
  105 + },
  106 + ]
  107 + )
  108 + ->one();
  109 + if (!$chat instanceof Chat) {
  110 + $chat = new Chat();
  111 + $chat->from_user = $user->id;
  112 + $chat->to_user = $user_id;
  113 + $chat->save();
  114 + }
  115 +
  116 + $phones = Fields::getData($chat->interlocutor->id, User::className(), 'phone');
  117 + $sites = Fields::getData($chat->interlocutor->id, User::className(), 'site');
  118 +
  119 + $post = \Yii::$app->request->post();
  120 + if (isset( $post )) {
  121 +
  122 + $message = new Message();
  123 +
  124 + if ($message->load($post, 'Message')) {
  125 +
  126 + $message->chat_id = $chat->chat_id;
  127 + $message->user_id = $user->id;
  128 +
  129 + $message->file = UploadedFile::getInstances($message, 'file');
  130 +
  131 + if (!empty( $message->file )) {
  132 +
  133 + if (is_array($message->file)) {
  134 +
  135 + foreach ($message->file as $file) {
  136 +
  137 + if ($file instanceof UploadedFile) {
  138 +
  139 + $file_model = new File();
  140 + $file_id[] = $file_model->saveFile($file);
  141 +
  142 + }
  143 +
  144 + }
  145 +
  146 + } else {
  147 +
  148 + if ($message->file instanceof UploadedFile) {
  149 +
114 $file_model = new File(); 150 $file_model = new File();
115 - $file_id[] = $file_model->saveFile($file);  
116 - 151 + $file_id[] = $file_model->saveFile($message->file);
117 } 152 }
118 -  
119 - }  
120 -  
121 - } else {  
122 -  
123 - if($message->file instanceof UploadedFile){  
124 -  
125 - $file_model = new File();  
126 - $file_id[] = $file_model->saveFile($message->file); 153 +
127 } 154 }
128 - 155 +
  156 + $message->files = json_encode($file_id);
129 } 157 }
130 -  
131 - $message->files = json_encode($file_id); 158 +
  159 + $message->save();
  160 +
  161 + return $this->redirect(
  162 + [
  163 + 'chat/message',
  164 + 'user_id' => $user_id,
  165 + ]
  166 + );
  167 +
132 } 168 }
133 -  
134 -  
135 - $message->save();  
136 -  
137 - return $this->redirect(['chat/message', 'user_id'=>$user_id]);  
138 -  
139 } 169 }
  170 +
  171 + return $this->render(
  172 + 'message',
  173 + [
  174 + 'chat' => $chat,
  175 + 'user_id' => $user_id,
  176 + 'phones' => $phones,
  177 + 'sites' => $sites,
  178 + ]
  179 + );
140 } 180 }
141 -  
142 - return $this->render('message',[  
143 - 'chat' => $chat,  
144 - 'user_id' => $user_id,  
145 - 'phones' => $phones,  
146 - 'sites' => $sites,  
147 - ]); 181 +
148 } 182 }
149 -  
150 -}  
frontend/views/chat/message.php
@@ -41,14 +41,20 @@ @@ -41,14 +41,20 @@
41 </div> 41 </div>
42 <div class="cab-mes-read-cont-com"><?= count($chat->interlocutor->comments) ?> мнений</div> 42 <div class="cab-mes-read-cont-com"><?= count($chat->interlocutor->comments) ?> мнений</div>
43 <div class="cab-mes-read-cont-soc"> 43 <div class="cab-mes-read-cont-soc">
44 - <?= Html::a(Html::img('/images/ico-fb.png'), "{$chat->interlocutor->userInfo->social_fb}", [ 'target' => '_blank' ]) ?>  
45 -  
46 - <?= Html::a(Html::img('/images/ico-tw.png'), "{$chat->interlocutor->userInfo->social_t}", [ 'target' => '_blank' ]) ?>  
47 -  
48 - <?= Html::a(Html::img('/images/ico-in.png'), "{$chat->interlocutor->userInfo->social_in}", [ 'target' => '_blank' ]) ?>  
49 -  
50 - <?= Html::a(Html::img('/images/ico-vk.png'), "{$chat->interlocutor->userInfo->social_vk}", [ 'target' => '_blank' ]) ?>  
51 - 44 + <?php
  45 + if(!empty($chat->interlocutor->userInfo->social_fb)) {
  46 + echo Html::a(Html::img('/images/ico-fb.png'), "{$chat->interlocutor->userInfo->social_fb}", [ 'target' => '_blank' ]);
  47 + }
  48 + if(!empty($chat->interlocutor->userInfo->social_t)) {
  49 + echo Html::a(Html::img('/images/ico-tw.png'), "{$chat->interlocutor->userInfo->social_t}", [ 'target' => '_blank' ]);
  50 + }
  51 + if(!empty($chat->interlocutor->userInfo->social_in)) {
  52 + echo Html::a(Html::img('/images/ico-in.png'), "{$chat->interlocutor->userInfo->social_in}", [ 'target' => '_blank' ]);
  53 + }
  54 + if(!empty($chat->interlocutor->userInfo->social_vk)) {
  55 + echo Html::a(Html::img('/images/ico-vk.png'), "{$chat->interlocutor->userInfo->social_vk}", [ 'target' => '_blank' ]);
  56 + }
  57 + ?>
52 </div> 58 </div>
53 </div> 59 </div>
54 <div class="performance-vacancy-add-favorite"> 60 <div class="performance-vacancy-add-favorite">
frontend/web/images/ico-google.png 100644 → 100755

2.52 KB | W: | H:

2.52 KB | W: | H:

  • 2-up
  • Swipe
  • Onion skin