Закрытие темы после некоторого количества постов

Поддержка старых модов или модов, созданных авторами не из нашего сообщества, а также любые вопросы, связанные с модами для phpBB 3.0.x, кроме относящихся к форуму Для авторов (phpBB 3.0.x).
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Поручик
Former team member
Сообщения: 3942
Стаж: 21 год 4 месяца
Откуда: Оренбург (Южный Урал)
Благодарил (а): 24 раза
Поблагодарили: 54 раза

Закрытие темы после некоторого количества постов

Сообщение Поручик »

Довольно полезная фича для некоторых конференций. Не даёт слишком разрастаться темам

Close topic after 500 posts
http://www.phpbb.com/community/viewtopi ... 5#p8370275

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

Для поиска: автозакрытие темы, автоматическое закрытие, ограничение количество сообщений, autoclose topics after posting, лимит сообщений в теме
Профессионал - тот же дилетант, только знающий, где ошибётся.
Генератор db_update.php для phpBB2 с некоторыми удобствами. Многие моды я беру или ищу здесь, здесь, тут
Все консультации только на форуме, приваты и стук в аську по таким вопросам игнорируются!
FAQ-phpBB3 | Ошибки новичков, или как не поссориться с модератором | Правила конференции

наш форум http://forum.aeroion.ru/cat1.html
Warlon
phpBB 1.0.0
Сообщения: 5
Стаж: 19 лет 9 месяцев
Откуда: эээх

Re: Закрытие темы после некоторого количества постов

Сообщение Warlon »

Может кому пригодится. Внёс небольшое изменение: при закрытии создаётся новая тема. При этом в старой ставится ссылка на новую тему, а в новой на старую. Редирект зразу ведет в новую тему
open: posting.php
find

Код: Выделить всё

if ($mode == 'edit')
            {
                $data['topic_replies_real'] = $post_data['topic_replies_real'];
                $data['topic_replies'] = $post_data['topic_replies'];
            }
 
after-add

Код: Выделить всё

 // idiotnesia wuz here
            if ($mode == 'reply')
            {
                $data['topic_replies_real'] = $post_data['topic_replies_real'];
            }
 
open: includes/functions_posting.php
find

Код: Выделить всё

        // Send Notifications
        if ($mode != 'edit' && $mode != 'delete' && $post_approval)
        {
            user_notification($mode, $subject, $data['topic_title'], $data['forum_name'], $data['forum_id'], $data['topic_id'], $data['post_id']);
        }     
 
before-add

