Thanks for post (Rating edition)

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

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

Thanks for post (Rating edition)

Сообщение Палыч »

Наименование модификации: Thanks for post
Описание::
Открыть 
Мод добавляет возможность поблагодарить автора сообщения (отменить благодарность).
  • Опции реализованы включением добавленного права доступа к форумам. При установке право добавлено в роли Стандартный доступ, Ограниченный доступ, Стандартный доступ с опросами, Ограниченный доступ с опросами и Полный доступ. (Если вы хотите установить другие настройки: перейдите в Администраторский раздел - Права доступа - Локальные права - Права доступа к форумам и выберите форумы, где вы хотите иметь функцию благодарностей за сообщения. Разрешите право "Может благодарить за сообщения" на вкладке Разное).
  • Переключатели выбора опций получения уведомлений о благодарностях (в ЛС и по email) в Личном разделе - Личные настройки.
  • Настройки опций, в том числе обновление счётчиков после массового удаления сообщений/тем/пользователей, слияния учетных записей, смены автора сообщения, разделения/слияния тем и т.п. - в Администраторском разделе - Модули - Благодарности - Обновление счётчиков.
  • Для просмотра списка благодарностей нужно разрешить глобальное пользовательское право - "Может просматривать лист благодарностей" на вкладке Разное. При установке право добавлено в роли Стандартные возможности, Ограниченные возможности, Все возможности, Без личных сообщений, Без аватары и членам группы Зарегистрированные пользователи.
  • Для просмотра топлиста нужно разрешить глобальное пользовательское право - "Может просматривать топлист" на вкладке Разное. При установке право добавлено в роли Стандартные возможности, Ограниченные возможности, Все возможности, Без личных сообщений, Без аватары и членам группы Зарегистрированные пользователи.
  • Для возможности очистки списков благодарностей нужно разрешить глобальное модераторское право - "Может очищать список благодарностей" на вкладке Разное. При установке право добавлено в роль Супермодератор и членам группы Супермодераторы.
  • В папке contrib вы можете найти файлы reput_star_.psd и thanks.psd для разработки собственных изображений под используемый вами стиль.
  • Система рейтинга для сообщений, тем и форумов, основанная на системе СПАСИБО.
    Каждый объект (сообщение, тема или форум), набравший максимальное число СПАСИБО, принимается за 100% рейтинга (лидер). Остальные - как % от рейтинга лидера.
    Например: Сообщение получило 10 СПАСИБО (100% or 10/10), другое сообщение 4 СПАСИБО (40% or 4 / 10), третье сообщение 1 СПАСИБО (10% or 1 / 10). Если первое сообщение получит ещё одно СПАСИБО (10 +1 = 11), рейтинг второго сообщения будет 36.36% или 4 / 11, у третьего сообщения - 9,09% или 1 / 11 и т.д.
    Позиция рейтинга определяется числом СПАСИБО.
    Рейтинг тем - суммой количества СПАСИБО у сообщений в теме.
    Рейтинг форума - суммой количества СПАСИБО у сообщений в форуме.
    Включение\выключение рейтинга для сообщений, тем и форумов - через административный раздел.
    Возможно только цифровое или цифровое + графическое отображение рейтинга.
    Есть топлист рейтинга. Число отображаемых позиций в топлисте устанавливается в административном разделе.
  • Важно! Для корректной работы системы рейтинга в базе данных не должно быть записей о благодарностях по отношению к удалённым, перемещённым сообщениям, или сообщениям от гостей (если ранее они были зарегистрированными пользователями). Вам необходимо использовать средство обновления счетчиков благодарностей после массового удаления постов, тем, пользователей или иных действий модераторов или администраторов (например, замена автора сообщения или объединение аккаунтов). Для корректной работы функции обновления счётчиков требуется MySQL версии 4.1 или выше.
Версия:: 1.3.5

Скриншоты: Можно посмотреть здесь

Скачать: http://www.phpbbguru.net/files/mods/spa ... -rejtinga/
Темы мода на оффсайте:
http://www.phpbb.com/community/viewtopic.php?t=1690905
http://www.phpbb.com/community/viewtopi ... &t=2093007

