Перейти к содержанию

Отложенные публикации тем [publicator.php]


Рекомендуемые сообщения

[0. Лирическое отступление]
Всем привет!
Спустя некоторое время я всё-таки решил выложить свой скрипт, о котором я писал вот тут. За это время исправил несколько ошибок и минимизировал код.

[1. Описание]
Данный cкрипт позволяет создавать "отложенные публикации", то есть вы создаёте тему, указываете время её публикации и затем, когда это время наступает, она публикуется автоматически.

[2. Техническая часть]
Скрипт не является часть движка IPB/форума/плагином/расширением и т.п.
Это всего лишь php-файл, который изменяет значения в вашей MySQL базе данных.
Используйте его только на свой страх и риск! Ко мне никаких претензий.

[3. Установка]
3.1
. Для примера, создайте в корне вашего сайта файл, и назовите его к примеру publicator.php
3.2. Скопируйте в него вот этот текст:

Спойлер

<?php
$dbhost = 'ваш_хост';
$dbuser = 'имя_пользователя';
$dbname = 'имя_бд';
$dbpass = 'пароль_бд';
$conn = mysqli_connect($dbhost, $dbuser, $dbpass);
mysqli_select_db($conn,$dbname);
mysqli_query  ($conn,"set_client='utf8'");
mysqli_query  ($conn,"set character_set_results='utf8'");
mysqli_query  ($conn,"set collation_connection='utf8_general_ci'");
mysqli_query  ($conn,"SET NAMES utf8");
$real_time = time();
$sql = "
UPDATE
`forums_topics`,
`forums_posts`,
`core_search_index`,
`forums_forums`
SET
`forums_topics`.`approved` = 1,
`forums_topics`.`start_date` = `forums_topics`.`topic_open_time`,
`forums_topics`.`last_post` = `forums_topics`.`topic_open_time`,
`forums_topics`.`last_real_post` = `forums_topics`.`topic_open_time`,
`forums_posts`.`queued` = 0,
`forums_posts`.`post_date` = `forums_topics`.`topic_open_time`,
`core_search_index`.`index_hidden` = 0,
`forums_forums`.`posts` = `forums_forums`.`posts` + 1,
`forums_forums`.`topics` = `forums_forums`.`topics` + 1,
`forums_forums`.`last_post` = `forums_topics`.`topic_open_time`,
`forums_forums`.`last_poster_id` = `forums_topics`.`starter_id`,
`forums_forums`.`last_poster_name` = `forums_topics`.`starter_name`,
`forums_forums`.`last_title` = `forums_topics`.`title`,
`forums_forums`.`last_id` = `forums_topics`.`tid`,
`forums_forums`.`seo_last_title` = `forums_topics`.`title_seo`,
`forums_forums`.`seo_last_name` = 1,
`core_search_index`.`index_date_created` = `forums_topics`.`topic_open_time`,
`core_search_index`.`index_date_updated` = `forums_topics`.`topic_open_time`
WHERE
`forums_topics`.`topic_open_time` < $real_time AND
`forums_topics`.`approved` = -1 AND
`forums_topics`.`tid` = `forums_posts`.`topic_id` AND
`core_search_index`.`index_item_id` = `forums_posts`.`topic_id` AND
`forums_topics`.`forum_id` = `forums_forums`.`id`
";
$result = mysqli_query($conn,$sql) or die(mysqli_error($conn));
?>

 

3.3. Не забудьте указать свои данные в переменных $dbhost, $dbuser, $dbname, $dbpass

3.4. Настройте cron хостинга на автоматический запуск файла с нужной вам периодичностью. 
Обычно это делается в панели управления вашим сайтом. Планировщик / Cron и пр.
У настроено выполнение раз в час, вы выставить можете хоть каждые 5 минут. Это лишь интервал проверки, нужно ли публиковать тему.

[4. Алгоритм работы]
Когда вы создаете новую тему, в колонке модератора (обычно справа) обязательно поставьте галочку напротив пункта "Скрыть тему".
А чуть ниже, в поле "Время открытия" укажите дату и время, когда вы хотите чтобы тема была опубликована.

Спойлер

1.png

Теперь, когда наш cron запустит файл publicator.php, он проверит нужно ли публиковать вашу свежую скрытую тему. Если указанное вами "Время открытия" уже наступила, то тема опубликуется с этим указанным временем.  И все соответствующие параметры в движке форума тоже изменятся соответствующим образом, такие как Активность, Последние темы, Количество сообщений форума/пользователя и т.п.

[5. Дополнения]
Если скрипт вам будет полезен, просто лайкните мой пост, чтобы я знал что это всё было не зря )
Если вы создаете много таких "отложенных" тем, возможно вам будет полезно вывести "Время отложенной публикации" в списке тем форума, который доступен только для админа. Пишите в личку, расскажу как настроить.

Возможно вам также будут интересны другие мои темы:
Делаем анонимный раздел (Подслушано)
Меняем дату, время и автора поста / темы

Всем удачи. Желаю вам победить все баги, которые вы встретите на своём интернет-пути )

Допустил несколько грамматических ошибок при создании темы, а изменять уже не могу.
Но если что, думаю суть будет понятна.

Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...