Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Баги по репутации

Опубликовано:

- - -

 

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

Вот текст хука - http://imtw.ru/uploads/imperiall/imgs/total_war1381707276_ah30reputationcorefunctions.txt

Может в этом причина?

 

	public function unicode_escape($str)
{
	$escape_table = array(
 		'%20' => ' ',
 		'%21' => '!',
 		'%2C' => ',',
 		'%3A' => ':',
 		'%3B' => ';',
 		'%u0410' => 'А',
 		'%u0411' => 'Б',
 		'%u0412' => 'В',
 		'%u0413' => 'Г',
 		'%u0414' => 'Д',
 		'%u0415' => 'Е',
 		'%u0401' => 'Ё',
 		'%u0416' => 'Ж',
 		'%u0417' => 'З',
 		'%u0418' => 'И',
 		'%u0419' => 'Й',
 		'%u041A' => 'К',
 		'%u041B' => 'Л',
 		'%u041C' => 'М',
 		'%u041D' => 'Н',
 		'%u041E' => 'О',
 		'%u041F' => 'П',
 		'%u0420' => 'Р',
 		'%u0421' => 'С',
 		'%u0422' => 'Т',
 		'%u0423' => 'У',
 		'%u0424' => 'Ф',
 		'%u0425' => 'Х',
 		'%u0426' => 'Ц',
 		'%u0427' => 'Ч',
 		'%u0428' => 'Ш',
 		'%u0429' => 'Щ',
 		'%u042A' => 'Ъ',
 		'%u042B' => 'Ы',
 		'%u042C' => 'Ь',
 		'%u042D' => 'Э',
 		'%u042E' => 'Ю',
 		'%u042F' => 'Я',
 		'%u0430' => 'а',
 		'%u0431' => 'б',
 		'%u0432' => 'в',
 		'%u0433' => 'г',
 		'%u0434' => 'д',
 		'%u0435' => 'е',
 		'%u0451' => 'ё',
 		'%u0436' => 'ж',
 		'%u0437' => 'з',
 		'%u0438' => 'и',
 		'%u0439' => 'й',
 		'%u043A' => 'к',
 		'%u043B' => 'л',
 		'%u043C' => 'м',
 		'%u043D' => 'н',
 		'%u043E' => 'о',
 		'%u043F' => 'п',
 		'%u0440' => 'р',
 		'%u0441' => 'с',
 		'%u0442' => 'т',
 		'%u0443' => 'у',
 		'%u0444' => 'ф',
 		'%u0445' => 'х',
 		'%u0446' => 'ц',
 		'%u0447' => 'ч',
 		'%u0448' => 'ш',
 		'%u0449' => 'щ',
 		'%u044A' => 'ъ',
 		'%u044B' => 'ы',
 		'%u044C' => 'ь',
 		'%u044D' => 'э',
 		'%u044E' => 'ю',
 		'%u044F' => 'я',
	//ukrainian char 
	'%u0456' => 'і',
 		'%u0406' => 'І',
 		'%u0457' => 'ї',
 		'%u0407' => 'Ї',
 		'%u0454' => 'є',
 		'%u0404' => 'Є',
	);  
	return  strtr($str, $escape_table);

}

 

 

- - -

 

Как сделать реализацию что бы список репутации начинался с новых.

Вот скрин:

total_war1381707461_2013-10-07_154919.jpg

То есть что бы самая новая оценка была сверху а не снизу.

 

- - -

 

Стоит приложение История Репутации. Но на странице её почему то страниц листалок намного больше чем самих оценок. Как убрать пустые страницы?

Вот скрин:

total_war1381707623_2012-06-05_005948.jpg

 

- - -

 

Также в этом приложении попадают и оценки репутации с блогов, но они почему то ведут на id сообщения, который идентичен id записи блога.

 

- - -

 

Буду рад помощи по исправлению хотя бы одного бага. Заранее спасибо.

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

Опубликовано:
Обратите внимание

По указанному вами в профиле "Board url" находится не IP.Board, либо модифицированный пиратский скрипт с удаленными копирайтами. Если вы указали неверный URL, пожауйста, поправьте его, потому что он скорее всего потребуется при диагностике вашей проблемы. Нелицензионные скрипты не приветствуются, т.к. зачастую именно некорректное "нуление" и является причиной проблем в них.

Опубликовано:

1. Дело скорее всего в этом $message = IPSText::truncate( $message, 199 );