Fix для правильного склонения слов: раза/раз 
Примечания для более ранних версий МОДа: 
Внимание для версии 1.3.2! В связи с обнаружением некорректной работы функции пересчета счетчиков МОДа в административном разделе следует использовать файл includes/acp/acp_thanks_refresh.php от версии 1.3.1
acp_thanks_refresh 1.3.1.rar
Для устранения предупреждения (версия 1.3.2): 

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

[phpBB Debug] PHP Warning: in file /includes/db/dbal.php on line 223: Illegal offset type in isset or empty

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

== OPEN ==
includes/functions_thanks.php
== FIND (line 570) ==
    $allow_thanks_pm = (int) $db->sql_fetchfield($result);
== REPLACE ==
    $allow_thanks_pm = (int) $db->sql_fetchfield('user_allow_thanks_pm');
== FIND (line 613) ==
        $allow_thanks_email = (int) $db->sql_fetchfield($result);
== REPLACE ==
        $allow_thanks_email = (int) $db->sql_fetchfield('user_allow_thanks_email'); 
Для устранения ошибки при удалении сообщения из темы (версия 1.3.2): 

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

Call to undefined function delete_post_thanks()

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

== OPEN ==
posting.php
== FIND ==
if (!function_exists('get_max_forum_thanks'))
    {
        include($phpbb_root_path . 'includes/functions_thanks_forum.' . $phpEx);
    }
== REPLACE ==
if (!function_exists('get_thanks'))
    {
        include($phpbb_root_path . 'includes/functions_thanks.' . $phpEx);
    }  
FIX для исправления проблем с личными сообщениями в версии 1.3.1 
файл includes/functions_thanks.php

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

== НАЙТИ ==
	if (!isset($user_cache[$to_id]['allow_thanks_pm']))
== ЗАМЕНИТЬ ==
	if (!($user_cache[$to_id]['allow_thanks_pm']))
FIX для исправления проблем с отображением рейтинга при ограничении доступа к подфорумам в версии 1.2.9 

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

== open == 
includes/functions_display.php
== find ==
    get_max_forum_thanks();
== after-add ==
    $forum_thanks_rating = array();  
FIX для исправления проблем с большим количеством запросов на индексе в версии 1.2.8 
Фикс для версии 1.2.5 - устранение неправильного отображения числа благодарностей при удалении пользователя 
Замените три файла из архива (если необходимо, воспользуйтесь кнопкой Обновить в админке на вкладке Благодарности для пересчёта числа благодарностей)
fix_bug_thanks.zip
Если вы не видите кнопки "Спасибо"
Скрытый текст
  1. Убедитесь, что вы скопировали файлы-изображения в папку используемого вами стиля
  2. Убедитесь, что вы отредактировали файлы используемого вами стиля
  3. Обновите набор изображений вашего стиля (на вкладке Стили в админке)
  4. Обновите тему вашего стиля (на вкладке Стили в админке)
  5. Обновите кеш
  6. Установите опции мода (вкладка Модули - Спасибо за сообщение)
  7. Убедитесь, что правильно выставлены права доступа
    1. Установите права доступа к форуму в котором вы хотите иметь опцию благодарностей

      При установке право добавлено в роль Стандартный доступ. (Если вы хотите установить другие настройки: перейдите в Администраторский раздел - Права доступа - Локальные права - Права доступа к форумам и выберите форумы, где вы хотите иметь функцию благодарностей за сообщения. Разрешите право "Может благодарить за сообщения" на вкладке Разное).
    2. Установите права доступа к просмотру листа благодарностей

      Для просмотра списка благодарностей нужно разрешить глобальное пользовательское право - "Может просматривать лист благодарностей" на вкладке Разное. При установке право добавлено в роль Стандартные возможности и членам группы Зарегистрированные пользователи.

      Если вы хотите иметь другие настройки (у вас другая роль у зарегистрированных пользователей):
      Админка -> Права доступа -> Прав групп -> Выбор группы:Зарегистрированные пользователи -> Расширенные права -> Разное -> Может просматривать список благодарностей (Может видеть топлист) -> Применить все права
      Пошаговая инструкция в картинках (на английском)
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось Татьяна5 11.07.2014 8:16, всего редактировалось 12 раз.
Причина: Вынесла ссылки из-под спойлера
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
romeo_piter
phpBB 2.0.22
Сообщения: 1375
Стаж: 17 лет 5 месяцев
Благодарил (а): 260 раз
Поблагодарили: 32 раза

