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

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

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

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11372
Стаж: 16 лет 9 месяцев
Благодарил (а): 1832 раза
Поблагодарили: 1358 раз

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

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

ХМ... Теперь отправив 10 й пост попадаем в новую тему...Отлично!!!! ЗАРАБОТАЛО!!
А вот еще три ошибочки в дебаггере остались... Но это мелочь уже..
1 меньше минуты назад Pthelovod

-
Язык: ru Страница: posting.php?mode=reply&f=4&t=3613
Файл: [ROOT]/includes/functions_posting.php
Строка: 1903 [PHP Notice]

Undefined index: forum_ranon_flags
2 меньше минуты назад Pthelovod

-
Язык: ru Страница: posting.php?mode=reply&f=4&t=3613
Файл: [ROOT]/includes/functions_posting.php
Строка: 2034 [PHP Notice]

Undefined index: topic_featured
3 меньше минуты назад Pthelovod

-
Язык: ru Страница: posting.php?mode=reply&f=4&t=3613
Файл: [ROOT]/includes/functions_posting.php
Строка: 2240 [PHP Notice]

Undefined index: post_id
Татьяна5, на всяк случай сам файл... мож есть наработки, а то у меня сегодня мозг уже умер... :oops:
functions_posting.rar
Добавлено спустя 13 минут:
Порядок - помозговал -

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

			'post_expire_time'	=> -1,
			'topic_expire_type'	=> 0,
			'expire_forum_id'	=> 0,
			'forum_ranon_flags' => 0,
			'topic_featured'	=> 0,
			'post_id'       	=> 0,
Добавлено спустя 9 минут 3 секунды:
УПС... Если отправляется пост со смайлами или с тегами вылазит вот что -

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

SQL ERROR [ mysqli ]

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '{SMILIES_PATH}/dance3.gif" alt=":ta_n_cor:" title="Танец" />
Но после рефлеша - тема закрыта и новая создана...
А у дебаггера ошибок нет...

Добавлено спустя 1 минуту 30 секунд:
И данная ошибка в общем логе ошибок в админке появляется без кнопки удалить!!! Афигеть...
У вас нет необходимых прав для просмотра вложений в этом сообщении.
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13177
Стаж: 15 лет 2 месяца
Благодарил (а): 236 раз
Поблагодарили: 3754 раза

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

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

Пчелкин писал(а):Если отправляется пост со смайлами или с тегами
(код без правок для модов)

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

	// 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'] . ' AND topic_moved_id = 0');
		
		$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'	=> (string)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,
		);

		$newURL = 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);
		
		$current_time = time();
		$new_data = array(
			'topic_title'			=> $my_subject,
			'topic_first_post_id'	=> (isset($data['topic_first_post_id'])) ? (int) $data['topic_first_post_id'] : 0,
			'topic_last_post_id'	=> (isset($data['topic_last_post_id'])) ? (int) $data['topic_last_post_id'] : 0,
			'topic_time_limit'		=> (int) $data['topic_time_limit'],
			'topic_attachment'		=> (isset($data['topic_attachment'])) ? (int) $data['topic_attachment'] : 0,
			'post_id'				=> (int)  $data['post_id'],
			'topic_id'				=> (int)  $data['topic_id'],
			'forum_id'				=> (int)  $data['forum_id'],
			'icon_id'				=> (int) $data['icon_id'],
			'poster_id'				=> (int) $data['poster_id'],
			'enable_sig'			=> (bool) $data['enable_sig'],
			'enable_bbcode'			=> (bool) $data['enable_bbcode'],
			'enable_smilies'		=> (bool) $data['enable_smilies'],
			'enable_urls'			=> (bool) $data['enable_urls'],
			'enable_indexing'		=> (bool) $data['enable_indexing'],
			'message_md5'			=> (string)md5($next_topic),
			'post_time'				=> (isset($data['post_time'])) ? (int) $data['post_time'] : $current_time,
			'post_checksum'			=> (isset($data['post_checksum'])) ? (string) $data['post_checksum'] : '',
			'post_edit_reason'		=> $data['post_edit_reason'],
			'post_edit_user'		=> 0,
			'forum_parents'			=> $data['forum_parents'],
			'forum_name'			=> $data['forum_name'],
			'notify'				=> (isset($data['notify'])) ? $data['notify'] : false,
			'notify_set'			=> (isset($data['notify_set'])) ? $data['notify_set'] : false,
			'poster_ip'				=> (isset($data['poster_ip'])) ? $data['poster_ip'] : $user->ip,
			'post_edit_locked'		=> (int) $data['post_edit_locked'],
			'bbcode_bitfield'		=> $bitfield,
			'bbcode_uid'			=> $uid,
			'message'				=> $next_topic,
			//'attachment_data'		=> $message_parser->attachment_data,
			//'filename_data'			=> $message_parser->filename_data,

			'topic_approved'		=> (isset($data['topic_approved'])) ? $data['topic_approved'] : false,
			'post_approved'			=> (isset($data['post_approved'])) ? $data['post_approved'] : false,
			
			'topic_replies_real'	=> $data['topic_replies_real'],
		);
		submit_post('edit', $my_subject, '', POST_NORMAL, $poll, $new_data);
    }
