Уважаемые пользователи!
C 7 ноября 2020 года phpBB Group прекратила выпуск обновлений и завершила дальнейшее развитие phpBB версии 3.2.
С 1 августа 2024 года phpBB Group прекращает поддержку phpBB 3.2 на официальном сайте.
Сайт официальной русской поддержки phpBB Guru продолжит поддержку phpBB 3.2 до 31 декабря 2024 года.
С учетом этого, настоятельно рекомендуется обновить конференции до версии 3.3.

[3.1][3.2][dev] New topic after X posts

Все расширения, созданные нашим сообществом для phpBB, как находящиеся в разработке, так и прошедшие валидацию на официальном сайте phpbb.com, будут анонсированы тут. Вся техническая поддержка по этим расширениям оказывается в этом форуме.
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Мини [FAQ] по phpBB3.1.x/3.3.x | FAQ | Как задавать вопросы | Как устанавливать расширения

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

[3.1][3.2][dev] New topic after X posts

Сообщение Татьяна5 »

Название расширения: New topic after X posts
Автор: Татьяна5
Описание расширения: Автоматически создаёт новую тему после X (задаётся в админке, по-умолчанию 249) ответов в ней. Старая тема закрывается и в ней больше никто, независимо от прав, не может отвечать
Новая тема создаётся под следующим номером по порядку, например "Заголовок темы № 2"
Версия расширения: 0.0.3
Github: https://github.com/Tatiana5/newtopicafterxposts
Скачать: https://github.com/Tatiana5/newtopicaft ... master.zip
Язык: en, ru
Вложения
newtopicafterxposts-master.zip
(17.95 КБ) 11 скачиваний
Последний раз редактировалось Татьяна5 28.02.2022 14:37, всего редактировалось 5 раз.
Аватара пользователя
Алг
Former team member
Сообщения: 933
Стаж: 11 лет 7 месяцев
Откуда: Израиль
Благодарил (а): 85 раз
Поблагодарили: 305 раз
Контактная информация:

Re: [3.1][dev] New topic after X posts

Сообщение Алг »

надо же, и у меня похожее расширение есть :)
Там упёртость и инертность, могут, кстати, в морду дать.
А ты проявляй интеллигентность, постарайся убеждать...

Т. Шаов
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

Re: [3.1][dev] New topic after X posts

Сообщение Татьяна5 »

Версия 0.0.2
  • Совместимо с phpBB 3.1 и 3.2
Аватара пользователя
va-spb
phpBB 1.4.4
Сообщения: 120
Стаж: 7 лет 11 месяцев
Благодарил (а): 60 раз
Поблагодарили: 25 раз

Re: [3.1][dev] New topic after X posts

Сообщение va-spb »

Татьяна5 писал(а): 04.06.2017 20:09задаётся в админке, по-умолчанию 249
Еле нашел.
Админка, Сообщения, Размещение сообщений:
Количество ответов в теме для создания новой: 249
(Первое сообщение в теме - это не ответ)

А возможно ли разместить текст об этом на странице расширения? Думаю, что нет, иначе он бы там был.

Новая тема с номером 2 создается, ссылка на старую тему вставляется в первое сообщение.
А вот в закрытой теме номер 1 в последнем сообщении нет ссылки "Продолжение темы", сделайте, как время появится.
С уважением, Владимир
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

Re: [3.1][dev] New topic after X posts

Сообщение Татьяна5 »

Должна быть ссылка на следующую тему, это уже сделано
Возможно, в последнем сообщении большой текст и она не поместилась?

Отправлено спустя 2 минуты 57 секунд:
va-spb писал(а): 01.08.2017 21:00А возможно ли разместить текст об этом на странице расширения?
Если кто-нибудь переведёт его на английский - добавлю
Аватара пользователя
va-spb
phpBB 1.4.4
Сообщения: 120
Стаж: 7 лет 11 месяцев
Благодарил (а): 60 раз
Поблагодарили: 25 раз