Код: Выделить всё

 $newURL = '1';
        // idiotnesia wuz here
        // autoforum.su wuz here
        if ($mode == 'reply' && $data['topic_replies_real'] >= 99)
        {
            $db->sql_query('UPDATE ' . TOPICS_TABLE . ' SET topic_status = ' . ITEM_LOCKED . ' WHERE topic_id = ' . (int) $data['topic_id']
);
                // note that multibyte support is enabled here
                $my_subject_q = $data['topic_title']; //        = utf8_normalize_nfc(request_var($data['topic_title'], '', true));
                $my_text_q = '[URL=http://autoforum.su/viewtopic.php?f='.$data['forum_id'].'&t='.$data['topic_id'].']\xd0\x92\xd1\x81\xd0\x
b5 \xd0\xbd\xd0\xb0\xd1\x87\xd0\xb0\xd0\xbb\xd0\xbe\xd1\x81\xd1\x8c \xd1\x82\xd1\x83\xd1\x82[/URL]<br />'.$data['message'];
                //$my_text_q    = utf8_normalize_nfc(request_var($my_text_q, '', true));

                    // variables to hold the parameters for submit_post
                    $poll_q = $uid_q = $bitfield_q = $options_q = '';

                generate_text_for_storage($my_subject_q, $uid_q, $bitfield_q, $options_q, false, false, false);
                generate_text_for_storage($my_text_q, $uid_q, $bitfield_q, $options_q, true, true, true);

                $data_new = array(
                        'forum_id'              => $data['forum_id'],
                        'icon_id'               => false,
                        'enable_bbcode'         => true,
                        'enable_smilies'        => true,
                        'enable_urls'           => true,
                        'enable_sig'            => true,
                        'message'               => $my_text_q,
                        'message_md5'   => md5($my_text_q),
                        'bbcode_bitfield'       => $bitfield_q,
                        'bbcode_uid'            => $uid_q,
                        'post_edit_locked'      => 0,
                        'topic_title'           => $my_subject_q,
                        'notify_set'            => false,
                        'notify'                        => false,
                        'post_time'             => 0,
                        'forum_name'            => '',
                        'enable_indexing'       => true,
                        );

                        submit_post('post', $my_subject_q, '', POST_NORMAL, $poll_q, $data_new);
                        $db->sql_query('UPDATE ' . POSTS_TABLE . ' SET post_text = CONCAT(post_text,  "<br /><a href=\"./viewtopic.php?f='.
$data['forum_id'].'&t='.$data_new['topic_id'].'\" class=\"topictitle\">\xd0\xad\xd1\x82\xd0\xbe\xd1\x82 \xd1\x82\xd0\xbe\xd0\xbf\xd0\xb
8\xd0\xba \xd0\xb7\xd0\xb0\xd0\xba\xd1\x80\xd1\x8b\xd1\x82. \xd0\x9f\xd1\x80\xd0\xbe\xd0\xb4\xd0\xbe\xd0\xbb\xd0\xb6\xd0\xb5\xd0\xbd\xd0\xb
8\xd0\xb5 \xd0\xb2 \xd0\xbd\xd0\xbe\xd0\xb2\xd0\xbe\xd0\xbc \xd1\x82\xd0\xbe\xd0\xbf\xd0\xb8\xd0\xba\xd0\xb5</a>")  WHERE post_id = ' . (in
t) $data['post_id']);
                        $newURL = "{$phpbb_root_path}viewtopic.$phpEx";
                        $newURL = append_sid($newURL, 'f=' . $data['forum_id'] . '&t='.$data_new['topic_id']).'#'.$data_new['topic_id']
;
        }

 
find

Код: Выделить всё

                $url = (!$params) ? "{$phpbb_root_path}viewforum.$phpEx" : "{$phpbb_root_path}viewtopic.$phpEx";
                $url = append_sid($url, 'f=' . $data['forum_id'] . $params) . $add_anchor;
 
repace

Код: Выделить всё

// autoforum.su wuz here
if($newURL == '1'){
                $url = (!$params) ? "{$phpbb_root_path}viewforum.$phpEx" : "{$phpbb_root_path}viewtopic.$phpEx";
                $url = append_sid($url, 'f=' . $data['forum_id'] . $params) . $add_anchor;
        }else
        $url = $newURL;

 
Аватара пользователя
azybat
phpBB 1.0.0
Сообщения: 7
Стаж: 16 лет 4 месяца
Откуда: Иркутск
Благодарил (а): 2 раза

Re: Закрытие темы после некоторого количества постов

Сообщение azybat »

а есть у кого мод для закрытия тем в определенное время?
Аватара пользователя
владимир1983
phpBB 3.2.6
Сообщения: 5954
Стаж: 16 лет 4 месяца
Откуда: Сергиев Посад
Благодарил (а): 373 раза
Поблагодарили: 727 раз

Re: Закрытие темы после некоторого количества постов

Сообщение владимир1983 »

[dev] Topic actions shedule

Добавлено спустя 3 минуты 24 секунды:
Вот тоже хороший мод http://www.phpbb.com/community/viewtopic.php?t=1976495
За ваши деньги решу ваши проблемы. Стучи в ЛС.
Нет человека - нет проблемы. (c)
twilight
phpBB 1.0.0
Сообщения: 3
Стаж: 15 лет 4 месяца

Re: Закрытие темы после некоторого количества постов