Осталась ошибка с перестающим работать ббкодом url
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11372
Стаж: 16 лет 9 месяцев
Благодарил (а): 1832 раза
Поблагодарили: 1358 раз

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

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

Да вроде работает тег юрла...
А воще-то нет - не работает, точно...

Добавлено спустя 34 минуты 12 секунд:
Хм... Последнее сообщение: что есть уже новая тема со ссылкой на новую, после создания новой темы в старой теме угадывается, но при переходе к нему (к последнему) - его нет... Исчезло...

Старая закрытая тема с исчезнувшим 11-м сообщением... http://kirovskuiraion.ru/topic4784.html
Новая тема - http://kirovskuiraion.ru/topic4792.html

Добавлено спустя 28 минут 33 секунды:
Конечный продукт -

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

	// 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'] . ' AND topic_moved_id = 0');
		
		$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'	=> (string)md5($my_text),
						
			'bbcode_bitfield'	=> $bitfield,
			'bbcode_uid'		=> $uid,

			'post_edit_locked'	=> 0,
			'post_expire_time'	=> -1,
			'topic_expire_type'	=> 0,
			'expire_forum_id'	=> 0,
			'forum_ranon_flags' => 0,
			'topic_featured'	=> 0,
			'post_id'       	=> 0,		
			'topic_title'		=> $my_subject,
			'notify_set'		=> false,
			'notify'			=> false,
			'post_time' 		=> 0,
			'forum_name'		=> '',
			'enable_indexing'	=> true,
		);

		$newURL = 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);
		
		$current_time = time();
		$new_data = array(
			'topic_title'			=> $my_subject,
			'topic_first_post_id'	=> (isset($data['topic_first_post_id'])) ? (int) $data['topic_first_post_id'] : 0,
			'topic_last_post_id'	=> (isset($data['topic_last_post_id'])) ? (int) $data['topic_last_post_id'] : 0,
			'topic_time_limit'		=> (int) $data['topic_time_limit'],
			'topic_attachment'		=> (isset($data['topic_attachment'])) ? (int) $data['topic_attachment'] : 0,
			'post_id'				=> (int)  $data['post_id'],
			'topic_id'				=> (int)  $data['topic_id'],
			'forum_id'				=> (int)  $data['forum_id'],
			'icon_id'				=> (int) $data['icon_id'],
			'poster_id'				=> (int) $data['poster_id'],
			'enable_sig'			=> (bool) $data['enable_sig'],
			'enable_bbcode'			=> (bool) $data['enable_bbcode'],
			'enable_smilies'		=> (bool) $data['enable_smilies'],
			'enable_urls'			=> (bool) $data['enable_urls'],
			'enable_indexing'		=> (bool) $data['enable_indexing'],
			'message_md5'			=> (string)md5($next_topic),
			'post_time'				=> (isset($data['post_time'])) ? (int) $data['post_time'] : $current_time,
			'post_checksum'			=> (isset($data['post_checksum'])) ? (string) $data['post_checksum'] : '',
			'post_edit_reason'		=> $data['post_edit_reason'],
			'post_edit_user'		=> 0,
			'forum_parents'			=> $data['forum_parents'],
			'forum_name'			=> $data['forum_name'],
			'notify'				=> (isset($data['notify'])) ? $data['notify'] : false,
			'notify_set'			=> (isset($data['notify_set'])) ? $data['notify_set'] : false,
			'poster_ip'				=> (isset($data['poster_ip'])) ? $data['poster_ip'] : $user->ip,
			'post_edit_locked'		=> (int) $data['post_edit_locked'],
			'bbcode_bitfield'		=> $bitfield,
			'bbcode_uid'			=> $uid,
			'message'				=> $next_topic,
			//'attachment_data'		=> $message_parser->attachment_data,
			//'filename_data'			=> $message_parser->filename_data,

			'topic_approved'		=> (isset($data['topic_approved'])) ? $data['topic_approved'] : false,
			'post_approved'			=> (isset($data['post_approved'])) ? $data['post_approved'] : false,
			
			'topic_replies_real'	=> $data['topic_replies_real'],
		);
		submit_post('edit', $my_subject, '', POST_NORMAL, $poll, $new_data);
    }
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11372
Стаж: 16 лет 9 месяцев
Благодарил (а): 1832 раза
Поблагодарили: 1358 раз

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

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

