[DEV] Reputation System / Система репутации

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

Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение ;) ).
Аватара пользователя
ShineOfDark
phpBB 1.4.1
Сообщения: 45
Стаж: 14 лет 6 месяцев
Благодарил (а): 5 раз

Re: [DEV] Reputation System / Система репутации

Сообщение ShineOfDark »

Переделаю вопрос: можно ли сделать чтобы если пользователь №1 изменил пользователю №2 репутацию, он не сможет повторно изменить репутацию пока не пройдет 24 часа, а не пока кто-то другой изменит репутацию? :roll:
update
нашел аналог мода, с нужными настройками, сейчас тестирую :)
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11361
Стаж: 16 лет 8 месяцев
Благодарил (а): 1832 раза
Поблагодарили: 1358 раз

Re: [DEV] Reputation System / Система репутации

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

ShineOfDark писал(а):пока не пройдет 24 часа,
А в настройках мода вы были?
Все там есть...Ограничение временем:
Количество часов, которое должно пройти между двумя влияниями на репутацию пользователей.
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Аватара пользователя
ShineOfDark
phpBB 1.4.1
Сообщения: 45
Стаж: 14 лет 6 месяцев
Благодарил (а): 5 раз

Re: [DEV] Reputation System / Система репутации

Сообщение ShineOfDark »

у меня в настройках есть только сколько нада минимум постов и сколько раз можно одному повысить :(
Аватара пользователя
Oleg NT
Former team member
Сообщения: 450
Стаж: 20 лет 8 месяцев
Откуда: Нижний Тагил
Поблагодарили: 11 раз

Re: [DEV] Reputation System / Система репутации

Сообщение Oleg NT »

Ух, сколько понаписали...
Я рад, что интерес к моду еще не пропал.

Не было меня здесь около двух лет, да, знаю, я сволочь, но так сложились звезды.
Изначально меня тут не было, т.к. было не до форумов. Потом у меня не было форумов, с которыми я бы работал.
Теперь у меня форум есть, и скоро мне придется ставить туда репутацию... Так что будем с вами воскрешать трупика.
Аватара пользователя
Mr. Anderson
phpBB Guru
phpBB Guru
Сообщения: 7522
Стаж: 22 года 6 месяцев
Откуда: СССР
Благодарил (а): 6 раз
Поблагодарили: 154 раза

Re: [DEV] Reputation System / Система репутации

Сообщение Mr. Anderson »

Oleg NT
Welcome back :) We missed you (c) ;)
Аватара пользователя
boloto
phpBB 1.4.4
Сообщения: 126
Стаж: 16 лет 11 месяцев
Благодарил (а): 57 раз
Поблагодарили: 10 раз

Re: [DEV] Reputation System / Система репутации

Сообщение boloto »

Oleg NT ура! Вернулся!
Я к своим наработкам по Вашему моду добавил еще "просмотр истории изменений репутации пользователем"
repa1.jpg
repa2.jpg
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось boloto 30.03.2012 13:43, всего редактировалось 1 раз.
Аватара пользователя
bafometh
phpBB 1.4.2
Сообщения: 54
Стаж: 17 лет 10 месяцев
Откуда: Украина, Киев
Благодарил (а): 6 раз
Поблагодарили: 1 раз

Re: [DEV] Reputation System / Система репутации

Сообщение bafometh »

поставил себе, вроде работает нормально.
boloto, давай код странички "просмотр истории изменений репутации пользователем"

Добавлено спустя 1 час 23 минуты 59 секунд:
что-то иконки Изменение репутации не показывает ...
Аватара пользователя
Oleg NT
Former team member
Сообщения: 450
Стаж: 20 лет 8 месяцев
Откуда: Нижний Тагил
Поблагодарили: 11 раз

Re: [DEV] Reputation System / Система репутации

Сообщение Oleg NT »