Сообщение twilight »

Добрый день!

Описание проблемы:

Я попробовал поставить мод Warlon и у меня возникла одна проблема и один вопрос.
Проблема -

Код: Выделить всё

\xd0\xad\xd1\x82\xd0\xbe\xd1\x82 \xd1\x82\xd0\xbe\xd0\xbf\xd0\xb
8\xd0\xba \xd0\xb7\xd0\xb0\xd0\xba\xd1\x80\xd1\x8b\xd1\x82. \xd0\x9f\xd1\x80\xd0\xbe\xd0\xb4\xd0\xbe\xd0\xbb\xd0\xb6\xd0\xb5\xd0\xbd\xd0\xb
8\xd0\xb5 \xd0\xb2 \xd0\xbd\xd0\xbe\xd0\xb2\xd0\xbe\xd0\xbc \xd1\x82\xd0\xbe\xd0\xbf\xd0\xb8\xd0\xba\xd0\xb5
вставляется именно в таком виде в сообщение, без перевода в буквы. Что тут не так?
Вопрос-
насколько сложно сделать так, чтобы при открытии новой темы, первый пост её полностью копировался с закрываемой темы?


Произведенные изменения, после которых начались неполадки: применил мод к коду форума
Версия phpBB*: 3.0.8
Используемые шаблоны: subsilver2
Используемые моды:
Версия PHP: 5.2.12
Используемая СУБД и её версия: MySQL 5.0
Ссылка на конференцию: http://www.sobaka-kirov.ru/forum/ (хотя это и не важно)
Есть ли у вас тестовый аккаунт**: нет
Использовался ли поиск для решения проблемы: использовался
Если да, то какие запросы вы использовали: автозакрытие темы, автоматическое закрытие, ограничение количество сообщений, autoclose topics after posting, лимит сообщений в теме
Каким браузером вы пользовались и есть ли проблема с другими браузерами: Opera 11.11, FireFox 4.0.1, IE 9.0.8112.16421 везде одинаково.
Последний раз редактировалось Айдар 02.06.2011 8:26, всего редактировалось 1 раз.
Причина: Не игнорируйте BBcode [code]
Booker
phpBB 2.0.7a
Сообщения: 627
Стаж: 15 лет 3 месяца
Благодарил (а): 165 раз
Поблагодарили: 21 раз

Re: Закрытие темы после некоторого количества постов

Сообщение Booker »

Кто-то использует вариант, предложенный Warlon? Он работоспособен?
Booker
phpBB 2.0.7a
Сообщения: 627
Стаж: 15 лет 3 месяца
Благодарил (а): 165 раз
Поблагодарили: 21 раз

Re: Закрытие темы после некоторого количества постов

Сообщение Booker »

Не работоспособен. Под 3.0.12 никто не может подогнать?
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11361
Стаж: 16 лет 8 месяцев
Благодарил (а): 1832 раза
Поблагодарили: 1358 раз

Re: Закрытие темы после некоторого количества постов

Сообщение Пчелкин »

Система автозакрытия работает с правками от поста - https://www.phpbb.com/community/viewtop ... 5#p8370275
Легко...количество ставим какое надо... тут нет проблем...

А вот правка от Warlon из поста Закрытие темы после некоторого количества постов - ОБЛОМ...что-то там не то...
А хотелось бы...
Во первых сам код для файла includes/functions_posting.php какой то кривой...
Есть возможность все это сделать всеж?
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13159
Стаж: 15 лет 1 месяц
Благодарил (а): 236 раз
Поблагодарили: 3750 раз

Re: Закрытие темы после некоторого количества постов

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

Вместо одного пункта инструкции (остальные без изменений)
Открыть includes/functions_posting.php
Найти

Код: Выделить всё

		// Send Notifications
		if ($mode != 'edit' && $mode != 'delete' && $post_approval)
		{
			user_notification($mode, $subject, $data['topic_title'], $data['forum_name'], $data['forum_id'], $data['topic_id'], $data['post_id']);
		}
