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

Как закрывать форумы автоматически?


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

Здравствуй,

Я провожу несколько конкурсов на своих форумах, и было бы здорово, если бы существовал инструмент или плагин для автоматического закрытия форумов в установленное время. Например, после полуночи никто не может размещать темы в определенной области.

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

Это запрос:

$sql = "UPDATE core_permission_index SET perm_3='' WHERE perm_id=114 AND perm_type_id=29"

Спасибо!

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

<?php

\define('REPORT_EXCEPTIONS', TRUE);
$_SERVER['SCRIPT_FILENAME']	= __FILE__;
require_once 'init.php';
\IPS\Session\Front::i();

\IPS\Db::i()->update( 'core_permission_index', array('perm_3'=>''), array( 'perm_id=? and perm_type_id=?', 114, 29 ));

Создайте файлик в корне, вызывайте через cron

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

Строчка \IPS\Session\Front::i(); лишняя, можно удалить.

Если размещать файл не в корне, то надо указать правильный путь к init.php, типа require_once '../../init.php';

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

Desti У меня уже есть файл, который вызывается через cron:

Spoiler
<?php
/*if(php_sapi_name() !== 'cli'){
    die('Access denied.');
}*/
$secretphrase= "PASSWORD";
if (!isset($_GET[$secretphrase])) {
    http_response_code(401);
    die('Access denied.');
}

$servername = "localhost";
$username = "USERNAME";
$password = "PASSWORD";
$dbname = "DB";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

$sql = "UPDATE core_permission_index SET perm_3='' WHERE perm_id=114 AND perm_type_id=29";

if ($conn->query($sql) === TRUE) {
  echo "Record updated successfully!";
} else {
  echo "Error updating record: " . $conn->error;
}

$conn->close();
?>

 

Но ваше решение звучит проще.

Я искал способ разрешить определенной группе получить доступ к странице .php, выбрать правильный форум и выбрать время, когда он должен блокировать публикацию новых тем. Или, может быть, плагин.

Звучит не слишком сложно, но, вероятно, потребуется время, верно?

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

BlackShot самый простой вариант, это создать новую страницу c блоком.
 

Спойлер

создать php блок.
11.thumb.PNG.a1efeeade4c4eee792f0fa29e74383c1.PNG

придумать любой ключ.
22.thumb.PNG.6013b78566c592342290145f453006a8.PNG

вставить свой код туда, я немного изменил его.
33.PNG.ec53318aa6b30855106db51f41d9b7da.PNG

$servername = "***";
$username = "***";
$password = ""***";";
$dbname = ""***";";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

$perm = '';
$pid = '8';
$ptypeid = '3';

$sql = "UPDATE core_permission_index SET perm_3='$perm' WHERE perm_id=$pid AND perm_type_id=$ptypeid";

if ($conn->query($sql) === TRUE) {
echo "<span style='color:green;'>Record updated successfully!</span>";
} else {
echo "<span style='color:red;'>Error updating record: </span>" . $conn->error;
}

$conn->close();
?>

создать страницу, в принципе, без разницу какую, но тебе удобнее второй вариант, думаю.
44.PNG.9311cc8d1bf7f2f9ebe9dd91189831d5.PNG

вставить во вкладку Content тот самый ключ с созданного блока.
55.PNG.de397dc5038865ea266721ac60104caf.PNG

дать нужным группам разрешения для доступа к странице и блоку и перейти на страницу.
66.PNG.a18f9b22b3ffe47f7e22d5c7ad311b31.PNG

наслаждаться.

при желании, можно на страницу добавить ввод необходимых значений через инпут.
ещё можно запрос сделать логикой ипс, как писал Desti, но я привык так.

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

18 hours ago, by_ix said:

BlackShot the simplest option is to create a new page with a block.
 

  Hide contents

create php block.
11.thumb.PNG.a1efeeade4c4eee792f0fa29e74383c1.PNG

come up with any key.
22.thumb.PNG.6013b78566c592342290145f453006a8.PNG

paste your code there, i changed it a bit.
33.PNG.ec53318aa6b30855106db51f41d9b7da.PNG





  

to create a page, in principle, without any difference, but the second option is more convenient for you, I think.
44.PNG.9311cc8d1bf7f2f9ebe9dd91189831d5.PNG