Re: Thanks for post (Rating edition)

Сообщение romeo_piter »

Два вопроса по моду:
1. Возможно ли сделать так, чтобы рейтинг тем работал только в одном конкретном разделе? Если да - как?
2. Возможно ли отсортировать по умолчанию темы конкретного раздела по убыванию рейтинга? Как?
Аватара пользователя
andromeda68
phpBB 1.4.3
Сообщения: 97
Стаж: 13 лет 11 месяцев
Откуда: Ижевск
Благодарил (а): 22 раза
Поблагодарили: 1 раз

Re: Thanks for post (Rating edition)

Сообщение andromeda68 »

Sheer писал(а):
andromeda68 писал(а):что можно подправить мне?
Проверь свой css на наличие "левых" символов.
Проверил все поправил. При новой установке ошибок не стало!

В стиле prosilver всё нормально есть Благодарности. В админке порядок.
В моём стиле который делал на основе стиля prosilver нет ничего, где копать?
Файлы из мода в свой стиль все загрузил в те же папки как в prosilver.
Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 20 лет 4 месяца
Откуда: Питер
Благодарил (а): 3 раза
Поблагодарили: 454 раза

Re: Thanks for post (Rating edition)

Сообщение Палыч »

romeo_piter писал(а):1. Возможно ли сделать так, чтобы рейтинг тем работал только в одном конкретном разделе? Если да - как?
Штатно - нет
romeo_piter писал(а):2. Возможно ли отсортировать по умолчанию темы конкретного раздела по убыванию рейтинга? Как?
Штатно - нет
andromeda68 писал(а): где копать?
Обновить тему и набор изображений вашего стиля (на вкладке Стили в админке)
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
Аватара пользователя
владимир1983
phpBB 3.2.6
Сообщения: 5954
Стаж: 16 лет 4 месяца
Откуда: Сергиев Посад
Благодарил (а): 373 раза
Поблагодарили: 727 раз

Re: Thanks for post (Rating edition)

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

andromeda68 писал(а):В стиле prosilver всё нормально
andromeda68 писал(а):на основе стиля prosilver нет ничего, где копать?
Открой инструкцию по установке модификации к стилю prosilver и проверь, а потом ещё раз перепроверь внесённые автомодом правки для используемого тобой стиля. Ошибка там!
p.s Как только ты поймёшь что кроме тебя ошибку установки на твой стиль никто не исправит, только после этого проблема решится.
За ваши деньги решу ваши проблемы. Стучи в ЛС.
Нет человека - нет проблемы. (c)
Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 20 лет 4 месяца
Откуда: Питер
Благодарил (а): 3 раза
Поблагодарили: 454 раза

Re: Thanks for post (Rating edition)

Сообщение Палыч »

andromeda68 писал(а):Проверил все поправил. При новой установке ошибок не стало!
То есть ставили заново автомодом?
andromeda68 писал(а):В моём стиле который делал на основе стиля prosilver нет ничего, где копать?
В собственной голове. Автомод не вносит изменения в другие стили, кроме prosilver, если нет дополнительной инструкции. Дополнительная инструкция в папке /contrib есть только для subsilver2
читать http://www.phpbbguru.net/kb/modding/how-to-install-mod/
Стили.
Инструкции пишутся на стандартные стили (prosilver для phpBB3). Как правило, в папке /contrib имеется дополнительная инструкция для стиля subsilver2. Поэтому, если вы используете другие стили, то следует отредактировать и соответствующие файлы данных стилей, ориентируясь по инструкциям и здравому смыслу. Это не очень сложно, так как большинство стилей основано или на prosilver, или на subsilver2.
Не забыть обновить кеш, тему и набор изображений по окончанию редактирования.
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
romeo_piter
phpBB 2.0.22
Сообщения: 1375
Стаж: 17 лет 5 месяцев
Благодарил (а): 260 раз
Поблагодарили: 32 раза