Хотя для "этого" есть более нормальный вариант декодирования

 

	public function unicode_escape($str)
{
	$str = preg_replace_callback( '/%u([0-9a-f]{4})/i',  array( $this, 'entity_decode' ), $str );
	return $str;
}

public function entity_decode( $m )
{
	$m = is_array($m) ? $m[1] : $m;
	return html_entity_decode( ''.hexdec( $m ).';', null, 'utf-8' );
}

 

2. Изменить сортировку в sql запросе. По умолчанию это admin\applications\core\modules_public\ajax\reputation.php, _viewRep(). Если у хука есть файл который его перегружает, то нужно править его.

'order' => 'rep_date DESC',

 

3. Какой-то счетчик не правильно работает, либо не правильно считается общее количество репутации. Отсюда и пустые листы

 

4. Автор не учел блоги, а все записи считает за репутацию сообщений. Это может быть причиной и бага в третьем пункте.

Опубликовано:
  • Автор

1. Дело скорее всего в этом $message = IPSText::truncate( $message, 199 );

Удалил. Не помогает. Значит не в ней.

 

Хотя для "этого" есть более нормальный вариант декодирования

Поставил. Проблема знака вопроса так и осталась :(

 

- - -

 

2. Изменить сортировку в sql запросе. По умолчанию это admin\applications\core\modules_public\ajax\reputation.php, _viewRep(). Если у хука есть файл который его перегружает, то нужно править его.

'order' => 'rep_date DESC',

Спасибо. Нужно было в файле хука ah30ReputationClassPopupOverload.php поменять 'rep_date', на 'rep_date DESC',

 

- - -

 

Кстати. А не подскажите как в файле хука ( http://imtw.ru/uploads/imperiall/imgs/total_war1381707276_ah30reputationcorefunctions.txt ) добавить условие что бы в комментариях срабатывал фильтр на нецензурные слова?

 

- - -

 

3. Какой-то счетчик не правильно работает, либо не правильно считается общее количество репутации. Отсюда и пустые листы

Причина по моему ясна - он считает общее кол-во оценок репутации, в том числе и с удалённых сообщений. Но как указать ему что бы он не считал репу та которая была в удалённых сообщениях?

 

- - -

 

4. Автор не учел блоги, а все записи считает за репутацию сообщений. Это может быть причиной и бага в третьем пункте.

Да. Вот в файле нет и намёка на блоги - http://imtw.ru/uploads/imperiall/imgs/total_war1381787346_reputationhistory.txt

Как указать что существуют и репутация в блогах?

Опубликовано:

Поставил. Проблема знака вопроса так и осталась

Тогда нужно дебажить.

 

Причина по моему ясна - он считает общее кол-во оценок репутации, в том числе и с удалённых сообщений. Но как указать ему что бы он не считал репу та которая была в удалённых сообщениях?

По сути никак. Костыли с джоином таблицы постов не подойдет, так как в таком случае не будет репутации из других приложений. Если она все равно не нужна, то вместо

 

       $this->DB->build( array(
                                       'select'    => 'COUNT(type_id) as max',
                                       'from'      => 'reputation_index',
                               )       );
       $this->DB->execute();

       $total_possible = $this->DB->fetch();

поставить такой sql запрос

 

	$total_possible = $this->DB->buildAndFetch(array(
		'select'   => 'COUNT(*) as max',
		'from'     => array('reputation_index' => 'ri'),
		'add_join' => array(
			array(
				'from'  => array( 'posts' => 'p' ),
				'where' => 'ri.app="forums" AND ri.type="pid" AND ri.type_id=p.pid',
				'type'  => 'inner',
			),
		),
	));

 

И ниже 'p.pid=ri.type_id' заменить на 'ri.app="forums" AND ri.type="pid" AND ri.type_id=p.pid'

Опубликовано:
  • Автор

Тогда нужно дебажить.

Подскажите как это сделать.

 

По сути никак. Костыли с джоином таблицы постов не подойдет, так как в таком случае не будет репутации из других приложений. Если она все равно не нужна, то вместо

Ура - помогли! И репутация с приложений туда не попадает.

 

Но хотелось бы что бы там ещё и репутация с приложений (блоги и туториалы) попадала. Она у юзера отображается и засчитывается, но как её на список вывести?

Создайте аккаунт или войдите в него для комментирования

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.