コード例 #1
0
 public function actionAdd($id)
 {
     $text = Yii::app()->getRequest()->getPost('text');
     if ($text == 'Что нового') {
         $text = '';
     }
     if (empty($text) && !isset($_POST['files'])) {
         echo json_encode(array('status' => 'error', 'data' => 'Заполните все обязательные поля!'));
         exit;
     }
     $timestamp = time();
     $postObj = new Posts();
     $postObj->content = $text;
     $postObj->status = 1;
     $postObj->create_time = $timestamp;
     $postObj->author_id = Yii::app()->user->id;
     $postObj->owner_id = $id;
     $postObj->unique_hash = md5(Yii::app()->user->id . $id . $timestamp);
     $postObj->_owner = $id;
     // С чьей стены будем получать последние записи
     $postObj->_last_id = Yii::app()->getRequest()->getPost('lastEntryId');
     // id последней "видимой" записи
     $posts_files = PostsFiles::model();
     if ($postObj->save()) {
         if (isset($_POST['files'])) {
             $posts_files->addFiles($postObj->id);
         }
         if (Yii::app()->request->isAjaxRequest) {
             $posts = $postObj->lastAfterId();
             if (!empty($posts)) {
                 $res = '';
                 foreach ($posts as $key => $item) {
                     $files = $posts_files->findAll('posts_id = :posts_id', array(':posts_id' => $item['id']));
                     $res .= $this->renderPartial('//profile/profile/_wallItem', array('item' => $item, 'files' => $files, 'owner' => $id, 'display' => 'none'), true);
                 }
                 echo json_encode(array('status' => 'ok', 'data' => $res));
             } else {
                 echo json_encode(array('status' => 'error', 'data' => 'null'));
             }
         } else {
             throw new CException('Not Found', 404);
         }
     } else {
         if (Yii::app()->request->isAjaxRequest) {
             echo json_encode(array('status' => 'error', 'data' => 'Не могу соединиться с БД'));
         } else {
             throw new CException('Server error', 500);
         }
     }
 }
コード例 #2
0
 public function actionAdd()
 {
     if (Yii::app()->request->isAjaxRequest) {
         $content = Yii::app()->getRequest()->getPost('content');
         $owner_type = Yii::app()->getRequest()->getPost('owner_type');
         // тип владельца (у кого на стене запостили) поста - user|company
         $owner_id = Yii::app()->getRequest()->getPost('owner_id');
         // id владельца поста
         $author_type = Yii::app()->getRequest()->getPost('author_type');
         // тип автора поста
         if ($author_type == 'user') {
             // если постим от юзера
             $author_id = Yii::app()->user->id;
         }
         /*else { // иначе проверяем наличие компании у этого пользователя и постим от имени компании
         
                     }*/
         $post_type = Yii::app()->getRequest()->getPost('post_type');
         // тип поста (для их сортировки где либо) - userwall|companywall|communitywall
         $ts = time();
         // Создание JSON массива для прикрепления файлов к посту.
         $multimedia = array();
         // Доработать в дальнейшем - либо получаем готовый массив, либо парсим тут в php
         if (isset($_POST['files'])) {
             foreach ($_POST['files'] as $ind => $files) {
                 $multimedia[$ind]['nomber'] = $ind + 1;
                 $multimedia[$ind]['id'] = key($files);
                 $multimedia[$ind]['type'] = current($files);
                 $multimedia[$ind]['upload_date'] = time();
             }
         } else {
             $files = array();
         }
         if ($content == 'Что нового') {
             // если контент пуст, то выдём ошибку
             $content = '';
         }
         if (empty($content)) {
             echo json_encode(array('status' => 'error', 'data' => 'Заполните все обязательные поля!'));
             exit;
         }
         $postObj = new Posts();
         // создаём новый пост
         $postObj->parent_id = '0';
         // 0 т.к. это новый пост и мы никого не расшариваем
         $postObj->post_type = $post_type;
         $postObj->author_type = $author_type;
         $postObj->owner_type = $owner_type;
         $postObj->author_id = $author_id;
         $postObj->owner_id = $owner_id;
         $postObj->creation_date = $ts;
         $postObj->content = $content;
         $postObj->multimedia = json_encode($multimedia);
         $postObj->hash = md5($author_type . $author_id . $owner_id . $ts);
         // уникальный ключ. Нужен для того что бы пользователь не репостил на свою страницу один и тот же пост
         $postObj->_owner_type = $owner_type;
         // С чьей стены будем получать последние записи
         $postObj->_owner_id = $owner_id;
         $postObj->_last_id = Yii::app()->getRequest()->getPost('lastEntryId');
         // id последней "видимой" записи
         if ($postObj->save()) {
             $posts = $postObj->lastAfterId();
             if (!empty($posts)) {
                 $res = '';
                 $data = array('item' => $item, 'display' => 'none');
                 if (isset($files)) {
                     $data['files'] = $files;
                 }
                 if (isset($id)) {
                     $data['owner'] = $id;
                 }
                 foreach ($posts as $key => $item) {
                     $res .= $this->renderPartial('//posts/_postItem', $data, true);
                 }
                 echo json_encode(array('status' => 'ok', 'data' => $res));
             } else {
                 echo json_encode(array('status' => 'error', 'data' => 'null'));
             }
         } else {
             echo json_encode(array('status' => 'error', 'data' => 'Не могу соединиться с БД'));
         }
     } else {
         throw new CException('Not Found', 404);
     }
 }