Re: Thanks for post (Rating edition)

Сообщение romeo_piter »

Палыч, а если просто добавить сортировку в разделах по рейтингу? Не расскажите как?
Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 20 лет 4 месяца
Откуда: Питер
Благодарил (а): 3 раза
Поблагодарили: 454 раза

Re: Thanks for post (Rating edition)

Сообщение Палыч »

romeo_piter писал(а):Не расскажите как?
Нет
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
romeo_piter
phpBB 2.0.22
Сообщения: 1375
Стаж: 17 лет 5 месяцев
Благодарил (а): 260 раз
Поблагодарили: 32 раза

Re: Thanks for post (Rating edition)

Сообщение romeo_piter »

Нашел почти готовый функционал в топлисте в рейтинге тем. Это почти то что нужно, кроме того, что учитываются все разделы.
Возможно, подсказать, где в toplist.php можно сделать вывод тем только для конкретного раздела будет уже не так затруднительно?

Добавлено спустя 3 минуты 54 секунды:
Я так понимаю, где-то тут надо указать, что берем только ID раздела с определенным номером?

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

case 'topic':
		$sql = 'SELECT COUNT(DISTINCT topic_id) as total_topic_count
			FROM ' . THANKS_TABLE;
		$result = $db->sql_query($sql);
		$total_match_count = (int) $db->sql_fetchfield('total_topic_count');
		$db->sql_freeresult($result);
		$full_topic_rating = true;
		$notoplist = false;
		break;
Аватара пользователя
Sheer
Former team member
Сообщения: 12113
Стаж: 19 лет 7 месяцев
Откуда: Калининград не Кенигсберг
Благодарил (а): 54 раза
Поблагодарили: 2756 раз

Re: Thanks for post (Rating edition)

Сообщение Sheer »

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

$sql = 'SELECT COUNT(DISTINCT topic_id) as total_topic_count FROM ' . THANKS_TABLE .'  WHERE forum_id = '. $forum_id .';
Изображение
Общие ошибки новичков (07.11.2005) & Как задавать вопросы
Мини FAQ
Если ничто другое не помогает, прочтите, наконец, инструкцию!
"Никакая инструкция не может перечислить всех обязанностей должностного лица, предусмотреть все отдельные случаи и дать вперёд соответствующие указания, а поэтому господа инженеры должны проявить инициативу и, руководствуясь знаниями своей специальности и пользой дела, принять все усилия для оправдания своего назначения".
Циркуляр Морского технического комитета №15 от 29.11.1910 г.
romeo_piter
phpBB 2.0.22
Сообщения: 1375
Стаж: 17 лет 5 месяцев
Благодарил (а): 260 раз
Поблагодарили: 32 раза

Re: Thanks for post (Rating edition)

Сообщение romeo_piter »

Это я уже сделал. Это не то. Как я понял это подсчет общего количества тем, участвующих в рейтинге. Т.е. количество тем режется корректно, но выводятся они всё равно из всех разделов. Т.е. формирование самого списка тем идет где-то дальше, но этот код я не понимаю.

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