insert the same key from the created block into the Content tab.
55.PNG.de397dc5038865ea266721ac60104caf.PNG

give the necessary groups permissions to access the page and block and go to the page.
66.PNG.a18f9b22b3ffe47f7e22d5c7ad311b31.PNG

enjoy.

if desired, you can add the input of the necessary values to the page via the input.
You can still make a request with the ips logic, as Desti wrote, but I'm used to it this way.

Звучит очень, очень интересно, и это сработало! Спасибо!

Теперь мне нужно найти способ отображать календарь со временем, чтобы он запускался в указанное время. Вы знаете какие-нибудь учебники?

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

6 минут назад, BlackShot сказал:

отображать календарь со временем

не совсем понимаю, что это значит.

нужно просто давать доступ людям к календарю в определённое время? или что.

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

2 minutes ago, by_ix said:

не совсем понимаю, что это значит.

Я хотел бы разрешить этим конкретным группам установить день и время закрытия форумов. Прямо сейчас кнопка мгновенно закрывает форумы. Имеет ли это смысл? 😬

 

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

а календари тут причём? :bw:

3 минуты назад, BlackShot сказал:

конкретным группам установить день и время закрытия форумов

это уже сложнее.
проще тогда создать две cron задачи, которые будут каждый день (или в указанные дни) открывать и закрывать форумы.

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

Чтобы создать что-то для исполнения в будущем, надо, во первых, создать форму, в которой указывается форум, время и дата, во вторых, создать табличку в базе (или хранить в Store) и записывать в нее данные из формы, в третьих, создать задачу, которая раз в минуту будет проверять табличку и при наступлении указанного времени закрывать форум. Тянет на целое приложение :)

 

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

3 минуты назад, Desti сказал:

Тянет на целое приложение

о чём и речь.
@BlackShot будет очередной повод изучить строение плагинов и приложений.

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

2 minutes ago, by_ix said:

а календари тут причём? :bw:

это уже сложнее.
проще тогда создать две cron задачи, которые будут каждый день (или в указанные дни) открывать и закрывать форумы.

Я думал о календаре, отображаемом пользователю, поэтому он / она выбирает дату и время закрытия форумов.

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

1 minute ago, Desti said:

Чтобы создать что-то для исполнения в будущем, надо, во первых, создать форму, в которой указывается форум, время и дата, во вторых, создать табличку в базе (или хранить в Store) и записывать в нее данные из формы, в третьих, создать задачу, которая раз в минуту будет проверять табличку и при наступлении указанного времени закрывать форум. Тянет на целое приложение :)

Это дало мне какое-то направление. Я посмотрю, смогу ли я узнать это в свободное время. Спасибо!

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

1 час назад, BlackShot сказал:

Это дало мне какое-то направление.

Создайте простое приложение и тренируйтесь. Плагины не совсем то, что нужно для решения этой задачи.

1 час назад, BlackShot сказал:

Я думал о календаре, отображаемом пользователю

Это усложнение. Вам нужна форма ввода даты и поле ввода времени в простейшем формате типа часы / минуты.

image.png.46fa44bae043bcbafe1981737caff69c.png

Что-то типа

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

6 hours ago, Desti said:

Создайте простое приложение и тренируйтесь. Плагины не совсем то, что нужно для решения этой задачи.

Это усложнение. Вам нужна форма ввода даты и поле ввода времени в простейшем формате типа часы / минуты.

image.png.46fa44bae043bcbafe1981737caff69c.png

Что-то типа

Да, идеально! Вы сделали это или это из существующего плагина / приложения? Мне нужно что-то подобное.

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

Это написанное за 5 минут приложение.

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

19 hours ago, Desti said:

Это написанное за 5 минут приложение.

Не могли бы вы поделиться им только для учебы? 😊

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

Не думаю, что вам поможет форма в пустом приложении. Найду время, сделаю вам шаблончик для изучения.

 

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

  • 2 недели спустя...
On 8/24/2021 at 8:23 AM, Desti said:

Не думаю, что вам поможет форма в пустом приложении. Найду время, сделаю вам шаблончик для изучения.

Desti? 🥺

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

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

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

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

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

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

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

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

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

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

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