Перейти к контенту

XT Reputation System


Рекомендуемые сообщения

vmmaster да кстати вот именно с этой инструкцией у меня возникло недопанимание, лучше как нибудь по другому оформить, пусть даже тафтология поочередно зато по порядочку...

 

Пойду разбираться с этим файлом

 

vmmaster ты как в воду глядел :D

 

так и есть накосячил именно там, в первой строке вообще , m.reputation не поставил, во второй запятую забыл.

 

Предлагаю заменить пункт 4.3 на более понятный ;)

 

4.3) ./sources/sql/mysql_queries.php

Находим функцию topics_get_posts

Код

me.msnname,me.aim_name,me.icq_number,me.signature, me.website,me.yahoo,me.location, me.avatar_location, me.avatar_type, me.avatar_size, m.members_display_name

 

ДОБАВЛЯЕМ ПОСЛЕ:

Код

, m.reputation

 

Находим функцию topics_get_posts_with_join

Код

me.msnname,me.aim_name,me.icq_number,me.signature, me.website,me.yahoo,me.location, me.avatar_location, me.avatar_type, me.avatar_size, m.members_display_name,

 

ДОБАВЛЯЕМ ПОСЛЕ:

Код

m.reputation,

 

А то я чесно сказать растерялся как это так

НАХОДИМ 2 РАЗА (topics_get_posts, topics_get_posts_with_join):
да еще потом запятую не теряем где она есть! :)

 

 

ВСЕМ СПАСИБО! На 2.3.3 этот мод работает!

Ссылка на комментарий
Поделиться на других сайтах

Установил мод, и что-то не работает похоже...

В темах никаких признаков существования мода.

Версия форума: 2.3.3

Ссылка на комментарий
Поделиться на других сайтах

ozersk я же поставил на 2.3.3, постарайся заного все попорядочку перепроверить. Может пропустил где то, может не закачал измененный файл :D
Ссылка на комментарий
Поделиться на других сайтах

Поставил мод на 2.3.2, в профиле все появилось, в админке тоже, при входе в любую тему получаю ошибку:

 

IPS Driver Error

There appears to be an error with the database.

You can try to refresh the page by clicking here

 

Т.к. я новенький в этом деле, вот мои догадки...

 

1) Выполнить SQL-запросы:

SQL

ALTER TABLE `ibf_members` ADD `reputation` INT NOT NULL ;

ALTER TABLE `ibf_members` ADD `rep_allow` TINYINT( 1 ) DEFAULT '1' NOT NULL ;

ALTER TABLE `ibf_members` ADD `rep_notify` TINYINT( 1 ) DEFAULT '0' NOT NULL ;

CREATE TABLE `ibf_reputation` (

`id` int(11) NOT NULL auto_increment,

`from_user` int(11) NOT NULL default '0',

`to_user` int(11) NOT NULL default '0',

`forum` int(11) NOT NULL default '0',

`topic` int(11) NOT NULL default '0',

`post` int(11) NOT NULL default '0',

`created` int(11) NOT NULL default '0',

`message` text NOT NULL,

`rating` int(11) NOT NULL default '0',

`anonym` TINYINT(1) NOT NULL DEFAULT '0',

PRIMARY KEY (`id`)

) ;

 

Так было написано в rep_install.txt, я зашел в свой phpmyadmin, выбрал базу форума, нажал вверху SQL и вставил то, что в цитате выше (сделал запрос, в общем).Сначала выдалась ошибка, что мешало первое слово SQL. Я его убрал, опять сделал запрос, ошибки не было, вот ответ:

 

ALTER TABLE `ibf_members` ADD `reputation` INT NOT NULL ;# Затронутые ряды: 7

 

ALTER TABLE `ibf_members` ADD `rep_allow` TINYINT( 1 ) DEFAULT '1' NOT NULL ;# Затронутые ряды: 7

 

ALTER TABLE `ibf_members` ADD `rep_notify` TINYINT( 1 ) DEFAULT '0' NOT NULL ;# Затронутые ряды: 7

 

CREATE TABLE `ibf_reputation` (

`id` int(11) NOT NULL auto_increment,

`from_user` int(11) NOT NULL default '0',

`to_user` int(11) NOT NULL default '0',

`forum` int(11) NOT NULL default '0',

`topic` int(11) NOT NULL default '0',

`post` int(11) NOT NULL default '0',

`created` int(11) NOT NULL default '0',

`message` text NOT NULL,

`rating` int(11) NOT NULL default '0',

`anonym` TINYINT(1) NOT NULL DEFAULT '0',

PRIMARY KEY (`id`)

) ;# MySQL вернула пустой результат (т.е. ноль рядов).

 