//topic rating
	if (!$full_forum_rating && !$full_post_rating && $config['thanks_topic_reput_view'])
	{
		$end = ($full_topic_rating) ?  $config['topics_per_page'] : $end_row_rating;
	
		$sql_t_array['FROM']	= array(THANKS_TABLE => 'f');		
		$sql_t_array['SELECT'] = 'u.user_id, u.username, u.user_colour, t.topic_title, t.topic_id, t.topic_time, t.topic_poster, t.topic_first_poster_name, t.topic_first_poster_colour, t.forum_id';
		$sql_t_array['SELECT'].= ', f.topic_id, COUNT(*) AS topic_thanks';			
		$sql_t_array['LEFT_JOIN'][] = array(
			'FROM'	=> array (TOPICS_TABLE => 't'),
			'ON'	=> 'f.topic_id = t.topic_id',
			);
		$sql_t_array['LEFT_JOIN'][] = array(
			'FROM'	=> array(USERS_TABLE => 'u'),
			'ON'	=> 't.topic_poster = u.user_id'
		);
		$sql_t_array['GROUP_BY'] = 'f.topic_id';	
		$sql_t_array['ORDER_BY'] = 'topic_thanks DESC';		
			
		$sql = $db->sql_build_query('SELECT',$sql_t_array);
		$result = $db->sql_query_limit($sql, $end, $start);
		$u_search_topic = append_sid("{$phpbb_root_path}toplist.$phpEx", "mode=topic");			
		if (!$row = $db->sql_fetchrow($result))
		{
			trigger_error('RATING_VIEW_TOPLIST_NO');
		}		
		else
		{
			$notoplist = false;
			do
			{
				$view_topic_url_params = 'f=' . (($row['forum_id']) ? $row['forum_id'] : '') . '&t=' . $row['topic_id'];
				$view_topic_url = append_sid("{$phpbb_root_path}viewtopic.$phpEx", $view_topic_url_params);
				$template->assign_block_vars('toptopicrow', array(
					'TOPIC_FOLDER_IMG_SRC'		=> $user->img('topic_read', 'NO_NEW_POSTS', false, '', 'src'),
					'TOPIC_TITLE'				=> ($auth->acl_get('f_read', $row['forum_id'])) ? $row ['topic_title'] : ((!empty($row['forum_id'])) ? $user->lang['SORRY_AUTH_READ'] : $row ['topic_title']),
					'U_VIEW_TOPIC'				=> $view_topic_url,
					'TOPIC_AUTHOR'				=> get_username_string('full', $row['topic_poster'], $row['topic_first_poster_name'], $row['topic_first_poster_colour']),
					'TOPIC_REPUT'				=> round($row['topic_thanks'] / ($max_topic_thanks / 100), $config['thanks_number_digits']),
					'S_THANKS_TOPIC_REPUT_VIEW' => $config['thanks_topic_reput_view'],
					'S_THANKS_REPUT_GRAPHIC' 	=> $config['thanks_reput_graphic'],
					'THANKS_REPUT_HEIGHT'		=> sprintf('%dpx', $config['thanks_reput_height']),
					'THANKS_REPUT_GRAPHIC_WIDTH'=> sprintf('%dpx', $config['thanks_reput_level']*$config['thanks_reput_height']),
					'THANKS_REPUT_IMAGE' 		=> ($config['thanks_reput_image']) ? $phpbb_root_path . $config['thanks_reput_image'] : '',
					'THANKS_REPUT_IMAGE_BACK'	=> ($config['thanks_reput_image_back']) ? $phpbb_root_path . $config['thanks_reput_image_back'] : '',
				));
			}
			while ($row = $db->sql_fetchrow($result));
			$db->sql_freeresult($result);			
		}
	}
Ещё пробовал в шаблоне выводить только темы нужного раздела, но тоже что-то не то.
Менял код

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

	<!-- BEGIN toptopicrow -->
				<tr class="<!-- IF toptopicrow.S_ROW_COUNT is even -->bg1<!-- ELSE -->bg2<!-- ENDIF -->">
					<td style="background-image: url({toptopicrow.TOPIC_FOLDER_IMG_SRC}); background-repeat: no-repeat; background-position: 2px center; padding-left: 35px;"><a href="{toptopicrow.U_VIEW_TOPIC}" class="forumtitle">{toptopicrow.TOPIC_TITLE}</a></td>
					<td>{toptopicrow.TOPIC_AUTHOR}</td>
					<td><span style="display: block;">{L_REPUT}:{toptopicrow.TOPIC_REPUT}%
						<!-- IF toptopicrow.S_THANKS_REPUT_GRAPHIC -->
						<span style="display: block; width: {toptopicrow.THANKS_REPUT_GRAPHIC_WIDTH}; height: {toptopicrow.THANKS_REPUT_HEIGHT}; background: URL({toptopicrow.THANKS_REPUT_IMAGE_BACK});"><span style="display: block; height: {toptopicrow.THANKS_REPUT_HEIGHT}; width: {toptopicrow.TOPIC_REPUT}%; background: URL({toptopicrow.THANKS_REPUT_IMAGE});">&nbsp;</span></span>
						<!-- ENDIF -->
					</span></td>
				</tr>
		<!-- END toptopicrow -->
