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

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

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

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Поручик
Former team member
Сообщения: 3942
Стаж: 21 год 5 месяцев
Откуда: Оренбург (Южный Урал)
Благодарил (а): 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 лет 10 месяцев
Откуда: эээх

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 лет 5 месяцев
Откуда: Иркутск
Благодарил (а): 2 раза

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

Сообщение azybat »

а есть у кого мод для закрытия тем в определенное время?
Аватара пользователя
владимир1983
phpBB 3.2.6
Сообщения: 5954
Стаж: 16 лет 5 месяцев
Откуда: Сергиев Посад
Благодарил (а): 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 лет 5 месяцев

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 лет 4 месяца
Благодарил (а): 165 раз
Поблагодарили: 21 раз

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

Сообщение Booker »

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

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

Сообщение Booker »

Не работоспособен. Под 3.0.12 никто не может подогнать?
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11372
Стаж: 16 лет 9 месяцев
Благодарил (а): 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
Поддержка
Поддержка
Сообщения: 13177
Стаж: 15 лет 2 месяца
Благодарил (а): 236 раз
Поблагодарили: 3754 раза

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
Сообщения: 11372
Стаж: 16 лет 9 месяцев
Благодарил (а): 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
Поддержка
Поддержка
Сообщения: 13177
Стаж: 15 лет 2 месяца
Благодарил (а): 236 раз
Поблагодарили: 3754 раза

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
Сообщения: 11372
Стаж: 16 лет 9 месяцев
Благодарил (а): 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
Поддержка
Поддержка
Сообщения: 13177
Стаж: 15 лет 2 месяца
Благодарил (а): 236 раз
Поблагодарили: 3754 раза

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
Сообщения: 11372
Стаж: 16 лет 9 месяцев
Благодарил (а): 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
Поддержка
Поддержка
Сообщения: 13177
Стаж: 15 лет 2 месяца
Благодарил (а): 236 раз
Поблагодарили: 3754 раза

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»