Обновите наборы изображений в админке на вкладке СТИЛИ
Аватара пользователя
bafometh
phpBB 1.4.2
Сообщения: 54
Стаж: 17 лет 10 месяцев
Откуда: Украина, Киев
Благодарил (а): 6 раз
Поблагодарили: 1 раз

Re: [DEV] Reputation System / Система репутации

Сообщение bafometh »

да, я нашел как раз что об этом уже спрашивали в этой теме и все получилось! Спасибо!
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11361
Стаж: 16 лет 8 месяцев
Благодарил (а): 1832 раза
Поблагодарили: 1358 раз

Re: [DEV] Reputation System / Система репутации

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

Oleg NT писал(а):Добавить поддержку BBCode и смайлов в комментариях к репутации;
Зачем? Что б страница о инфе вылезла в портянку? На инфу почти не смотрят...И какая разница с каким смайлом там причина поднятия или уменьшения...думаю - лишнее...ИМХО...а вот ссылки на сами сообщения , из которых сделано изменение с подсветкой можно было бы...
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
Аватара пользователя
bafometh
phpBB 1.4.2
Сообщения: 54
Стаж: 17 лет 10 месяцев
Откуда: Украина, Киев
Благодарил (а): 6 раз
Поблагодарили: 1 раз

Re: [DEV] Reputation System / Система репутации

Сообщение bafometh »

единственное что я доделал, это в списке всех пользователей (на странице memberlist.php) добавил колонку "Репутация" для полноты картины ))
Мод отличный! Сначала все вертели носом, а теперь клацают и радуются как дети )))
Аватара пользователя
boloto
phpBB 1.4.4
Сообщения: 126
Стаж: 16 лет 11 месяцев
Благодарил (а): 57 раз
Поблагодарили: 10 раз

Re: [DEV] Reputation System / Система репутации

Сообщение boloto »

Для адд-она "просмотр истории изменений репутации пользователем"
repa1.jpg
repa2.jpg
поехали
*** УЧТИТЕ У МЕНЯ ДОБАВЛЕН АДДОН КЕША К РЕПУТАЦИИ
файл reputation.php

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

if (!in_array($mode, array('view', 'change', 'reviews')))
заменить на

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

if (!in_array($mode, array('view', 'change', 'reviews', 'author')))
у вас может не быть reviews, тогда добавляем 'author' после 'change'


перед

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