Добавить до

Код: Выделить всё

	// idiotnesia wuz here
	$newURL = '1';
    if ($mode == 'reply' && $data['topic_replies_real'] >= 1)
    {
        $db->sql_query('UPDATE ' . TOPICS_TABLE . ' SET topic_status = ' . ITEM_LOCKED . ' WHERE topic_id = ' . (int) $data['topic_id']);
		
		$my_subject	= $data['topic_title'];
		$data['message'] = generate_text_for_edit($data['message'], $data['bbcode_uid'], true);
		$data['message'] = $data['message']['text'];
		$my_text	= '[URL=' . generate_board_url() . '/viewtopic.' . $phpEx . '?f=' . $data['forum_id'] . '&t=' . $data['topic_id'] . ']' . 'Предыдущая тема' . '[/URL]<br />' . $data['message'];

		// variables to hold the parameters for submit_post
		$poll = $uid = $bitfield = $options = ''; 

		generate_text_for_storage($my_subject, $uid, $bitfield, $options, false, false, false);
		generate_text_for_storage($my_text, $uid, $bitfield, $options, true, true, true);
		
		$my_data = array( 
			'forum_id'		=> (int) $data['forum_id'],
			'icon_id'		=> false,

			'enable_bbcode'		=> true,
			'enable_smilies'	=> true,
			'enable_urls'		=> true,
			'enable_sig'		=> true,

			'message'		=> $my_text,
			'message_md5'	=> md5($my_text),
						
			'bbcode_bitfield'	=> $bitfield,
			'bbcode_uid'		=> $uid,

			'post_edit_locked'	=> 0,
			'topic_title'		=> $my_subject,
			'notify_set'		=> false,
			'notify'			=> false,
			'post_time' 		=> 0,
			'forum_name'		=> '',
			'enable_indexing'	=> true,
		);

		submit_post('post', $my_subject, '', POST_NORMAL, $poll, $my_data);
		
		$newURL = "{$phpbb_root_path}viewtopic.$phpEx";
		$newURL = append_sid($newURL, 'f=' . $data['forum_id'] . '&t=' . $my_data['topic_id']) . '#' . $my_data['topic_id'];
		
		$next_topic	= $data['message'] . '<br />[URL=' . generate_board_url() . '/viewtopic.' . $phpEx . '?f=' . $data['forum_id'] . '&t=' . $my_data['topic_id'] . ']' . 'Следующая тема' . '[/URL]';
		generate_text_for_storage($next_topic, $uid, $bitfield, $options, true, true, true);
		$db->sql_query('UPDATE ' . POSTS_TABLE . ' SET post_text = "' . $next_topic . '", bbcode_bitfield = "' . $bitfield . '", bbcode_uid = "' . $uid . '"  WHERE post_id = ' . (int) $data['post_id']);
    }
	
Если кто доведёт это до ума с языковыми переменными - буду рада, самой сейчас некогда...
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11361
Стаж: 16 лет 8 месяцев
Благодарил (а): 1832 раза
Поблагодарили: 1358 раз

Re: Закрытие темы после некоторого количества постов

Сообщение Пчелкин »

Найти:

Код: Выделить всё

				$url = (!$params) ? "{$phpbb_root_path}viewforum.$phpEx" : "{$phpbb_root_path}viewtopic.$phpEx";
				$url = append_sid($url, 'f=' . $data['forum_id'] . $params) . $add_anchor;
 
Заменить на:

Код: Выделить всё

// autoforum.su wuz here
if($newURL == '1'){
				$url = (!$params) ? "{$phpbb_root_path}viewforum.$phpEx" : "{$phpbb_root_path}viewtopic.$phpEx";
				$url = append_sid($url, 'f=' . $data['forum_id'] . $params) . $add_anchor;
		}else
		$url = $newURL;

 
У меня от корзины вместо

