Trotor Posted October 13, 2013 Share Posted October 13, 2013 - - - Поставлен мод который даёт возможность к репутации добавлять комментарии. Всё хорошо но есть один баг - если в коммент добавить знак вопроса, то после него обрезается весь текст (если текст идёт русскими символами).Вот текст хука - 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); } - - - Как сделать реализацию что бы список репутации начинался с новых.Вот скрин:То есть что бы самая новая оценка была сверху а не снизу. - - - Стоит приложение История Репутации. Но на странице её почему то страниц листалок намного больше чем самих оценок. Как убрать пустые страницы?Вот скрин: - - - Также в этом приложении попадают и оценки репутации с блогов, но они почему то ведут на id сообщения, который идентичен id записи блога. - - - Буду рад помощи по исправлению хотя бы одного бага. Заранее спасибо. Link to comment Share on other sites More sharing options...
Bot Posted October 13, 2013 Share Posted October 13, 2013 Обратите внимание По указанному вами в профиле "Board url" находится не IP.Board, либо модифицированный пиратский скрипт с удаленными копирайтами. Если вы указали неверный URL, пожауйста, поправьте его, потому что он скорее всего потребуется при диагностике вашей проблемы. Нелицензионные скрипты не приветствуются, т.к. зачастую именно некорректное "нуление" и является причиной проблем в них. Link to comment Share on other sites More sharing options...
siv1987 Posted October 14, 2013 Share Posted October 14, 2013 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 Link to comment Share on other sites More sharing options...
Trotor Posted October 14, 2013 Author Share Posted October 14, 2013 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Как указать что существуют и репутация в блогах? Link to comment Share on other sites More sharing options...
siv1987 Posted October 14, 2013 Share Posted October 14, 2013 Поставил. Проблема знака вопроса так и осталасьТогда нужно дебажить. Причина по моему ясна - он считает общее кол-во оценок репутации, в том числе и с удалённых сообщений. Но как указать ему что бы он не считал репу та которая была в удалённых сообщениях?По сути никак. Костыли с джоином таблицы постов не подойдет, так как в таком случае не будет репутации из других приложений. Если она все равно не нужна, то вместо $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' 1 Link to comment Share on other sites More sharing options...
Trotor Posted October 15, 2013 Author Share Posted October 15, 2013 Тогда нужно дебажить.Подскажите как это сделать. По сути никак. Костыли с джоином таблицы постов не подойдет, так как в таком случае не будет репутации из других приложений. Если она все равно не нужна, то вместоУра - помогли! И репутация с приложений туда не попадает. Но хотелось бы что бы там ещё и репутация с приложений (блоги и туториалы) попадала. Она у юзера отображается и засчитывается, но как её на список вывести? Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now