На своих форумах код удалил...Не хочет...А на других без корзины работает без свистоплясок...
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13177
Стаж: 15 лет 2 месяца
Благодарил (а): 236 раз
Поблагодарили: 3754 раза

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

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

Пчелкин писал(а):Конечный продукт
Для модов ещё
Найти

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

			'post_edit_locked'		=> (int) $data['post_edit_locked'],
Добавить после

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

			'post_expire_time'	=> -1,
			'topic_expire_type'	=> 0,
			'expire_forum_id'	=> 0,
			'forum_ranon_flags' => 0,
Добавлено спустя 2 минуты 2 секунды:
Пчелкин писал(а):Не хочет
Понятно что не хочет, когда post_expire_time становится нулём и в результате удаляет сообщение
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11372
Стаж: 16 лет 9 месяцев
Благодарил (а): 1832 раза
Поблагодарили: 1358 раз

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

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

Ага... Вот теперь полный порядок!!!!
С праздничком всех!!!!!!!!!!!!!!!!!!!!!!!!!!
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13177
Стаж: 15 лет 2 месяца
Благодарил (а): 236 раз
Поблагодарили: 3754 раза

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

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

Татьяна5 писал(а):Осталась ошибка с перестающим работать ббкодом url
Fix
includes/functions_posting.php
Найти

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

$data['message'] = $data['message']['text'];
Заменить на

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

$data['message'] = htmlspecialchars(html_entity_decode($data['message']['text']));
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13177
Стаж: 15 лет 2 месяца
Благодарил (а): 236 раз
Поблагодарили: 3754 раза

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

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

При создании новой темы пропадали вложения (и в новом, и в старом сообщении), fix:

includes/functions_posting.php (вместо части инструкции)
Найти

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

	// Send Notifications
