Размещение поста на форуме от имени пользователя.

+8
2.08K
Любой кто ведёт свой сайт сталкивался с необходимостью иногда размещать запись не под своим основным аккаунтом, а под другим.
Что бы лишний раз не разлогиниваться и перелогиниваться, добавил возможность админу при написании поста указать от чьего имени он будет опубликован.

Иллюстрация




Перед началом сделайте копии изменяемых файлов.



---templates/_default_/components/forum_add.html

после

<input type="text" name="description" class="text-input" style="width: 350px" value="{$thread.description|escape:html}" />

вставить

  1. {if $is_admin}<input placeholder="user id" name="userid" type="input" value="" />{/if}
---com_forum_view_thread.tpl

после

<textarea id="message" name="message" rows="7"></textarea>

вставить

  1. {if $is_admin}<input placeholder="user id" name="userid" type="input" value="" />{/if}


---/components/forum/fronted.php

Заменить

  1. $post_id = $model->addPost(array(
  2. 'thread_id' => $thread['id'],
  3. 'user_id' => $inUser->id,
  4. 'pinned' => $post_pinned,
  5. 'content' => $message_bb,
  6. 'content_html' => $message_html,
  7. 'pubdate' => date("Y-m-d H:i:s"),
  8. 'editdate' => date("Y-m-d H:i:s")
  9. ));
на

  1. $topic_user_id = cmsCore::request('userid', 'int', '0');
  2. if($topic_user_id&&$inUser->is_admin){
  3. $topic_user = $topic_user_id;
  4. $topic_user_logdate = date("Y-m-d H:i:s");
  5. $inDB->query("UPDATE cms_users SET logdate = '$topic_user_logdate' WHERE id= '$topic_user'");
  6. } else {
  7. $topic_user = $inUser->id;
  8. }
  9.  
  10.  
  11.  
  12. $post_id = $model->addPost(array(
  13. 'thread_id' => $thread['id'],
  14. 'user_id' => $topic_user,
  15. 'pinned' => $post_pinned,
  16. 'content' => $message_bb,
  17. 'content_html' => $message_html,
  18. 'pubdate' => date("Y-m-d H:i:s"),
  19. 'editdate' => date("Y-m-d H:i:s")
  20. ));

В этом же файле ниже

  1. cmsActions::log('add_thread', array(
  2. 'object' => $thread['title'],
  3. 'object_url' => '/forum/thread'.$thread['id'].'-1.html',
  4. 'object_id' => $thread['id'],
  5. 'target' => $forum['title'],
  6. 'target_url' => '/forum/'.$forum['id'],
  7. 'target_id' => $forum['id'],
  8. 'description' => $message_post
  9. ));
Заменить на

  1. cmsActions::log('add_thread', array(
  2. 'object' => $thread['title'],
  3. 'object_url' => '/forum/thread'.$thread['id'].'-1.html',
  4. 'object_id' => $thread['id'],
  5. 'target' => $forum['title'],
  6. 'target_url' => '/forum/'.$forum['id'],
  7. 'target_id' => $forum['id'],
  8. 'description' => $message_post,
  9. 'user_id' => $topic_user
  10.  
  11. ));
И

  1. cmsActions::log('add_fpost', array(
  2. 'object' => $_LANG['MESSAGE'],
  3. 'object_url' => '/forum/thread'.$thread['id'].'-'.$total_pages.'.html#'.$post_id,
  4. 'object_id' => $post_id,
  5. 'target' => $thread['title'],
  6. 'target_url' => '/forum/thread'.$thread['id'].'-1.html',
  7. 'target_id' => $thread['id'],
  8. 'description' => $message_post
  9. ));
заменить на

  1. cmsActions::log('add_fpost', array(
  2. 'object' => $_LANG['MESSAGE'],
  3. 'object_url' => '/forum/thread'.$thread['id'].'-'.$total_pages.'.html#'.$post_id,
  4. 'object_id' => $post_id,
  5. 'target' => $thread['title'],
  6. 'target_url' => '/forum/thread'.$thread['id'].'.html',
  7. 'target_id' => $thread['id'],
  8. 'description' => $message_post,
  9. 'user_id' => $topic_user
  10. ));

По идее, для удобства надо бы сделать выпадающий список пользователей, может быть позже добавлю...
Вроде ничего не забыл, у меня работает, побочных эффектов пока не обнаружил.
+1
Kantona Kantona 7 лет назад #
Полезная вещь))) Спасибо! Еще бы оформить в виде компонента, и не менять стандартные файлы!))
+2
Нил™ Нил™ 7 лет назад #
Чуть не забыл один момент, при добавлении поста от имени другого пользователя, нужно обновить ему дату последнего визита на сайт, что бы совпадало со временем размещения поста. Исправил в посте, если копировали, посмотрите изменения.
+1
Pasechnik Pasechnik 7 лет назад #
Спасибо! Добавить бы возможность отложенной публикации всех этих постов, получилась бы стоящая вещь. Заказывал подобный компонент у буржуев для SMF форума. Позволяет набить постов на несколько месяцев вперед, с фотками, цитатами и видео. Создается иллюзия живого форума. Для комментов такое тоже бы не помешало. Хрен юзеров уже заставишь писать. 99,99% новых форумов мертвы. Комментарии пишут школьники с бирж за руб.

Сделал бы кто на платной основе, от покупателей отбоя бы не было. smile
+1
Нил™ Нил™ 7 лет назад #
Для другим компонентов примерно то же самое, отличаются только название некоторых переменных.
Использую подобное на одном сайте в доске объявлений: от имени гостя, от имени какого то пользователя, время будет может оформлю в пост.
По поводу смещения во времени если набивать посты сразу тоже думал, но пока ограничился этим.
Развернутый компонент как вы описали, парсер который предлагает letsgo вроде умеет что то такое, если не ошибаюсь.
Если же делать что то такое как вы описали, я бы пошел по такому пути (пара идей для тех, кто возможно захочет заняться) Ввел бы для постов форума флаг опубликован/не опубликован (заодно можно устроить премодерацию форума). Потом нужную тему набивал бы прямо с сайта, можно не только картинки видео но и цитирование использовать, и уже потом по крону включать посты, в принципе можно в каждом посте указывать время его включения.
Но сам пока не думаю, что буду этим заниматься.
0
Pasechnik Pasechnik 7 лет назад #
Развернутый компонент как вы описали, парсер который предлагает letsgo вроде умеет что то такое, если не ошибаюсь.
У letsgo комбайн, узкоспециализированные плюшки лучше.

На SMF у меня публикация через редактор с выбором пользователя и времени публикации, с правами на Админа. Там же выбирается id и название темы куда публиковать, можно задать новую, закрыть тему.
+1
Def Def 7 лет назад #
для двойки бы такой вариант, чтобы через реавторизатор не делать)

Еще от автора

Капча на сайт или разделы сайта
Если нужно, закрыть весь сайт или некоторые его разделы каптчей.
Пинг поисковых систем для первой ветки
Небольшая интеграция инструментов для пингования, чтобы сделать его чуть удобнее
Генератор карты сайта в формате txt на лету без крона
Вообще то где то тут уже есть вполне рабочие генераторы карты для первой ветки, но этот вариант тоже имеет право быть.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.