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