public function up()
 {
     $users = \bubasuma\simplechat\db\demo\User::find()->select(['id'])->asArray()->all();
     $data = (require __DIR__ . '/data/messages.php');
     $count = count($data);
     $messages = [];
     try {
         for ($i = 1; $i <= 10000; $i++) {
             shuffle($users);
             $sender = $users[0];
             $receiver = $users[1];
             $messages[] = ['sender_id' => $sender['id'], 'receiver_id' => $receiver['id'], 'created_at' => (new \DateTime())->sub(new \DateInterval('P' . mt_rand() % 500 . 'DT' . mt_rand() % 86400 . 'S'))->getTimestamp(), 'text' => $data[mt_rand(0, $count - 1)]];
         }
         ArrayHelper::multisort($messages, 'created_at', SORT_ASC, SORT_NUMERIC);
         foreach ($messages as $message) {
             $new = new \bubasuma\simplechat\db\demo\Message();
             $new->sender_id = $message['sender_id'];
             $new->receiver_id = $message['receiver_id'];
             $new->text = $message['text'];
             $new->is_new = 0;
             $new->created_at = date('Y-m-d H:i:s', $message['created_at']);
             $new->save();
         }
         return true;
     } catch (\yii\base\Exception $e) {
         return false;
     }
 }
 public function actionIndex($contactId)
 {
     /**
      * @var $user User
      * @var $contact User
      */
     $user = $this->user;
     $contact = User::findOne(['id' => $contactId]);
     if (empty($contact)) {
         throw new NotFoundHttpException();
     }
     $this->view->title = $contact->fullName;
     $conversationDataProvider = call_user_func([$this->modelClass, 'loadConversations'], $user->id, [$this, 'formatConversation'], 8);
     $messageDataProvider = call_user_func([$this->modelClass, 'loadMessages'], $user->id, $contact->id, [$this, 'formatMessage'], 10);
     $users = [];
     foreach (User::find()->with('profile')->all() as $userItem) {
         $users[] = ['label' => $userItem->fullName, 'url' => '/messages?userId=' . $userItem->id . '&contactId=' . $contact->id, 'options' => ['class' => $userItem->id == $contact->id || $userItem->id == $user->id ? 'disabled' : '']];
     }
     return $this->render('index', compact('conversationDataProvider', 'messageDataProvider', 'users', 'user', 'contact'));
 }
Пример #3
0
 public function getContact()
 {
     return $this->hasOne(User::className(), ['id' => 'contact_id']);
 }