Все ли тут правильно? Если да, переходим дальше. Если нет, подскажите, пожалуйста, что исправить...

 

Если я перезаписываю изменный файл mysql_queries.php исходником, то в тему нормально заходит, текст и кнопка репутации есть, но не активные - т.е. не нажимаются.

Вот так выглядит измененная часть файла mysql_queries.php:

 

function topics_get_posts( $a )

{

# topics.php

 

return "SELECT p.*, pp.*,

m.id,m.name,m.mgroup,m.email,m.joined,m.posts, m.last_visit, m.last_activity,m.login_anonymous,m.title,m.hide_email, m.warn_level, m.warn_lastwarn,

me.msnname,me.aim_name,me.icq_number,me.signature, me.website,me.yahoo,me.location, me.avatar_location, me.avatar_type, me.avatar_size, m.members_display_name, m.reputation

FROM ".SQL_PREFIX."posts p

LEFT JOIN ".SQL_PREFIX."members m ON (m.id=p.author_id)

LEFT JOIN ".SQL_PREFIX."profile_portal pp ON (m.id=pp.pp_member_id)

LEFT JOIN ".SQL_PREFIX."member_extra me ON (me.id=m.id)

WHERE p.pid IN(".implode(',', $a['pids']).")

ORDER BY {$a['scol']} {$a['sord']}";

}

 

function topics_get_posts_with_join( $a )

{

# topics.php

 

return "SELECT p.*, pp.*,

m.id,m.name,m.mgroup,m.email,m.joined,m.posts, m.last_visit, m.last_activity,m.login_anonymous,m.title,m.hide_email, m.warn_level, m.warn_lastwarn,

me.msnname,me.aim_name,me.icq_number,me.signature, me.website,me.yahoo,me.location, me.avatar_location, me.avatar_type, me.avatar_size, m.members_display_name,, m.reputation

pc.*

FROM ".SQL_PREFIX."posts p

LEFT JOIN ".SQL_PREFIX."members m ON (m.id=p.author_id)

LEFT JOIN ".SQL_PREFIX."member_extra me ON (me.id=m.id)

LEFT JOIN ".SQL_PREFIX."pfields_content pc ON (pc.member_id=p.author_id)

LEFT JOIN ".SQL_PREFIX."profile_portal pp ON (m.id=pp.pp_member_id)

WHERE p.pid IN(".implode(',', $a['pids']).")

ORDER BY {$a['scol']} {$a['sord']}";

}

 

Т.к. в файле написано

(Не потеряйте запятую после 'm.members_display_name', где она есть!!)
, я пробовал и две запятые в function topics_get_posts_with_join, и одну. Все равно не хочет.

 

Ну, и на всякий случай измененные данные topics.php, вдруг тоже нужно будет.

 

//-----------------------------------------

// Add it to the cached list

//-----------------------------------------

 

$this->cached_members[ $row['author_id'] ] = $poster;

}

$poster['reputation_minus'] = str_replace("{PID}", $row['pid'], $poster['reputation_minus']);

$poster['reputation_add'] = str_replace("{PID}", $row['pid'], $poster['reputation_add']);

}

else