Добавить до

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

	// 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'] . ' AND topic_moved_id = 0');
		
		$data['message'] = generate_text_for_edit($data['message'], $data['bbcode_uid'], true);
		$data['message'] = htmlspecialchars(html_entity_decode($data['message']['text']));
		
		// variables to hold the parameters for submit_post
		$poll = $uid = $bitfield = $options = '';
		$allow_bbcode = $data['enable_bbcode'];
		$allow_urls = $data['enable_urls'];
		$allow_smilies = $data['enable_smilies'];
		
		
		//Create next topic
		
		$next_topic_text	= '[url=' . generate_board_url() . '/viewtopic.' . $phpEx . '?f=' . $data['forum_id'] . '&t=' . $data['topic_id'] . ']' . $user->lang['PREVIOUS_TOPIC'] . '[/url]<br />' . $data['message'];
		
		//If old post has attachments
		$sql = 'SELECT attach_id, mimetype FROM ' . ATTACHMENTS_TABLE . ' WHERE post_msg_id = ' . (int) $data['post_id'];
		$result = $db->sql_query($sql);
		while ($attach_row = $db->sql_fetchrow($result))
		{
			if(strpos($attach_row['mimetype'], 'image/') !== false)
			{
				$next_topic_text .= '<br />[img]' . generate_board_url() . '/download/file.php?id=' . (int) $attach_row['attach_id'] . '[/img]';
			}
			else
			{
				$next_topic_text .= '<br />[url=' . generate_board_url() . '/download/file.php?id=' . (int) $attach_row['attach_id'] . ']' . $user->lang['DOWNLOAD_FILE'] . '[/url]';
			}
		}
		$db->sql_freeresult($result);
		$next_topic_text = preg_replace('/\[attachment=(.*?)\[\/attachment\]/', '', $next_topic_text);
		
		generate_text_for_storage($next_topic_text, $uid, $bitfield, $options, $allow_bbcode, $allow_urls, $allow_smilies);
		
		$next_topic_data = array( 
			'forum_id'		=> $data['forum_id'],
			'icon_id'		=> $data['icon_id'],
			'topic_title'	=> $subject,

			'enable_bbcode'		=> $data['enable_bbcode'],
			'enable_smilies'	=> $data['enable_smilies'],
			'enable_urls'		=> $data['enable_urls'],
			'enable_sig'		=> $data['enable_sig'],

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

			'post_edit_locked'	=> $data['post_edit_locked'],
			'notify_set'		=> $data['notify_set'],
			'notify'			=> $data['notify'],
			'post_time' 		=> $current_time,
			'forum_name'		=> $data['forum_name'],
			'enable_indexing'	=> $data['enable_indexing'],
		);
		
		$newURL = submit_post('post', $subject, '', POST_NORMAL, $poll, $next_topic_data);
		
		//Edit old topic
		$this_topic_text = $data['message'] . '<br />[url=' . generate_board_url() . '/viewtopic.' . $phpEx . '?f=' . $data['forum_id'] . '&t=' . $next_topic_data['topic_id'] . ']' . $user->lang['NEXT_TOPIC'] . '[/url]';
		generate_text_for_storage($this_topic_text, $uid, $bitfield, $options, true, true, true);
		
		$this_topic_data = array(
			'forum_id'				=> (int)  $data['forum_id'],
			'poster_id'				=> (int) $data['poster_id'],
			'icon_id'				=> (int) $data['icon_id'],
			'post_approved'			=> (isset($data['post_approved'])) ? $data['post_approved'] : false,
			'enable_bbcode'			=> (bool) $data['enable_bbcode'],
			'enable_smilies'		=> (bool) $data['enable_smilies'],
			'enable_urls'			=> (bool) $data['enable_urls'],
			'enable_sig'			=> (bool) $data['enable_sig'],
			'topic_title'			=> $subject,
			'message_md5'			=> (string)md5($this_topic_text),
			'attachment_data'		=> $data['attachment_data'],
			'bbcode_bitfield'		=> $bitfield,
			'bbcode_uid'			=> $uid,
			'post_edit_locked'		=> (int) $data['post_edit_locked'],
			'message'				=> $this_topic_text,
			
			'topic_approved'		=> (isset($data['topic_approved'])) ? $data['topic_approved'] : false,
			'topic_first_post_id'	=> (isset($data['topic_first_post_id'])) ? (int) $data['topic_first_post_id'] : 0,
			'topic_last_post_id'	=> (isset($data['topic_last_post_id'])) ? (int) $data['topic_last_post_id'] : 0,
			'topic_time_limit'		=> (int) $data['topic_time_limit'],
			'post_id'				=> (int)  $data['post_id'],
			'topic_id'				=> (int)  $data['topic_id'],
			'topic_replies_real'	=> $data['topic_replies_real'],
			
			'enable_indexing'		=> (bool) $data['enable_indexing'],
			'post_time'				=> (isset($data['post_time'])) ? (int) $data['post_time'] : $current_time,
			'post_edit_reason'		=> $data['post_edit_reason'],
			'post_edit_user'		=> 0,
			'forum_name'			=> $data['forum_name'],
			'notify'				=> (isset($data['notify'])) ? $data['notify'] : false,
			'notify_set'			=> (isset($data['notify_set'])) ? $data['notify_set'] : false,
		);
		
		submit_post('edit', $subject, '', POST_NORMAL, $poll, $this_topic_data);
    }
language/ru/posting.php
Найти

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

'WRONG_SIZE'				=> 'Размеры изображения должны быть не менее %1$d×%2$d и не более %3$d×%4$d. Размер отправленного изображения — %5$d×%6$d. Все размеры указаны в пикселах.',
Добавить после

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

	//mod
	'DOWNLOAD_FILE'				=> 'Скачать файл',
	'NEXT_TOPIC'				=> 'Следующая тема',
	'PREVIOUS_TOPIC'			=> 'Предыдущая тема',
В старой теме вложения остаются, в новой - изображения выводятся в ббкоде [img], остальные файлы в [url]
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11372
Стаж: 16 лет 9 месяцев
Благодарил (а): 1832 раза
Поблагодарили: 1358 раз

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

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

А с этим теперь что делать? Так можно оставить?

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

'post_expire_time'	=> -1,
			'topic_expire_type'	=> 0,
			'expire_forum_id'	=> 0,
			'forum_ranon_flags' => 0,
			'topic_featured'	=> 0,
			'post_id'       	=> 0,		
			'topic_title'		=> $my_subject,
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13177
Стаж: 15 лет 2 месяца
Благодарил (а): 236 раз
Поблагодарили: 3754 раза

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

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

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