На код:

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

		<!-- BEGIN toptopicrow -->
			<!-- IF toptopicrow.FORUM_ID = 6 -->	<tr class="<!-- IF toptopicrow.S_ROW_COUNT is even -->bg1<!-- ELSE -->bg2<!-- ENDIF -->">
					<td style="background-image: url({toptopicrow.TOPIC_FOLDER_IMG_SRC}); background-repeat: no-repeat; background-position: 2px center; padding-left: 35px;"><a href="{toptopicrow.U_VIEW_TOPIC}" class="forumtitle">{toptopicrow.TOPIC_TITLE}</a></td>
					<td>{toptopicrow.TOPIC_AUTHOR}</td>
					<td><span style="display: block;">{L_REPUT}:{toptopicrow.TOPIC_REPUT}%
						<!-- IF toptopicrow.S_THANKS_REPUT_GRAPHIC -->
						<span style="display: block; width: {toptopicrow.THANKS_REPUT_GRAPHIC_WIDTH}; height: {toptopicrow.THANKS_REPUT_HEIGHT}; background: URL({toptopicrow.THANKS_REPUT_IMAGE_BACK});"><span style="display: block; height: {toptopicrow.THANKS_REPUT_HEIGHT}; width: {toptopicrow.TOPIC_REPUT}%; background: URL({toptopicrow.THANKS_REPUT_IMAGE});">&nbsp;</span></span>
						<!-- ENDIF -->
					</span></td>
				</tr><!-- ENDIF  -->
		<!-- END toptopicrow -->
Добавлено спустя 23 минуты 57 секунд:
Разобрался.

Добавлено спустя 3 минуты 50 секунд:
Вводим новую переменную:
'U_FORUMID' => $row['forum_id'],
и прописываем её в блоке формирования данных для вывода тем //topic rating

В шаблоне используем условие:
<!-- IF toptopicrow.U_FORUMID == номер раздела --> внутри блока вывода <!-- BEGIN toptopicrow -->

И делаем правку указанную Sheer, иначе количество страниц будет больше чем реальное.

Решение кривое -я это понимаю.
Если кто-то подскажет прямое решение - буду очень признателен.
Аватара пользователя
Татьяна5
Поддержка
Поддержка
Сообщения: 13159
Стаж: 15 лет 1 месяц
Благодарил (а): 236 раз
Поблагодарили: 3750 раз

Re: Thanks for post (Rating edition)

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

romeo_piter,
а если как-то так?
(напишу по-русски, т.к. в php нуль)

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

//topic rating
	if (!$full_forum_rating && !$full_post_rating && $config['thanks_topic_reput_view'] и если id_форума=XXX )
Аватара пользователя
tiger_sofia
phpBB 1.2.0
Сообщения: 14
Стаж: 15 лет 5 месяцев
Благодарил (а): 3 раза
Поблагодарили: 1 раз

Re: Thanks for post (Rating edition)

Сообщение tiger_sofia »

Палыч писал(а):Пчелкин
При попытке синхронизировать таблицу спасибок (forum_thanks) с существующими постами скрипт находит в таблице постов (forum_posts) пост, который относится к теме - глобальному объявлению, то есть в записи этого поста forum_id=0
Задача: выбрать все посты из таблицы forum_posts, у которых forum_id=0 и удалить их записи (по post_id = forum_thanks.post_id) из таблицы forum_thanks
Извините, я сделал все вышеописаное и опять та же фигня

SQL ERROR [ mysqli ]

Column 'forum_id' cannot be null [1048]

SQL

UPDATE phpbb_thanks SET forum_id = (SELECT forum_id FROM phpbb_posts WHERE post_id = phpbb_thanks.post_id), topic_id = (SELECT topic_id FROM phpbb_posts WHERE post_id = phpbb_thanks.post_id), poster_id = (SELECT poster_id FROM phpbb_posts WHERE post_id = phpbb_thanks.post_id)

BACKTRACE

FILE: (not given by php)
LINE: (not given by php)
CALL: msg_handler()