Re: [3.1][dev] New topic after X posts

Сообщение va-spb »

Для первого теста взял тему с 20 сообщениями, лимит задал 10 сообщений. Последнее сообщение короткое, 7 символов. Ссылка на новую тему не создалась.
Нашел тему с 8 сообщениями. Добил ее до 10. Новая тема создалась, старая закрылась, но ссылка на новую тему не создалась.
phpbb 3.1.9
Попробую на 3.2

Отправлено спустя 4 минуты 9 секунд:
Проверил на голой 3.2.1
Аналогично лимит 10.
В старой теме ссылка на новую тему не создалась.
С уважением, Владимир
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

Re: [3.1][dev] New topic after X posts

Сообщение Татьяна5 »

Проверила на 3.1.9 (и по пути исправила другую ошибку, перезалейте) - ссылки "Следующая тема" создаются
Редактировать сообщения в форуме, где расположена старая тема, разрешено?
Аватара пользователя
va-spb
phpBB 1.4.4
Сообщения: 120
Стаж: 7 лет 11 месяцев
Благодарил (а): 60 раз
Поблагодарили: 25 раз

Re: [3.1][dev] New topic after X posts

Сообщение va-spb »

Редактировать старую тему разрешено.
Ссылка на новую тему создается, но в новом сообщении нет пробела после ссылки, смайлик после ссылки "портится"
2017-08-01_22-02-29.jpg
2017-08-01_22-06-45.jpg
В старой теме создается новая страница с одним, последним сообщением. Надо подумать, может не создавать новую страницу с одним сообщением, а дополнить последнюю страницу и закрыть тему?
С уважением, Владимир
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

Re: [3.1][dev] New topic after X posts

Сообщение Татьяна5 »

va-spb писал(а): 01.08.2017 22:13В старой теме создается новая страница с одним, последним сообщением
Измените количество сообщений, после которого создастся новая тема

Отправлено спустя 25 минут 50 секунд:
va-spb писал(а): 01.08.2017 22:13нет пробела после ссылки
Добавила пробел
Достаточно перезалить файлы
Аватара пользователя
Beer
phpBB 2.0.9
Сообщения: 708
Стаж: 12 лет 8 месяцев
Благодарил (а): 193 раза
Поблагодарили: 69 раз

Re: [3.1][dev] New topic after X posts

Сообщение Beer »

Видел такое неоднократно на форумах - а какова цель сего: неужто движек тормозит в больших темах?
Сконвертировался с SMF2 в phpBB3.2
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

Re: [3.1][dev] New topic after X posts

Сообщение Татьяна5 »

Модераторские действия над темами тормозят и иногда не отрабатывают до конца (особенно со слабым хостингом и огромной темой)
Плюс сам форум при наличии некоторых расширений, к примеру Thanks for post, может подтормаживать на больших темах
carik
phpBB 1.4.4
Сообщения: 124
Стаж: 10 лет 4 месяца
Благодарил (а): 27 раз
Контактная информация:

Re: [3.1][dev] New topic after X posts

Сообщение carik »

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

(версия 3.1.6 и менять нет желания)
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 12372
Стаж: 12 лет 7 месяцев
Благодарил (а): 223 раза
Поблагодарили: 3517 раз
Контактная информация:

Re: [3.1][dev] New topic after X posts

Сообщение Татьяна5 »

Сохраняется автор сообщения
Т.е. менять при создании новой темы авторство последнего сообщения (которое станет первым в новой теме)? По-моему пользователи такого не поймут
carik
phpBB 1.4.4
Сообщения: 124
Стаж: 10 лет 4 месяца
Благодарил (а): 27 раз
Контактная информация:

Re: [3.1][dev] New topic after X posts

Сообщение carik »

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

