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

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

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11361
Стаж: 16 лет 8 месяцев
Благодарил (а): 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
Поддержка
Поддержка
Сообщения: 13159
Стаж: 15 лет 1 месяц
Благодарил (а): 236 раз
Поблагодарили: 3750 раз

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
Сообщения: 11361
Стаж: 16 лет 8 месяцев
Благодарил (а): 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
Сообщения: 11361
Стаж: 16 лет 8 месяцев
Благодарил (а): 1832 раза
Поблагодарили: 1358 раз

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

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

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

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
Сообщения: 11361
Стаж: 16 лет 8 месяцев
Благодарил (а): 1832 раза
Поблагодарили: 1358 раз

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

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

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

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

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

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

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

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

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

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

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
Сообщения: 11361
Стаж: 16 лет 8 месяцев
Благодарил (а): 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
Поддержка
Поддержка
Сообщения: 13159
Стаж: 15 лет 1 месяц
Благодарил (а): 236 раз
Поблагодарили: 3750 раз

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
Сообщения: 11361
Стаж: 16 лет 8 месяцев
Благодарил (а): 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
Поддержка
Поддержка
Сообщения: 13159
Стаж: 15 лет 1 месяц
Благодарил (а): 236 раз
Поблагодарили: 3750 раз

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
Сообщения: 11361
Стаж: 16 лет 8 месяцев
Благодарил (а): 1832 раза
Поблагодарили: 1358 раз

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

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

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

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