FILE: [ROOT]/includes/db/dbal.php
LINE: 757
CALL: trigger_error()

FILE: [ROOT]/includes/db/mysqli.php
LINE: 182
CALL: dbal->sql_error()

FILE: [ROOT]/includes/acp/acp_thanks_refresh.php
LINE: 326
CALL: dbal_mysqli->sql_query()

FILE: [ROOT]/includes/functions_module.php
LINE: 507
CALL: acp_thanks_refresh->main()

FILE: [ROOT]/adm/index.php
LINE: 74
CALL: p_master->load_active()


Подскажите, пожалуйста, что дальше делать?
Аватара пользователя
Палыч
Former team member
Сообщения: 9683
Стаж: 20 лет 4 месяца
Откуда: Питер
Благодарил (а): 3 раза
Поблагодарили: 454 раза

Re: Thanks for post (Rating edition)

Сообщение Палыч »

tiger_sofia
Наверное не все удалили.
Попробуйте обновить до версии 1.3.4
В ней разрешены благодарности в важных темах (глобальных). И функция обновления переписана.

Добавлено спустя 10 минут 51 секунду:
romeo_piter писал(а):1. Возможно ли сделать так, чтобы рейтинг тем работал только в одном конкретном разделе?
В разделе? Или в форуме?
Говоря принятым языком: в категории или в форуме? И есть ли подфорумы в форуме?

Добавлено спустя 24 минуты 48 секунд:
Если просто форум, то:

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

== OPEN ==
includes/functions_thanks.php
== FIND ==
// topic thanks number
function get_thanks_topic_number()
{
	global $db, $topic_thanks, $topic_list, $config;
	if (isset($config['thanks_topic_reput_view']) ? $config['thanks_topic_reput_view'] : false)
== REPLACE ==
// topic thanks number
function get_thanks_topic_number()
{
	global $db, $topic_thanks, $topic_list, $config, $forum_id;
	if ((isset($config['thanks_topic_reput_view']) ? $config['thanks_topic_reput_view'] : false) && $forum_id == НОМЕР_ID_НУЖНОГО_ФОРУМА)
Добавлено спустя 2 минуты 43 секунды:
romeo_piter
Это не для toplist.php, естественно.
Там, для того, чтобы выводить темы по рейтингу нужно:

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

== OPEN ==
toplist.php
== FIND ==
$ex_fid_ary = (sizeof($ex_fid_ary)) ? $ex_fid_ary : true;
== AFTER ADD ==
$ex_fid_ary = НОМЕР_ID_НУЖНОГО_ФОРУМА;
== FIND ==
		$sql_t_array['WHERE'] = $db->sql_in_set('f.forum_id', $ex_fid_ary, true);
== REPLACE ==
		$sql_t_array['WHERE'] = $db->sql_in_set('f.forum_id', $ex_fid_ary, false);
Сделать вывод по рейтингу при просмотре форума весьма гемморойно. Рейтинг не записывается в базу, а вычисляется при выводе списка тем.
Не все то WINDOWS, что висит... phpBB только учусь.
ICQ, email, ЛС - только для личных сообщений. Вопросы по phpbb только на форумах. По найму не работаю.
SamsungS
phpBB 1.0.0
Сообщения: 3
Стаж: 13 лет 10 месяцев
Благодарил (а): 6 раз

Re: Thanks for post (Rating edition)

Сообщение SamsungS »

Уважаемый Палыч !
Я использовал поиск по теме ...
У меня навыков просто мало чтобы анализировать всё и сложить пробовал инструкцию из subsilver2 не помогло

Вы профи вам это сделать не составит труда максимум 10 мин. , а я уже день мучаюсь ...

Надеюсь на вашу помощь

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

Re: Thanks for post (Rating edition)

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

SamsungS писал(а):У меня навыков просто мало
Тогда плохо, стиль Absolution это каша из таблиц и дивов.

Добавлено спустя 9 минут 21 секунду:
SamsungS писал(а):пробовал инструкцию из subsilver2
Надо для prosilver, так как стиль всё таки на основе prosilver.
За ваши деньги решу ваши проблемы. Стучи в ЛС.
Нет человека - нет проблемы. (c)

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