Jump to content

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

Featured Replies

Posted
comment_171619

Здравствуй,

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

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

Это запрос:

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

Спасибо!

comment_171630
<?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

comment_171631

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

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

  • Author
comment_171798

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, выбрать правильный форум и выбрать время, когда он должен блокировать публикацию новых тем. Или, может быть, плагин.

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

comment_171800

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, но я привык так.

  • Author
comment_171804
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.

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

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

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

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

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

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

Edited by by_ix

  • Author
comment_171806
2 minutes ago, by_ix said:

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

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

 

comment_171807

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

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

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

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

comment_171808

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

 

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

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

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

  • Author
comment_171810
2 minutes ago, by_ix said:

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

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

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

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

1 minute ago, Desti said:

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

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

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

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

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

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

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

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

image.png.46fa44bae043bcbafe1981737caff69c.png

Что-то типа

  • Author
comment_171813
6 hours ago, Desti said:

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

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

image.png.46fa44bae043bcbafe1981737caff69c.png

Что-то типа

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

  • Author
comment_171825
19 hours ago, Desti said:

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

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

comment_171830

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

 

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

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

Desti? 🥺

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.


Guest
Ответить в этой теме...

Последние посетители 0

  • No registered users viewing this page.