Код: Выделить всё

				$url = (!$params) ? "{$phpbb_root_path}viewforum.$phpEx" : "{$phpbb_root_path}viewtopic.$phpEx";
				$url = append_sid($url, 'f=' . $data['forum_id'] . $params) . $add_anchor;
 
Это:

Код: Выделить всё

	$url = (!$params) ? "{$phpbb_root_path}viewforum.$phpEx" : "{$phpbb_root_path}viewtopic.$phpEx";
	if (isset($data['post_moved_link']))
		{
			$url = ( $data['post_moved_link'] )? $data['post_id'] : append_sid($url, 'f=' . $data['forum_id'] . $params) . $add_anchor;
		}
		else
		{
			$url = append_sid($url, 'f=' . $data['forum_id'] . $params) . $add_anchor; 
		}
Заменяю на :

Код: Выделить всё

if($newURL == '1'){	
	$url = (!$params) ? "{$phpbb_root_path}viewforum.$phpEx" : "{$phpbb_root_path}viewtopic.$phpEx";
	if (isset($data['post_moved_link']))
		{
			$url = ( $data['post_moved_link'] )? $data['post_id'] : append_sid($url, 'f=' . $data['forum_id'] . $params) . $add_anchor;
		}
		else
		{
			$url = append_sid($url, 'f=' . $data['forum_id'] . $params) . $add_anchor; 
		}
		}else
		$url = $newURL;	
И новая тема создается с запланированным действием - УДАЛЕНИЕ...
Не получается решить это ребус.... Где я смотрю не под тем углом?

Добавлено спустя 1 минуту 17 секунд:
И через несколько секунд новая тема исчезает...млин..
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13159
Стаж: 15 лет 1 месяц
Благодарил (а): 236 раз
Поблагодарили: 3750 раз

Re: Закрытие темы после некоторого количества постов

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

Навскидку:
Найти (из этого кода)

Код: Выделить всё

		$newURL = "{$phpbb_root_path}viewtopic.$phpEx";
		$newURL = append_sid($newURL, 'f=' . $data['forum_id'] . '&t=' . $my_data['topic_id']) . '#' . $my_data['topic_id'];
Заменить на

Код: Выделить всё

		$newURL = "{$phpbb_root_path}viewtopic.$phpEx";
		if (isset($data['post_moved_link']))
		{
			$newURL = ( $data['post_moved_link'] )? $data['post_id'] : append_sid($newURL, 'f=' . $data['forum_id'] . '&t=' . $my_data['topic_id']) . '#' . $my_data['topic_id'];
		}
		else
		{
			$newURL = append_sid($newURL, 'f=' . $data['forum_id'] . '&t=' . $my_data['topic_id']) . '#' . $my_data['topic_id'];
		}
[/s]
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11361
Стаж: 16 лет 8 месяцев
Благодарил (а): 1832 раза
Поблагодарили: 1358 раз

Re: Закрытие темы после некоторого количества постов

Сообщение Пчелкин »

Что-то совсем запутался...
Запрошенной темы не существует.
И лезет ошибка
Надо все расставить по местам... Порядок навести...

Добавлено спустя 29 минут 14 секунд:
Расставляю все по порядку -

Что бы тема сама закрывалась и автоматически создавалась новая после написанных 10 сообщений в теме (например)

Открыть: posting.php
Найти:

Код: Выделить всё

if ($mode == 'edit')
			{
				$data['topic_replies_real'] = $post_data['topic_replies_real'];
				$data['topic_replies'] = $post_data['topic_replies'];
			}


Добавить после:

Код: Выделить всё

 // idiotnesia wuz here
			if ($mode == 'reply')
			{
				$data['topic_replies_real'] = $post_data['topic_replies_real'];
			}
Открыть: includes/functions_posting.php
Найти:

Код: Выделить всё

// Send Notifications
Добавить перед:

Код: Выделить всё

	// idiotnesia wuz here
	$newURL = '1';
    if ($mode == 'reply' && $data['topic_replies_real'] >= 9)
    {
        $db->sql_query('UPDATE ' . TOPICS_TABLE . ' SET topic_status = ' . ITEM_LOCKED . ' WHERE topic_id = ' . (int) $data['topic_id']);
		
		$my_subject	= $data['topic_title'];
		$data['message'] = generate_text_for_edit($data['message'], $data['bbcode_uid'], true);
		$data['message'] = $data['message']['text'];
		$my_text	= '[URL=' . generate_board_url() . '/viewtopic.' . $phpEx . '?f=' . $data['forum_id'] . '&t=' . $data['topic_id'] . ']' . 'Предыдущая тема' . '[/URL]<br />' . $data['message'];

		// variables to hold the parameters for submit_post
		$poll = $uid = $bitfield = $options = ''; 

		generate_text_for_storage($my_subject, $uid, $bitfield, $options, false, false, false);
		generate_text_for_storage($my_text, $uid, $bitfield, $options, true, true, true);
		
		$my_data = array( 
			'forum_id'		=> (int) $data['forum_id'],
			'icon_id'		=> false,

			'enable_bbcode'		=> true,
			'enable_smilies'	=> true,
			'enable_urls'		=> true,
			'enable_sig'		=> true,

			'message'		=> $my_text,
			'message_md5'	=> md5($my_text),
						
			'bbcode_bitfield'	=> $bitfield,
			'bbcode_uid'		=> $uid,

			'post_edit_locked'	=> 0,
			'topic_title'		=> $my_subject,
			'notify_set'		=> false,
			'notify'			=> false,
			'post_time' 		=> 0,
			'forum_name'		=> '',
			'enable_indexing'	=> true,
		);

		submit_post('post', $my_subject, '', POST_NORMAL, $poll, $my_data);
		
		$newURL = "{$phpbb_root_path}viewtopic.$phpEx";
		$newURL = append_sid($newURL, 'f=' . $data['forum_id'] . '&t=' . $my_data['topic_id']) . '#' . $my_data['topic_id'];
		
		$next_topic	= $data['message'] . '<br />[URL=' . generate_board_url() . '/viewtopic.' . $phpEx . '?f=' . $data['forum_id'] . '&t=' . $my_data['topic_id'] . ']' . 'Следующая тема' . '[/URL]';
		generate_text_for_storage($next_topic, $uid, $bitfield, $options, true, true, true);
		$db->sql_query('UPDATE ' . POSTS_TABLE . ' SET post_text = "' . $next_topic . '", bbcode_bitfield = "' . $bitfield . '", bbcode_uid = "' . $uid . '"  WHERE post_id = ' . (int) $data['post_id']);
    }
	
ВСЕ??????
Тема автозакрывается после 10 сообщения, но новая не создается..
Ссылка на нее в посте есть, но при нажатии на ссылку -
Запрошенной темы не существует.

А как быть с этой инструкцией -
в includes/functions_posting.php

Найти:

Код: Выделить всё

				$url = (!$params) ? "{$phpbb_root_path}viewforum.$phpEx" : "{$phpbb_root_path}viewtopic.$phpEx";
				$url = append_sid($url, 'f=' . $data['forum_id'] . $params) . $add_anchor;



Заменить на:

Код: Выделить всё

// autoforum.su wuz here
if($newURL == '1'){
				$url = (!$params) ? "{$phpbb_root_path}viewforum.$phpEx" : "{$phpbb_root_path}viewtopic.$phpEx";
				$url = append_sid($url, 'f=' . $data['forum_id'] . $params) . $add_anchor;
		}else
		$url = $newURL;
ТАКОГО КОДА в файле нет -

Код: Выделить всё

				$url = (!$params) ? "{$phpbb_root_path}viewforum.$phpEx" : "{$phpbb_root_path}viewtopic.$phpEx";
				$url = append_sid($url, 'f=' . $data['forum_id'] . $params) . $add_anchor;
А есть такой от корзины -