'post_expire_time'	=> -1,
			'topic_expire_type'	=> 0,
			'expire_forum_id'	=> 0,
			'forum_ranon_flags' => 0,
			'topic_featured'	=> 0,
Эти строки (от модов) добавить, дважды
После

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

'enable_indexing'	=> $data['enable_indexing'],
и

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

'notify_set'			=> (isset($data['notify_set'])) ? $data['notify_set'] : false,
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11372
Стаж: 16 лет 9 месяцев
Благодарил (а): 1832 раза
Поблагодарили: 1358 раз

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

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

В итоге после некоторых советов и переделок от Татьяна5 при установленных модах:
1. СЕО ЧПУ для названий phpBB SEO Ultimate SEO URL v0.7.0
2. ТАЙМОДЕРАЦИЯ ПО РАСПИСАНИЮ Post Expire v1.0.3
3. РЕКОМЕНДУЕМЫЕ ТЕМЫ Featured Topic Mod v0.2.0


Данный код в итоге выглядит так:

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

// idiotnesia wuz here -------------------------------------------------------
	$newURL = '1';
    if ($mode == 'reply' && $data['topic_replies_real'] >= 249)
    {
        $db->sql_query('UPDATE ' . TOPICS_TABLE . ' SET topic_status = ' . ITEM_LOCKED . ' WHERE topic_id = ' . (int) $data['topic_id'] . ' AND topic_moved_id = 0');
		
		$data['message'] = generate_text_for_edit($data['message'], $data['bbcode_uid'], true);
		$data['message'] = htmlspecialchars(html_entity_decode($data['message']['text']));
		
		// variables to hold the parameters for submit_post
		$poll = $uid = $bitfield = $options = '';
		$allow_bbcode = $data['enable_bbcode'];
		$allow_urls = $data['enable_urls'];
		$allow_smilies = $data['enable_smilies'];
		
		
		//Create next topic
		
		$next_topic_text   = '[url=' . generate_board_url() . '/topic' . $data['topic_id'] . '.html]' . $user->lang['PREVIOUS_TOPIC'] . '[/url]<br />' . $data['message'];
		
		//If old post has attachments
		$sql = 'SELECT attach_id, mimetype FROM ' . ATTACHMENTS_TABLE . ' WHERE post_msg_id = ' . (int) $data['post_id'];
		$result = $db->sql_query($sql);
		while ($attach_row = $db->sql_fetchrow($result))
		{
			if(strpos($attach_row['mimetype'], 'image/') !== false)
			{
				$next_topic_text .= '<br />[hsimg]' . generate_board_url() . '/download/file.php?id=' . (int) $attach_row['attach_id'] . '[/hsimg]';
			}
			else
			{
				$next_topic_text .= '<br />[url=' . generate_board_url() . '/download/file.php?id=' . (int) $attach_row['attach_id'] . ']' . $user->lang['DOWNLOAD_FILE'] . '[/url]';
			}
		}
		$db->sql_freeresult($result);
		$next_topic_text = preg_replace('/\[attachment=(.*?)\[\/attachment\]/', '', $next_topic_text);
		
		generate_text_for_storage($next_topic_text, $uid, $bitfield, $options, $allow_bbcode, $allow_urls, $allow_smilies);
		
		$next_topic_data = array( 
			'forum_id'		=> $data['forum_id'],
			'icon_id'		=> $data['icon_id'],
			'topic_title'	=> $subject,

			'enable_bbcode'		=> $data['enable_bbcode'],
			'enable_smilies'	=> $data['enable_smilies'],
			'enable_urls'		=> $data['enable_urls'],
			'enable_sig'		=> $data['enable_sig'],

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

			'post_edit_locked'	=> $data['post_edit_locked'],
			'notify_set'		=> $data['notify_set'],
			'notify'			=> $data['notify'],
			'post_time' 		=> $current_time,
			'forum_name'		=> $data['forum_name'],
			'enable_indexing'	=> $data['enable_indexing'],
			'post_expire_time'	=> -1,
			'topic_expire_type'	=> 0,
			'expire_forum_id'	=> 0,
			'forum_ranon_flags' => 0,
			'topic_featured'	=> 0,
			'post_id'       	=> 0,
		);
		
		$newURL = submit_post('post', $subject, '', POST_NORMAL, $poll, $next_topic_data);
		
		//Edit old topic
		$this_topic_text = $data['message'] . '<br />[url=' . generate_board_url() . '/topic' . $next_topic_data['topic_id'] . '.html]' . $user->lang['NEXT_TOPIC'] . '[/url]';
		generate_text_for_storage($this_topic_text, $uid, $bitfield, $options, true, true, true);
		
		$this_topic_data = array(
			'forum_id'				=> (int)  $data['forum_id'],
			'poster_id'				=> (int) $data['poster_id'],
			'icon_id'				=> (int) $data['icon_id'],
			'post_approved'			=> (isset($data['post_approved'])) ? $data['post_approved'] : false,
			'enable_bbcode'			=> (bool) $data['enable_bbcode'],
			'enable_smilies'		=> (bool) $data['enable_smilies'],
			'enable_urls'			=> (bool) $data['enable_urls'],
			'enable_sig'			=> (bool) $data['enable_sig'],
			'topic_title'			=> $subject,
			'message_md5'			=> (string)md5($this_topic_text),
			'attachment_data'		=> $data['attachment_data'],
			'bbcode_bitfield'		=> $bitfield,
			'bbcode_uid'			=> $uid,
			'post_edit_locked'		=> (int) $data['post_edit_locked'],
			'message'				=> $this_topic_text,
			
			'topic_approved'		=> (isset($data['topic_approved'])) ? $data['topic_approved'] : false,
			'topic_first_post_id'	=> (isset($data['topic_first_post_id'])) ? (int) $data['topic_first_post_id'] : 0,
			'topic_last_post_id'	=> (isset($data['topic_last_post_id'])) ? (int) $data['topic_last_post_id'] : 0,
			'topic_time_limit'		=> (int) $data['topic_time_limit'],
			'post_id'				=> (int)  $data['post_id'],
			'topic_id'				=> (int)  $data['topic_id'],
			'topic_replies_real'	=> $data['topic_replies_real'],
			
			'enable_indexing'		=> (bool) $data['enable_indexing'],
			'post_time'				=> (isset($data['post_time'])) ? (int) $data['post_time'] : $current_time,
			'post_edit_reason'		=> $data['post_edit_reason'],
			'post_edit_user'		=> 0,
			'forum_name'			=> $data['forum_name'],
			'notify'				=> (isset($data['notify'])) ? $data['notify'] : false,
			'notify_set'			=> (isset($data['notify_set'])) ? $data['notify_set'] : false,
			'post_expire_time'   	=> -1,
			'topic_expire_type'  	=> 0,
			'expire_forum_id'   	=> 0,
			'forum_ranon_flags'     => 0,
			'topic_featured'	    => 0,
		);
		
		submit_post('edit', $subject, '', POST_NORMAL, $poll, $this_topic_data);
    }
