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

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

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

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

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

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти


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

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

×