Комментирование стен 1.10
1. Файл /components/comments/frontend.php
После: Вставить:
После:
После:ваших мучений =D
4. Выполним запросы к БД:
После:
После:
Найти:
Найти:
Найти:
После:
После: Вставить:
Код PHP:
2. Файл /core/classes/user.class.php
if($target=='clubwall' || $target=='userwall'){ $model->whereTargetIs($target, $target_id); $inDB->orderBy('c.pubdate', 'ASC'); $comments = $model->getComments(!($inUser->is_admin || $model->is_can_moderate)); $smarty = $inCore->initSmarty('components', 'com_comments_list_wall.tpl'); $smarty->assign('comments_count', $total); $smarty->assign('comments', $comments); $smarty->assign('user_can_moderate', $model->is_can_moderate); $smarty->assign('user_can_delete', $model->is_can_delete); $smarty->assign('user_can_add', $model->is_can_add); $smarty->assign('is_admin', $inUser->is_admin); $smarty->assign('is_user', $inUser->id); $smarty->assign('cfg', $model->config); $smarty->assign('labels', $model->labels); $smarty->assign('target', $target); $smarty->assign('target_id', $target_id); $smarty->display('com_comments_list_wall.tpl'); }
После:
Код PHP:
Вставить:
778 public static function getUserWall($target_id, $component='users', $my_profile=0, $is_admin=0){ $inDB = cmsDatabase::getInstance(); $inCore = cmsCore::getInstance(); $inUser = self::getInstance();
Код PHP:
После:
cmsCore::includeComments();
Код PHP:
Вставить:
811 $record['fpubdate'] = $record['is_today'] ? cmsCore::dateDiffNow($record['pubdate']) : cmsCore::dateFormat($record['pubdate']); $record['avatar'] = cmsUser::getUserAvatarUrl($record['author_id'], 'small', $record['imageurl'], $record['is_deleted']);
Код PHP:
3. Файл com_users_wall.tpl вашего шаблона
$record['com_html'] = comments(($component=='users' ? 'userwall' : 'clubwall'), $record['id']);
После:
Код PHP:
Вставить:
20 <td width="" valign="top" class="usr_wall_text">{$record.content}</td> </tr>
Код PHP:
Ура! Комментарии просматриваются, удаляются и даже редактируются, но это только начало
<tr><td> </td><td><div id="com_{if $component=='users'}userwall{else}clubwall{/if}_{$record.id}">{$record.com_html}</div></td></tr>
4. Выполним запросы к БД:
Код SQL:
5. Файл /components/users/model.php
DELETE FROM cms_comment_targets WHERE target = 'clubwall'; DELETE FROM cms_comment_targets WHERE target = 'userwall'; INSERT INTO cms_comment_targets (`id`, `target`, `component`, `title`, `target_table`, `subj`) VALUES (NULL, 'clubwall', 'clubs', 'Пост на стене клуба', 'cms_clubs', 'вашего поста на стене клуба'), (NULL, 'userwall', 'users', 'Пост на стене пользователя', 'cms_users', 'вашего поста на стене пользователя');
После:
Код PHP:
Вставить:
76 $result['link'] = '/users/'.$photo['user_id'].'/photo'.$target_id.'.html'; $result['title'] = $photo['title']; break;
Код PHP:
После:
case 'userwall' : $post = $this->inDB->get_fields('cms_user_wall', "id='{$target_id}'", 'user_id, author_id'); if (!$post) { return false; } $user = cmsUser::getShortUserData($post['user_id']); $result['link'] = cmsUser::getProfileURL($user['login']); $result['title'] = $user['nickname']; break;
Код PHP:
Вставить:
106 $album = $this->getPhotoAlbum('private', $photo['album_id']); if($album['allow_who'] != 'all') { $is_hidden = 1; } break;
Код PHP:
После:
case 'userwall' : $user = $this->inDB->get_fields('cms_user_wall', "id='{$target_id}'", 'user_id'); $profile = $this->inDB->get_fields('cms_user_profiles', "user_id='{$user['user_id']}'", 'allow_who'); if($profile['allow_who'] != 'all') { $is_hidden = 1; } break;
Код PHP:
Вставить:
194 $this->inDB->delete('cms_user_wall', "id = '$record_id'", 1); cmsCore::deleteUploadImages($record_id, 'wall'); cmsActions::removeObjectLog('add_wall_my', $record_id); cmsActions::removeObjectLog('add_wall', $record_id);
Код PHP:
6. Файл /components/clubs/model.php
$comments = $this->inDB->query("SELECT id FROM cms_comments WHERE target_id = '$record_id' AND target = 'userwall'"); if ($this->inDB->num_rows($comments)) { cmsCore::loadModel('comments'); $com_model = new cms_model_comments(); while ($comment = $this->inDB->fetch_assoc($comments)){ $com_model->deleteComment($comment['id']); } }
После:
Код PHP:
Вставить:
111 $result['link'] = $this->getPostURL($post['bloglink'], $post['seolink']); $result['title'] = $post['title']; break;
Код PHP:
После:
case 'clubwall' : $post = $this->inDB->get_fields('cms_user_wall w, cms_clubs c', "w.id='{$target_id}' AND c.id=w.user_id", 'c.id, c.title'); if (!$post) { return false; } $result['link'] = '/clubs/'.$post['id']; $result['title'] = $post['title']; break;
Код PHP:
Вставить:
142 $clubtype = $this->inDB->get_field('cms_clubs', "id='{$club_id}'", 'clubtype'); if($clubtype == 'private') { $is_hidden = 1; } break;
Код PHP:
После:
case 'clubwall' : $club = $this->inDB->get_fields('cms_user_wall w, cms_clubs c', "w.id='{$target_id}' AND c.id=w.user_id", 'c.id, c.clubtype'); if($club['clubtype'] == 'private') { $is_hidden = $club['clubtype']; } break;
Код PHP:
Вставить:
243 $this->inDB->delete('cms_user_wall', "id = '$record_id'", 1); cmsCore::deleteUploadImages($record_id, 'wall'); cmsActions::removeObjectLog('add_wall_club', $record_id);
Код PHP:
7. Файл /components/comments/frontend.php
$comments = $this->inDB->query("SELECT id FROM cms_comments WHERE target_id = '$record_id' AND target = 'clubwall'"); if ($this->inDB->num_rows($comments)) { cmsCore::loadModel('comments'); $com_model = new cms_model_comments(); while ($comment = $this->inDB->fetch_assoc($comments)){ $com_model->deleteComment($comment['id']); } }
Найти:
Код PHP:
Заменить:
314 $model->getTargetAuthor($target['target_table'], $comment['target_id'])
Код PHP:
8. Файл /components/comments/model.php
$model->getTargetAuthor($target['target_table'], $comment['target_id'], ($comment['target']=='userwall' || $comment['target']=='clubwall' ? $comment['target'] : false))
Найти:
Код PHP:
Заменить:
111 public function getTargetAuthor($table, $target_id) { $sql = "SELECT u.id id, u.email email, p.title title FROM cms_users u, {$table} p WHERE p.user_id = u.id AND p.id = '{$target_id}' AND u.is_locked = 0 AND u.is_deleted = 0 LIMIT 1";
Код PHP:
9. Файл /components/comments/js/comments.js
public function getTargetAuthor($table, $target_id, $it_wall = false) { if(!$it_wall)$sql = "SELECT u.id id, u.email email, p.title title FROM cms_users u, {$table} p WHERE p.user_id = u.id AND p.id = '{$target_id}' AND u.is_locked = 0 AND u.is_deleted = 0 LIMIT 1"; elseif($it_wall=='userwall')$sql = "SELECT u.id id, u.email email, t.nickname title FROM cms_users u, cms_user_wall w, {$table} t WHERE w.author_id = u.id AND t.id = w.user_id AND w.id = '{$target_id}' AND u.is_locked = 0 AND u.is_deleted = 0 LIMIT 1"; else $sql = "SELECT u.id id, u.email email, t.title title FROM cms_users u, cms_user_wall w, {$table} t WHERE w.author_id = u.id AND t.id = w.user_id AND w.id = '{$target_id}' AND u.is_locked = 0 AND u.is_deleted = 0 LIMIT 1";
Найти:
Код JAVASCRIPT:
Заменить:
123 $('div.cm_ajax_list').html(data);
Код JAVASCRIPT:
10. Файл /components/comments/comments.php
if(target=='userwall' || target=='clubwall')$('#com_'+target+'_'+target_id).html(data); else $('div.cm_ajax_list').html(data);
После:
Код PHP:
Вставить:
33 $inDB->orderBy('c.pubdate', 'ASC');
Код PHP:
if($target=='clubwall' || $target=='userwall'){ $comments = $model->getComments(!($inUser->is_admin || $model->is_can_moderate)); $smarty = $inCore->initSmarty('components', 'com_comments_list_wall.tpl'); $smarty->assign('comments_count', $total); $smarty->assign('comments', $comments); $smarty->assign('user_can_moderate', $model->is_can_moderate); $smarty->assign('user_can_delete', $model->is_can_delete); $smarty->assign('user_can_add', $model->is_can_add); $smarty->assign('is_admin', $inUser->is_admin); $smarty->assign('is_user', $inUser->id); $smarty->assign('cfg', $model->config); $smarty->assign('labels', $model->labels); $smarty->assign('target', $target); $smarty->assign('target_id', $target_id); $smarty->display('com_comments_list_wall.tpl'); exit; }