Отправлено спустя 3 минуты 29 секунд:
Татьяна5 писал(а): 02.08.2017 15:17Сохраняется автор сообщения
Т.е. менять при создании новой темы авторство последнего сообщения (которое станет первым в новой теме)? По-моему пользователи такого не поймут
что то я запутался...
1- при создании новой части темы первый пост человека не имеющего отношения к созданию темы стал автором темы! это категорически не верно =)
2- чтоб не терять смыл самой темы, первый пост начала темы нужно дублировать и ставить первым сообщением в новой части. тогда ответ другого пользователя не получит прав модерирования темой.

Отправлено спустя 12 минут 22 секунды:
не знаю, вдруг поможет, вот код такого же решения (разделение темы) для воблы (vbulletin4) на ajax ...
 
global $vbulletin, $newpost, $db;

//Checks to see if the splitter is turned on
if($vbulletin->options['threadsplitter_enabled'] == 1) {
//check to see if the thread posted in has too many replys
$getAmountQuery = $db->query_read("SELECT replycount, open, contnum FROM " . TABLE_PREFIX . "thread WHERE threadid = " . $threadinfo['threadid'] . " AND " . TABLE_PREFIX . "thread.forumid NOT IN ('" . $vbulletin->options['threadsplitter_notforums'] . "') LIMIT 1");
$getAmountResult = $db->fetch_array($getAmountQuery);
$getAmount = $getAmountResult['replycount'];
$getOpen = $getAmountResult['open'];
$getContNum = $getAmountResult['contnum'] + 1;
$bvspartnum = $getContNum + 1;
$newTime = TIMENOW + 1;
$newerTime = TIMENOW + 2;

//is it above the limit
if (($getAmount > $vbulletin->options['threadsplitter_amount']) && ($getOpen == 1)) {
//get the first users details
$getUserQuery = $db->query_read("SELECT username FROM " . TABLE_PREFIX . "user WHERE userid = " . $vbulletin->options['threadsplitter_userid'] . " LIMIT 1");
$getUser = $db->fetch_array($getUserQuery);

//get the old thread info
$getThreadQuery = $db->query_read("SELECT title, firstpostid, threadid, forumid, sticky, postusername, postuserid, pollid, iconid, votenum, lastpostid, votetotal FROM " . TABLE_PREFIX . "thread WHERE threadid = " . $threadinfo['threadid'] . " LIMIT 1");
$oldThread = $db->fetch_array($getThreadQuery);

//fix the title for when we get multi-parts
$unfixedtitle = $oldThread['title'];
if (strstr($oldThread['title'], "Part")) { $oldThread['title'] = substr($oldThread['title'], 0, (strlen($oldThread['title']) - 8)); }

//get the last post info, to make the second post in the new thread
$getPostQuery = $db->query_read("SELECT postid, username, userid, title, dateline, pagetext FROM " . TABLE_PREFIX . "post WHERE postid = " . $oldThread['lastpostid'] . " AND threadid = " . $oldThread['threadid'] . " LIMIT 1");
$oldPost = $db->fetch_array($getPostQuery);

//get the first post info to make the first post
$getPostQueryF = $db->query_read("SELECT postid, username, userid, title, dateline, pagetext FROM " . TABLE_PREFIX . "post WHERE postid = " . $oldThread['firstpostid'] . " AND threadid = " . $oldThread['threadid'] . " LIMIT 1");
$oldPostF = $db->fetch_array($getPostQueryF);

//close the old thread, and create the new thread
$closeThread = $db->query_write("UPDATE " . TABLE_PREFIX . "thread SET open = 0 WHERE threadid = " . $oldThread['threadid'] . " LIMIT 1");
$newThread = $db->query_write("INSERT INTO " . TABLE_PREFIX . "thread (title, forumid, pollid, postusername, postuserid, dateline, iconid, sticky, votenum, votetotal, contnum) VALUES ('" . $db->escape_string($oldThread['title']) . " - Часть " . $bvspartnum . "', " . $oldThread['forumid'] . ", " . $oldThread['pollid'] . ", '" . $db->escape_string($oldThread['postusername']) . "', " . $oldThread['postuserid'] . ", " . TIMENOW . ", " . $oldThread['iconid'] . ", " . $oldThread['sticky'] . ", " . $oldThread['votenum'] . ", " . $oldThread['votetotal'] . ", " . $getContNum . ")");
$newThreadId = $db->insert_id();

//create the post for the old thread
$newPostOT = $db->query_write("INSERT INTO " . TABLE_PREFIX . "post (title, threadid, username, userid, dateline, pagetext, visible, parentid, showsignature) VALUES ('" . $db->escape_string($oldPost['title']) . "', " . $oldThread['threadid'] . ", '" . $db->escape_string($getUser['username']) . "', " . $vbulletin->options['threadsplitter_userid'] . ", " . TIMENOW . ", '[NOTE]Это закрытая часть темы, продолжение[B] [split]" . $newThreadId . "[/split][/B][/NOTE]', 1, " . $oldThread['lastpostid'] . ", 1)");
$newPostOTId = $db->insert_id();

$db->query_write("UPDATE ".TABLE_PREFIX."user set posts = posts+1 where userid = ".$vbulletin->options['threadsplitter_userid']."");

//create the new post to put into the new thread
if ($vbulletin->options['bvstsoriginalauthor'] == 1)
{
$bvsauthor = $db->escape_string($oldPostF['username']);
$bvsauthorid = $oldPostF['userid'];
}
else
{
$bvsauthor = $db->escape_string($getUser['username']);
$bvsauthorid = $vbulletin->options['threadsplitter_userid'];
}
if ($vbulletin->options['bvstslinks'] == 1)
{
$bvsposttext = $db->escape_string($oldPostF['pagetext']) . "\r\r[NOTE]Это продолжение темы, начало[B] [split]" . $oldThread['threadid'] . "[/split] [/B] [/NOTE]";
}
else
{
$bvsposttext = $db->escape_string($oldPostF['pagetext']);
}
$newPostNT = $db->query_write("INSERT INTO " . TABLE_PREFIX . "post (title, threadid, username, userid, dateline, pagetext, visible, showsignature)
VALUES ('" . $db->escape_string($oldPostF['title']) . "', " . $newThreadId . ", '" . $bvsauthor . "', " . $bvsauthorid . ", " . TIMENOW . ", '" . $bvsposttext ."', 1, 1)");
$newPostId = $db->insert_id();

$db->query_write("UPDATE ".TABLE_PREFIX."user set posts = posts+1 where userid = ".$bvsauthorid."");

//update the old and new thread
$updateOT = $db->query_write("UPDATE " . TABLE_PREFIX . "thread SET lastpostid = " . $newPostOTId . ", replycount = replycount + 1 WHERE threadid = " . $oldThread['threadid'] . " LIMIT 1");
$updateNT = $db->query_write("UPDATE " . TABLE_PREFIX . "thread SET firstpostid = " . $newPostId . ", replycount = replycount + 2 WHERE threadid = " . $newThreadId . " LIMIT 1");

//create the second post in the new thread

$newPostNTFId = $db->insert_id();

$db->query_write("UPDATE ".TABLE_PREFIX."user set posts = posts+1 where userid = ".$vbulletin->options['threadsplitter_userid']."");


//turn on the thread incase the next bit fails
$updateNT = $db->query_write("UPDATE " . TABLE_PREFIX . "thread SET open = 1, visible = 1, lastpost = " . TIMENOW . ", lastpostid = " . $newPostId . " WHERE threadid = " . $newThreadId . " LIMIT 1");


//insert the old last post info into the new thread
$newPostOTNP = $db->query_write("INSERT INTO " . TABLE_PREFIX . "post (title, threadid, username, userid, dateline, pagetext, visible, parentid, showsignature) VALUES ('" . $db->escape_string($oldPost['title']) . "', " . $newThreadId . ", '" . $db->escape_string($oldPost['username']) . "', " . $oldPost['userid'] . ", " . $newerTime . ", '" . $db->escape_string($oldPost['pagetext']) . "', 1, " . $newPostNTFId . ", 1)");
$newPostOTNPId = $db->insert_id();

$db->query_write("UPDATE ".TABLE_PREFIX."user set posts = posts+1 where userid = ".$oldPost['userid']."");

//unsticky the old thread
if ($vbulletin->options['threadsplitter_unsticky'] == 1) {
$unstickyOldThread = $db->query_write("UPDATE " . TABLE_PREFIX . "thread SET sticky = 0 WHERE threadid = " . $oldThread['threadid'] . " LIMIT 1");
}

//update the new thread so the last post is now the new post
$updateNT = $db->query_write("UPDATE " . TABLE_PREFIX . "thread SET lastpostid = " . $newPostOTNPId . ", open = 1, visible = 1 WHERE threadid = " . $newThreadId . " LIMIT 1");

//update the subscribed people to the new thread
if ($vbulletin->options['threadsplitter_updatesub'] == 1) {
$getSubscribed = $db->query_read("SELECT userid, folderid, emailupdate FROM " . TABLE_PREFIX . "subscribethread WHERE threadid = " . $oldThread['threadid'] . " AND canview = 1");
while ($updateSub = $db->fetch_row($getSubscribed)) {
if ($updateSub[0]) {
$db->query_write("INSERT INTO " . TABLE_PREFIX . "subscribethread (threadid, folderid, userid, emailupdate, canview) VALUES (" . $newThreadId .", " . $updateSub[1] . ", " . $updateSub[0] . ", " . $updateSub[2] . ", 1)");

}
}
}
require_once(DIR . '/includes/functions_databuild.php');
build_thread_counters($newThreadId);
build_forum_counters($threadinfo['forumid']);

//make sure it has the date in it
$extraTime1 = TIMENOW + 1;
$extraTime2 = TIMENOW + 2;
$extraTime3 = TIMENOW + 3;
$extraTime4 = TIMENOW + 4;
$extraTime5 = TIMENOW + 5;

//fix the timestamps to make sure it doesnt come out with 1969/1970
$db->query("UPDATE " . TABLE_PREFIX . "thread SET lastpost = " . $extraTime1 . " WHERE threadid = " . $oldThread['threadid'] . " LIMIT 1");
$db->query("UPDATE " . TABLE_PREFIX . "thread SET dateline = " . $extraTime2 . " WHERE threadid = " . $newThreadId . " LIMIT 1");
$db->query("UPDATE " . TABLE_PREFIX . "post SET dateline = " . $extraTime3 . " WHERE postid = " . $newPostOTId . " LIMIT 1");
$db->query("UPDATE " . TABLE_PREFIX . "post SET dateline = " . $extraTime4 . " WHERE postid = " . $newPostNTFId . " LIMIT 1");
$db->query("UPDATE " . TABLE_PREFIX . "post SET dateline = " . $extraTime5 . " WHERE postid = " . $newPostOTNPId . " LIMIT 1");

//update the forum
$db->query("UPDATE " . TABLE_PREFIX . "forum SET lastthread = '" . $db->escape_string($oldThread['title'] . " - Part " . $bvspartnum) . "', lastthreadid = " . $newThreadId . ", lastpostid = " . $newPostOTNPId . ", lastposter = '" . $db->escape_string($oldPost['username']) . "', lastpost = " . $extraTime5 . ", threadcount = threadcount + 1 WHERE forumid = " . $oldThread['forumid'] . " LIMIT 1");

}
}
carik
phpBB 1.4.4
Сообщения: 124
Стаж: 10 лет 4 месяца
Благодарил (а): 27 раз
Контактная информация:

Re: [3.1][dev] New topic after X posts

Сообщение carik »

Татьяна5, не получится доделать мод до желаемого вида?
Перенесено из форума Бета-версии расширений для phpBB в форум Анонсы и поддержка расширений для phpBB 03.09.2017 17:53 модератором Sheer

Ответить

Вернуться в «Анонсы и поддержка расширений для phpBB»