{

 

Помогите, пожалуйста!!

Ссылка на комментарий
Поделиться на других сайтах

return "SELECT p.*, pp.*,

m.id,m.name,m.mgroup,m.email,m.joined,m.posts, m.last_visit, m.last_activity,m.login_anonymous,m.title,m.hide_email, m.warn_level, m.warn_lastwarn,

me.msnname,me.aim_name,me.icq_number,me.signature, me.website,me.yahoo,me.location, me.avatar_location, me.avatar_type, me.avatar_size, m.members_display_name,, m.reputation

Откуда 2 запятые? надо запятую после!

return "SELECT p.*, pp.*,
m.id,m.name,m.mgroup,m.email,m.joined,m.posts, m.last_visit, m.last_activity,m.login_anonymous,m.title,m.hide_email, m.warn_level, m.warn_lastwarn,
me.msnname,me.aim_name,me.icq_number,me.signature, me.website,me.yahoo,me.location, me.avatar_location, me.avatar_type, me.avatar_size, m.members_display_name, m.reputation,
pc.*
FROM ".SQL_PREFIX."posts p

Это скорее всего исправит ошибку IPS Driver Error.

Изменено пользователем vmmaster
Ссылка на комментарий
Поделиться на других сайтах

Спасибо. Эта ошибка исчезла, темы нормально открываются, однако кнопки + и - (повышение и понижение репутации) неактивны, не нажимаются (
Ссылка на комментарий
Поделиться на других сайтах

А у вас достаточно постов для изменения репутации? (настраивается в админке)

Вы не себе пытаетесь изменить репутацию?

Ребилд кэшей делали?

Изменено пользователем vmmaster
Ссылка на комментарий
Поделиться на других сайтах

Ребилды делал

количество сообщений поставил в 0

не себе

просто кнопка + и - не имеет под собой ссылки

 

Ура! Нашел ошибку!!

Я забыл сохранить изменения в ./sources/classes/class_session.php

Он у меня в лримвьювере висел открытый с внесенным, но не сохраненным

Ссылка на комментарий
Поделиться на других сайтах

Народ, как сделать защищенные группы, т.е чтобы к примеру админам нельзя было повышать и опускать репутацию, сделайте плиз, там ведь одно условие поставить :D

 

Sannis спасибо за парсинг, давно ждал этого!

Ссылка на комментарий
Поделиться на других сайтах

А у вас достаточно постов для изменения репутации? (настраивается в админке)

Вы не себе пытаетесь изменить репутацию?

Ребилд кэшей делали?

Я со всем разобрался тоже. Спасибо за помощь!

 

Маленький вопросик, как поменять Предупреждения и Репутацию местами (под авой)?

Ссылка на комментарий
Поделиться на других сайтах

Народ, как сделать защищенные группы, т.е чтобы к примеру админам нельзя было повышать и опускать репутацию, сделайте плиз, там ведь одно условие поставить :D

В reputation.php есть строчка(2 раза встречается):

				$member = $this->get_member_by_id($this->mid);

После неё нужно добавить:

				// Cannot change admin reputation!
			if( in_array($member['mgroup'], $this->admin_groups) AND !in_array($this->ipsclass->member['mgroup'], $this->admin_groups) )
				$this->error_window(14);

Текст ошибки для кода 14 добавляется аналогично с кодом для ошибки парсинга.

 

Кроме того в начале файла после

		var $ipsclass;

нужно добавить

		var $admin_groups = array(4, 11); // Это список групп защищённых.

 

Маленький вопросик, как поменять Предупреждения и Репутацию местами (под авой)?

Залезть в шаблон Renderrow и поменять местами.

 

Sannis спасибо за парсинг, давно ждал этого!

Напишите в ПМ, у меня есть непыльное предложение, как сказать мне "Спасибо".

Ссылка на комментарий
Поделиться на других сайтах

А у вас достаточно постов для изменения репутации? (настраивается в админке)

Вы не себе пытаетесь изменить репутацию?

Ребилд кэшей делали?

Я со всем разобрался тоже. Спасибо за помощь!

 

Маленький вопросик, как поменять Предупреждения и Репутацию местами (под авой)?

 

изменить шаблон -> sin_topic->RenderRow

{$author['warn_text']} {$author['warn_minus']}{$author['warn_img']}{$author['warn_add']} - это предупреждения

 

<if="$author['reputation_allow'] == "true"">

<br/> <br/>{$author['reputation_text']}{$author['reputation_minus']} <b>{$author['reputation_scores']}</b> {$author['reputation_add']} а это репутация, поменяйте их местами.

 

Народ, как сделать защищенные группы, т.е чтобы к примеру админам нельзя было повышать и опускать репутацию, сделайте плиз, там ведь одно условие поставить :D

В reputation.php есть строчка(2 раза встречается):

				$member = $this->get_member_by_id($this->mid);

После неё нужно добавить:

				// Cannot change admin reputation!
			if( in_array($member['mgroup'], $this->admin_groups) AND !in_array($this->ipsclass->member['mgroup'], $this->admin_groups) )
				$this->error_window(14);

Текст ошибки для кода 14 добавляется аналогично с кодом для ошибки парсинга.

 

Кроме того в начале файла после

		var $ipsclass;

нужно добавить

		var $admin_groups = array(4, 11); // Это список групп защищённых.

 

В reputation.php есть строчка(2 раза встречается):

4 раза встречается ;)

последние две //Get member info после них ставить? или только после первых двух?

сообщение об ошибке не выводится, хотя все правильно сделал...

 

а не подскажете, какое условие нужно, чтобы она вообще не отображалась, как я понимаю, это условие нужно запихнуть в RenderRow, правильно?

Ссылка на комментарий
Поделиться на других сайтах

Когда ставил на локалхосте, то все гуд

Теперь на хостинге установил и когда смотришь историю репутации, то вместо букв одни знаки ??????

 

Как это побороть?

Ссылка на комментарий
Поделиться на других сайтах

В таблицу репутации кодировку у колонок измените на cp1251_general_ci(скорее всего) в phpMyAdmin :D
Ссылка на комментарий
Поделиться на других сайтах

Вместо

<if="$author['reputation_allow'] == "true"">

написать:

<if="$author['reputation_allow'] AND $author['mgroup'] != 4">

4 - номер защищённой группы.

Ссылка на комментарий
Поделиться на других сайтах

По многочисленным просьбам выкладываю полностью адаптированную для 2.3.1 инструкцию по установке мода.

На новом форуме можно залить эти файлы по ftp, выполнить запросы к БД, импортировать настройки из xml, залить файлы рисунков из основного архива и сделать правку скинов по инструкции. Все!

Да, и не забываем делать бэкап файлов перед правкой... а то мало ли... ;)