else
{
	if (!$user->data['is_registered'])
добавить

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

elseif ($mode == 'author')
{
   $us_id = request_var('u', $user->data['user_id']);

   $start = request_var('start', 0);
   if ($start < 0)
   {
      $start = 0;
   }

   $page_title = $user->lang['REPUTATION_FROM_USER'];
   

	$cache_filename = '_rep_usercolor_userid_' . $us_id;
			if (($row = $cache->get($cache_filename)) === false)
			{
				$sql = "SELECT u.username, u.user_colour
					 FROM " . USERS_TABLE . " u
					 WHERE u.user_id = $us_id";
				$result = $db->sql_query($sql);
	
				$row = $db->sql_fetchrow($result);
				$db->sql_freeresult($result);
				
				$cache->put($cache_filename, $row);
			}
      $username1 = get_username_string('full', $us_id, $row['username'], $row['user_colour']);




	$cache_filename = '_rep_all_postid_perpage_start_' . $us_id . '_' . $config['topics_per_page'] . '_' . $start;
	

	
	if (($reprows = $cache->get($cache_filename)) === false)
	{
		$sql = "SELECT r.*
			FROM " . REPUTATION_TABLE . " r
			WHERE reputation_from= $us_id
			ORDER BY r.reputation_time DESC";
		$result = $db->sql_query_limit($sql, $config['topics_per_page'], $start);
		
		$reprows = array();
		while ($row = $db->sql_fetchrow($result))
		{
			$reprows[] = $row;
		}
		$db->sql_freeresult($result);
		
		$cache->put($cache_filename, $reprows);
	}

   $users_cache = array();
   $topic_rev = '<a href="' . append_sid("{$phpbb_root_path}viewtopic.$phpEx", "p=$us_id") . '#p' . $us_id . '">' . $us_id . '</a>';

   $i = 0;


   foreach ($reprows as $reprows_key => $reprows_value)
   {
      $r_userto = $reprows_value['reputation_to'];
      $r_comment = nl2br(trim($reprows_value['reputation_comment']));
		  $r_post = $reprows_value['reputation_post'];      
      $r_time = $user->format_date($reprows_value['reputation_time']);
      $r_type = $reprows_value['reputation_type'];
      $r_image_type = ($r_type) ? $user->img('icon_reputation_up', '+') : $user->img('icon_reputation_down', '&minus;');

			$cache_filename = '_rep_usercolor_userid_' . $r_userto;
			if (($row = $cache->get($cache_filename)) === false)
			{
				$sql = "SELECT u.username, u.user_colour
					 FROM " . USERS_TABLE . " u
					 WHERE u.user_id = $r_userto";
				$result = $db->sql_query($sql);
				$row = $db->sql_fetchrow($result);
				$db->sql_freeresult($result);
				
				$cache->put($cache_filename, $row);
			}
     $r_username2 = get_username_string('full', $r_userto, $row['username'], $row['user_colour']);      

				
     

		if (!isset($topics_cache[$r_post]))
		{
			$cache_filename = '_rep_topictitle_post_' . $r_post;
			if (($topics_cache[$r_post] = $cache->get($cache_filename)) === false)
			{
				$sql = "SELECT t.topic_title
					FROM " . TOPICS_TABLE . " t, " . POSTS_TABLE . " p
					WHERE p.post_id = $r_post
						AND t.topic_id = p.topic_id";
				$result = $db->sql_query($sql);
	
				$row = $db->sql_fetchrow($result);
				$topics_cache[$r_post] = (empty($row['topic_title'])) ? false : $row['topic_title'];
				$db->sql_freeresult($result);

				$cache->put($cache_filename, $topics_cache[$r_post]);
			}
		}

		if ($topics_cache[$r_post])
		{
			$r_topic = '<a href="' . append_sid("{$phpbb_root_path}viewtopic.$phpEx", "p=$r_post") . '#p' . $r_post . '">' . $topics_cache[$r_post] . '</a>';
		}
		else
		{
			$r_topic = false;
		}
     

      $template->assign_block_vars('reputationrow', array(
         'ROWID'      => $i + ($start + 1),
         'USERNAME2'  => $r_username2,         
				 'TOPIC'			=> $r_topic,         
         'COMMENT'   => $r_comment,
         'TYPE'      => $r_image_type,
         'TIME'      => $r_time)
      );

      $i++;
   }

		// unnecessary UNIONs, 
		// but should work together with Reviews addon to decrease count of sql requests and cache items
		$cache_filename = '_rep_cnt_post_' . $us_id;
		if (($rep_count = $cache->get($cache_filename)) === false)
		{
			$sql = 'SELECT COUNT(*) as rep_cnt 
			FROM ' . REPUTATION_TABLE . '
			WHERE reputation_from =' . $us_id . '
			UNION ALL
			SELECT COUNT(*) as rep_cnt 
			FROM ' . REPUTATION_TABLE . '
			WHERE reputation_from =' . $us_id . ' AND reputation_type = 1
			UNION ALL
			SELECT COUNT(*) as rep_cnt 
			FROM ' . REPUTATION_TABLE . '
			WHERE reputation_from =' . $us_id . ' AND reputation_type = 0';
		
			$result = $db->sql_query($sql);
    
			$rep_count = array();
			while ($rep_row = $db->sql_fetchrow($result))
			{
				$rep_count[] = $rep_row['rep_cnt'];
			}
			$db->sql_freeresult($result);

			$cache->put($cache_filename, $rep_count);
		}

		$reputation_total_items = $rep_count[0];

   $pagination = generate_pagination(append_sid("{$phpbb_root_path}reputation.$phpEx", "mode=author&u=$us_id"), $reputation_total_items, $config['topics_per_page'], $start);
   $on_page = on_page($reputation_total_items, $config['topics_per_page'], $start);

   $template->assign_vars(array(
      'PAGINATION'         => $pagination,
      'TOTAL_COMMENTS'      => ($reputation_total_items == 1) ? $user->lang['REPUTATION_TOTAL_ONE_COMMENT'] : sprintf($user->lang['REPUTATION_TOTAL_COMMENTS'], $reputation_total_items),
      'PAGE_NUMBER'         => $on_page,
      'TOPIC'               => $topic_rev,
      'US1'               => $username1 
   ));


   page_header($page_title);

   $template->set_filenames(array(
      'body' => 'reputation_author_body.html')
   );


   page_footer();
}

в файл memberlist.php
строку, которая начинается с

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

$reputation = '<a href="' . append_sid("{$phpbb_root_path}
заменить на

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

		$reputation = '<a href="' . append_sid("{$phpbb_root_path}reputation.$phpEx", 'u=' . $user_id) . '" title="' . $user->lang['REPUTATION_VIEW_HISTORY'] . '"><strong>' . (($member['user_reputation_total'] < 0) ? '&minus;' . abs($member['user_reputation_total']) : $member['user_reputation_total']) . '</strong></a> [&nbsp;&minus;' . $member['user_reputation_minuses'] . '/+' . $member['user_reputation_pluses'] . '&nbsp;]&nbsp' . '<a href="' . append_sid("{$phpbb_root_path}reputation.$phpEx", 'mode=author&u=' . $user_id) . '" title="' . $user->lang['REPUTATION_VIEW2_HISTORY'] . '"><strong>' . '?' . '</strong></a>';
в файле language/ru/mods/reputation.php
после строки

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

'REPUTATION_NO_COMMENTS'
добавить строку

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

	'REPUTATION_NO_COMMENTS2'			=> 'Этот пользователь никому пока не изменял репутацию',
добавить на форум в /styles/subsilver2/template/ файл
reputation_author_body.html
reputation_author_body.html.zip
Добавлено спустя 7 минут 56 секунд:
да, в просилвере поленился делать. Но там все просто и понятно.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Последний раз редактировалось boloto 12.11.2012 15:55, всего редактировалось 3 раза.
Аватара пользователя
bafometh
phpBB 1.4.2
Сообщения: 54
Стаж: 17 лет 10 месяцев
Откуда: Украина, Киев
Благодарил (а): 6 раз
Поблагодарили: 1 раз

Re: [DEV] Reputation System / Система репутации

Сообщение bafometh »

не совсем понял для чего эти "Отзывы" нужны, если есть и так возможность посмотреть за что и с какими коментариями пользователю ставили + или - ...

У меня другой вопрос, а как бы сделать так, что бы не показывать в списке репутации пользователя те, которые ему дали в закрытых темах?
Аватара пользователя
boloto
phpBB 1.4.4
Сообщения: 126
Стаж: 16 лет 11 месяцев
Благодарил (а): 57 раз
Поблагодарили: 10 раз

Re: [DEV] Reputation System / Система репутации

Сообщение boloto »

bafometh писал(а):не совсем понял для чего эти "Отзывы" нужны, если есть и так возможность посмотреть за что и с какими коментариями пользователю ставили + или - ...
это отзывы не пользователю, а ОТ пользователя.
Аватара пользователя
Пчелкин
phpBB 3.3.0
Сообщения: 11361
Стаж: 16 лет 8 месяцев
Благодарил (а): 1832 раза
Поблагодарили: 1358 раз

Re: [DEV] Reputation System / Система репутации

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

bafometh писал(а):что бы не показывать в списке
Обложите файл показа условиями по группам или допускам к форумам...
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70

Вернуться в «Бета-версии модов для phpBB 3.0.x»