// idiotnesia wuz here ------------------------------------------------------	
Не забывайте что количество постов, после набора которого, необходимо закрыть тему и начать новую, назначается вот в этой строке -
if ($mode == 'reply' && $data['topic_replies_real'] >= 249)

Все проверенно... все работает идеально...

Вопрос - в этой строке тема закрывается (если я правильно ЭТО определил, факт что 1% php я уже знаю и надо напиться за ненапрасные уроки от Татьяны5)...

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

$db->sql_query('UPDATE ' . TOPICS_TABLE . ' SET topic_status = ' . ITEM_LOCKED . ' WHERE topic_id = ' . (int) $data['topic_id'] . ' AND topic_moved_id = 0');
А что б не закрывалась? Что тока создавалась новая?
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13177
Стаж: 15 лет 2 месяца
Благодарил (а): 236 раз
Поблагодарили: 3754 раза

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

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

Пчелкин писал(а):А что б не закрывалась?
Закомментировать строку

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

//$db->sql_query('UPDATE ' . TOPICS_TABLE . ' SET topic_status = ' . ITEM_LOCKED . ' WHERE topic_id = ' . (int) $data['topic_id'] . ' AND topic_moved_id = 0');
(только если кто-то ответит в старой - создастся ещё одна тема)
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11372
Стаж: 16 лет 9 месяцев
Благодарил (а): 1832 раза
Поблагодарили: 1358 раз

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

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

Татьяна5 писал(а):Закомментировать строку
Так и думал, но что-то струхнул попробовать.... :oops:
Татьяна5 писал(а):(только если кто-то ответит в старой - создастся ещё одна тема)
Да... Видел уже. Но закрытые темы как бЭ отталкивают народ... Замечено уже давно... Закрыта- и резко падает ее просмотр...
Выход - к фразе СЛЕДУЮЩАЯ ТЕМА побавить разжевку...
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70

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