А файл reputation.php нужно брать от предыдущей версии без изменений?

 

P.S. Низачот, в txt файле можно было javascript и слитно написать...

 

P.P.S. Но инструкция 100% рабочая!

 

Для того чтобы парсились ББ-коды в сообщении и в ПМ:

В reputation.php, в функии change_reputation найти:

				$this->message = strip_tags($this->message);

Заменить на:

				require_once( ROOT_PATH."sources/handlers/han_parse_bbcode.php" );
			$parser					  = new parse_bbcode();
			$parser->ipsclass			= $this->ipsclass;

			$parser->bypass_badwords = intval($this->ipsclass->member['g_bypass_badwords']);
			$parser->parse_smilies	 = 1;
			$parser->parse_nl2br   	 = 1;
			$parser->parse_html		 = 0;
			$parser->parse_bbcode	= 1;

			$message = $parser->pre_db_parse( $this->message );
			$message = $parser->pre_display_parse( $message );
			$message = $parser->bad_words( $message );

Найти:

				if($this->message == '')
					$this->error_window(4);

Заменить на:

				if($message == '')
					$this->error_window(4);

			if( $parser->error != "" )
					$this->error_window(13);

Найти:

'message'   => $this->message,

Заменить на:

'message'   => $message,

Найти:

						$this->lib->msg_post	= sprintf($this->ipsclass->lang['rep_notify_text'], $member['members_display_name'], $rep_from, $change, $this->message);

Добавить после:

						$this->lib->msg_post = $parser->pre_db_parse( $this->lib->msg_post );
					$this->lib->msg_post = $parser->pre_display_parse( $this->lib->msg_post );
					$this->lib->msg_post = $parser->bad_words( $this->lib->msg_post ); 

					if( $parser->error != "" )
						break;

Найти(в функции error_window):

$this->ipsclass->lang['error_12']

Добавить после(аккуратней с запятой и скобкой):

,$this->ipsclass->lang['error_13']

В файле ./cache/lang_cache/*/lang_reputation.php найти:

'error_12' => "Анонимные изменения репутации отключены",

Добавить после:

'error_13' => "Ошибка кодов во введённом сообщении",

 

Если не выводить точный текст ошибки парсинга, то вот так по минимуму без оптимизации выглядит :D

Чет зделак как описано,но теперь не работает репа вообще.

Нажимаю плюс,пишет неможет отобразить страницу.

Нажимаю просмотор репутации,тоже самое пишет не может отобразить страницу.

Переустановил еще раз,все тоже самое.

Пересматрел внимательно все,ошибиться вроде негде.

в чем косяк то ?

 

Версия 2.3.3

Ссылка на комментарий
Поделиться на других сайтах

Разобрался,мой касяк,поставил нормально и все работает.

Sannis

Спасибо

Ссылка на комментарий
Поделиться на других сайтах

Гость
Эта тема закрыта для публикации сообщений.
×
×
  • Создать...

Важная информация

Находясь на нашем сайте, вы соглашаетесь на использование файлов cookie, а также с нашим положением о конфиденциальности Политика конфиденциальности и пользовательским соглашением Условия использования.