Код: Выделить всё

	$url = (!$params) ? "{$phpbb_root_path}viewforum.$phpEx" : "{$phpbb_root_path}viewtopic.$phpEx";
	if (isset($data['post_moved_link']))
		{
			$url = ( $data['post_moved_link'] )? $data['post_id'] : append_sid($url, 'f=' . $data['forum_id'] . $params) . $add_anchor;
		}
		else
		{
			$url = append_sid($url, 'f=' . $data['forum_id'] . $params) . $add_anchor; //Добавлено FEAR93
		}
		
	
	return $url;
}
Что с ним делать то?

Добавлено спустя 6 минут 19 секунд:
И кстати - сообщения отправляю быстрым ответом...
Последний раз редактировалось Пчелкин 09.05.2014 7:53, всего редактировалось 1 раз.
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13159
Стаж: 15 лет 1 месяц
Благодарил (а): 236 раз
Поблагодарили: 3750 раз

Re: Закрытие темы после некоторого количества постов

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

Дубль два
Часть инструкции вернуть как было до последней правки
Найти

Код: Выделить всё

	$url = (!$params) ? "{$phpbb_root_path}viewforum.$phpEx" : "{$phpbb_root_path}viewtopic.$phpEx";
	if (isset($data['post_moved_link']))
		{
			$url = ( $data['post_moved_link'] )? $data['post_id'] : append_sid($url, 'f=' . $data['forum_id'] . $params) . $add_anchor;
		}
		else
		{
			$url = append_sid($url, 'f=' . $data['forum_id'] . $params) . $add_anchor; //Добавлено FEAR93
		}
Добавить до

Код: Выделить всё

	if($newURL == '1'){
Добавить после

Код: Выделить всё

	}
	else
	{
		$url = (isset($data['post_moved_link']) &&  $data['post_moved_link']) ? $data['post_id'] : $newURL;
	}
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11361
Стаж: 16 лет 8 месяцев
Благодарил (а): 1832 раза
Поблагодарили: 1358 раз

Re: Закрытие темы после некоторого количества постов

Сообщение Пчелкин »

Окончательный вариант -
Расставляю все по порядку -

Что бы тема сама закрывалась и автоматически создавалась новая после написанных 10 сообщений в теме (например)

Открыть: posting.php
Найти:

Код: Выделить всё

if ($mode == 'edit')
			{
				$data['topic_replies_real'] = $post_data['topic_replies_real'];
				$data['topic_replies'] = $post_data['topic_replies'];
			}
Добавить после:

Код: Выделить всё

 // idiotnesia wuz here
			if ($mode == 'reply')
			{
				$data['topic_replies_real'] = $post_data['topic_replies_real'];
			}
Открыть: includes/functions_posting.php
Найти:

Код: Выделить всё

// Send Notifications
Добавить перед:

Код: Выделить всё

	// idiotnesia wuz here
	$newURL = '1';
    if ($mode == 'reply' && $data['topic_replies_real'] >= 9)
    {
        $db->sql_query('UPDATE ' . TOPICS_TABLE . ' SET topic_status = ' . ITEM_LOCKED . ' WHERE topic_id = ' . (int) $data['topic_id']);
		
		$my_subject	= $data['topic_title'];
		$data['message'] = generate_text_for_edit($data['message'], $data['bbcode_uid'], true);
		$data['message'] = $data['message']['text'];
		$my_text	= '[URL=' . generate_board_url() . '/viewtopic.' . $phpEx . '?f=' . $data['forum_id'] . '&t=' . $data['topic_id'] . ']' . 'Предыдущая тема' . '[/URL]<br />' . $data['message'];

		// variables to hold the parameters for submit_post
		$poll = $uid = $bitfield = $options = ''; 

		generate_text_for_storage($my_subject, $uid, $bitfield, $options, false, false, false);
		generate_text_for_storage($my_text, $uid, $bitfield, $options, true, true, true);
		
		$my_data = array( 
			'forum_id'		=> (int) $data['forum_id'],
			'icon_id'		=> false,

			'enable_bbcode'		=> true,
			'enable_smilies'	=> true,
			'enable_urls'		=> true,
			'enable_sig'		=> true,

			'message'		=> $my_text,
			'message_md5'	=> md5($my_text),
						
			'bbcode_bitfield'	=> $bitfield,
			'bbcode_uid'		=> $uid,

			'post_edit_locked'	=> 0,
			'topic_title'		=> $my_subject,
			'notify_set'		=> false,
			'notify'			=> false,
			'post_time' 		=> 0,
			'forum_name'		=> '',
			'enable_indexing'	=> true,
		);

		submit_post('post', $my_subject, '', POST_NORMAL, $poll, $my_data);
		
		$newURL = "{$phpbb_root_path}viewtopic.$phpEx";
		$newURL = append_sid($newURL, 'f=' . $data['forum_id'] . '&t=' . $my_data['topic_id']) . '#' . $my_data['topic_id'];
		
		$next_topic	= $data['message'] . '<br />[URL=' . generate_board_url() . '/viewtopic.' . $phpEx . '?f=' . $data['forum_id'] . '&t=' . $my_data['topic_id'] . ']' . 'Следующая тема' . '[/URL]';
		generate_text_for_storage($next_topic, $uid, $bitfield, $options, true, true, true);
		$db->sql_query('UPDATE ' . POSTS_TABLE . ' SET post_text = "' . $next_topic . '", bbcode_bitfield = "' . $bitfield . '", bbcode_uid = "' . $uid . '"  WHERE post_id = ' . (int) $data['post_id']);
    }
	
Если мод корзины не установлен, то делаем
1.
Найти:

Код: Выделить всё

				$url = (!$params) ? "{$phpbb_root_path}viewforum.$phpEx" : "{$phpbb_root_path}viewtopic.$phpEx";
				$url = append_sid($url, 'f=' . $data['forum_id'] . $params) . $add_anchor;
Заменить на:

Код: Выделить всё

// autoforum.su wuz here
if($newURL == '1'){
				$url = (!$params) ? "{$phpbb_root_path}viewforum.$phpEx" : "{$phpbb_root_path}viewtopic.$phpEx";
				$url = append_sid($url, 'f=' . $data['forum_id'] . $params) . $add_anchor;
		}else
		$url = $newURL;
Если установлен мод корзины
2.
Найти:

Код: Выделить всё

	$url = (!$params) ? "{$phpbb_root_path}viewforum.$phpEx" : "{$phpbb_root_path}viewtopic.$phpEx";
	if (isset($data['post_moved_link']))
		{
			$url = ( $data['post_moved_link'] )? $data['post_id'] : append_sid($url, 'f=' . $data['forum_id'] . $params) . $add_anchor;
		}
		else
		{
			$url = append_sid($url, 'f=' . $data['forum_id'] . $params) . $add_anchor; //Добавлено FEAR93
		}
Добавить до:

Код: Выделить всё

	if($newURL == '1'){
Добавить после:

Код: Выделить всё

	}
	else
	{
		$url = (isset($data['post_moved_link']) &&  $data['post_moved_link']) ? $data['post_id'] : $newURL;
	}
Щас проверю...
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13159
Стаж: 15 лет 1 месяц
Благодарил (а): 236 раз
Поблагодарили: 3750 раз

Re: Закрытие темы после некоторого количества постов

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

"Мод корзины" - Post Expire 1.0.3 ? Тогда ещё так:
Найти (в добавленном)

Код: Выделить всё

		$my_data = array( 
Найти

Код: Выделить всё

			'post_edit_locked'	=> 0,
Добавить после

Код: Выделить всё

			'post_expire_time'		=> -1,
			'topic_expire_type'		=> 0,
			'expire_forum_id'		=> 0,

Вернуться в «Поддержка модов для phpBB 3.0.x»