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

[2.3.x]eXTended Reputation ReBirth


Arhar

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

Вобще то в этом моде за 10 спасиб должно автоматом накручиватся 1 репа

Но увы, не работает

Подымал этот вопрос уже, но всем пофик.... :rolleyes:

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

Вот Allure сделала чтобы работало и даже дописала участок кода, который отвечает за пересчет уже проставленных спасиб в репутацию

Так что да, это возможно

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

Вот Allure сделала чтобы работало и даже дописала участок кода, который отвечает за пересчет уже проставленных спасиб в репутацию

Так что да, это возможно

 

Что конкретно нужно дописать/исправить? Прямую ссылку можешь дать?

Спасибо!

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

сообщение выше содержит все необходимые ссылки)))

 

Имеется ввиду интеграция с этим модом?

 

Модификация "Приватный текст" v3b.

Автор: WildRAID

Дата релиза: 13 августа 2008 года.

Совместимость: 2.3.х.

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

так и не нашел ответ на вопрос

 

сразу же в первом пункте при выполнении

 

index.php?act=repinstall

 

вылазит ошибка

 

Ошибка при работе с базой данных

Возникла проблема при работе с базой данных.

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

так и не нашел ответ на вопрос

 

сразу же в первом пункте при выполнении

 

index.php?act=repinstall

 

вылазит ошибка

 

Ошибка при работе с базой данных

Возникла проблема при работе с базой данных.

 

а вот что в логах

 

Код ошибки: 126

Сообщение сервера: Incorrect key file for table './.../ibf_skin_templates_cache.MYI'; try to repair it

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

так и не нашел ответ на вопрос

 

сразу же в первом пункте при выполнении

 

index.php?act=repinstall

 

вылазит ошибка

 

Ошибка при работе с базой данных

Возникла проблема при работе с базой данных.

 

а вот что в логах

 

Код ошибки: 126

Сообщение сервера: Incorrect key file for table './.../ibf_skin_templates_cache.MYI'; try to repair it

 

 

пересмотрел всю тему. оказывается я единственный с такой ошибкой и никто ниче не знает

Не, в интернете таких как вы нашлось больше 400000: http://lmgtfy.com/?q=%22Incorrect+key+file+for+table%22+%22try+to+repair+it%22

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

сообщение выше содержит все необходимые ссылки)))

 

Имеется ввиду интеграция с этим модом?

 

Модификация "Приватный текст" v3b.

Автор: WildRAID

Дата релиза: 13 августа 2008 года.

Совместимость: 2.3.х.

 

Ребята, так подскажите пожалуйста, можно совместить с этим модом, как начально предполагалось?

Или это миф?

Спасибо!

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

  • 4 недели спустя...
  • 1 месяц спустя...

Возникла проблемка с данным модом.

ставлю на 2.3.6, все вроде как работает.все проверил по два раза.Но репутацию могут редактировать только обычные пользователи!Самое смешное админы могут только отменять изменения репутации.Кнопочки добавить и минусонуть для них не доступны.Что я только не делал...И маску пользователей админам добавлял и подгруппу.Ещё после того как админа сделал пользователем он все равно не мог добавлять репутацию.Даже уже не знаю, что можно предпринять...

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

  • 4 месяца спустя...

Установил мод, работает...но...

 

Я поставил ограничение изменения репутации для каждого пользователя до 3 раз в сутки.

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

 

Необходимо подождать, прежде чем изменять репутацию одному и тому же пользователю!

 

Такая ерунда только когда стоит частота изменения репутации одному и тому же пользователю. Если поставить на 0, то все проходит и ошибки нет.

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

 

## Только что увидел, что данные для одного пользователя не пишутся в БД. А в рейтинге репутации для него просто пустая строка. Возможно это следствие ошибки выше. Странно, но на локалке с тем же юезром все в порядке....

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

не совсем правильно понимаете настройку

настраиваете сколько дней нужно ждать, чтобы менять репутацию одному и тому же пользователю

а не количество раз

 

хотя может я не понял вопрос

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

не совсем правильно понимаете настройку

настраиваете сколько дней нужно ждать, чтобы менять репутацию одному и тому же пользователю

а не количество раз

 

хотя может я не понял вопрос

Это скорее я не верно объяснил.

 

Я обнаружил у себя некую ошибку.

Когда ставишь кому то пункт репутации, обновляешь страничку, и он пропадает, словно его и не было.

Далее смотрим в рейтинге репутации....там вместо пользователя которому добавил репутацию - белая строка (т.е. нет данных кроме (+1/-0) )

 

Лезу в БД и смотрю таблицу ibf_reputation. Тот пункт репутации который я ставил пользователю, записан как будто я ставил не ему, а совершенно другому человеку....при том аккаунт которого не существует. В общем это как поставить репутацию человеку с ID=1, а он пойдет на ID=2, только вот с таким id юзера не существует.

 

## такая ошибка пропадает только если я удалю все куки для своего сайта....после этого добавление происходит корректно...

Появляется снова, если я исчерпал суточный лемит, и на следующей день пытаюсь поставить уже другим пользователям.

Сегодня проверял правку файлов, ошибок не нашел.

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

надо смотреть пошагово в конкретном случае в скрипте

такое происходит только на живом форуме, на локальном нет? (тогда придется предупредить пользователей живого, что будут проводится работы)

 

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

иначе файл reputation.php

функции там одинаковые

 

отслеживать xmlout.php сложнее, придется также отслеживать reputation.js

в reputation.js для начала надо посмотреть, что попадает в

var mid =  document.getElementById('mid').value;

если сюда уже попадает неправильное значение, идем в reputation.php и смотрим, как формируется change_reputation_window и попадает ли туда правильный mid

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

То что вы объяснили для меня будет сложновато.

 

На локальном вроде как ничего не наблюдал, хотя на самом деле даже голый форум ведет себя по разному, так что вряд ли в этом проблема.

 

На счет обновления страницы....ну вроде как обновления не происходит, даже когда репутация проставляется верно. Есть только - мини окошечко загрузки, после нажатия на кнопку добавить.

Просто у меня сомнения по поводу обновления :) не могу понять, работает верно или нет.

 

Файлы:

xmlout.php - всего 2 изменения, не знаю, возможно ли там вообще ошибиться.

reputation.php - может я не понял что, но разве его надо было редактировать? разве исходник может косячить?

 

 

Объясните пожалуйста процесс отслеживания ошибки. Никогда таким не занимался. И кстати, вас ни на что мысль не наталкивает, что после чистки куки, проблема сама пропадает?

 

	   case 'post-edit-show':
               $this->post_edit_show();
               break;
           case 'post-edit-save':
               $this->post_edit_save();
               break;            
           case 'addthx':
               $this->add_thx();
               break;
           case 'ajax-change-reputation':
               $this->ajax_change_reputation();
               break;

 

 

 

    	function ajax_change_reputation()
   {
       $mid = intval($_REQUEST['mid']);
       if($mid==0)
       {
           $this->return_string('error1');
       }
       if($this->ipsclass->member['id'] == $mid)
       {
           $this->return_string('error2');
       }
       if(!$this->ipsclass->member['rep_allow'])
       {
           $this->return_string('error5');
       }
       if($this->ipsclass->member['posts'] < $this->ipsclass->vars['rep_posts'])
       {
           $this->return_string('error6');
       }

       $_POST['message'] = $this->convert_unicode( $_POST['message'] );

       if( strtolower($this->ipsclass->vars['gb_char_set']) != 'iso-8859-1' &&
           strtolower($this->ipsclass->vars['gb_char_set']) != 'utf-8' )
       {
           if ( array_key_exists( strtolower($this->ipsclass->vars['gb_char_set']), $this->decode_charsets ) )
           {
               $this->ipsclass->vars['gb_char_set'] = $this->decode_charsets[strtolower($this->ipsclass->vars['gb_char_set'])];
               $_POST['message'] = html_entity_decode( $_POST['message'], ENT_NOQUOTES, $this->ipsclass->vars['gb_char_set'] );
           }
       }

       $message = $this->ipsclass->parse_clean_value($_POST['message']);

       if(trim($message)=="")
       {
           $this->return_string('error3');        
       }                

       $post = intval($_REQUEST['p']);
       $anonym = intval($_REQUEST['anonym']);
       $type = $_REQUEST['type'];        
       $num=0;
       switch($type)
       {
           case 'minus':
           $num=-1;
           break;
           case 'add':
           $num=1;
           break;
       }
       if($num==0)
       {
           $this->return_string('error4');
       }
       if($this->ipsclass->vars['rep_bad'])
       {
           //Cannot change reputation with baaad reputation (rep < -20)
           $this->ipsclass->DB->simple_construct(array('select' => 'reputation',
  							                         'from'   => 'members',
  							                         'where'  => "id=".$this->ipsclass->member['id']
  						                         ));
           $this->ipsclass->DB->simple_exec();
           $row = $this->ipsclass->DB->fetch_row();
           if(intval($row['reputation']) < $this->ipsclass->vars['rep_bad'])
           {
               $this->return_string('error7');
           }
       }

       if($this->ipsclass->vars['rep_maxperday'])
       {
           //Cannot vote more than X times every 24 hours
           $ctime = time();
           $timezero = $ctime - (24*60*60);

           $this->ipsclass->DB->simple_construct(array('select' => 'id',
  							                         'from'   => 'reputation',
  							                         'where'  => 'from_user='.$this->ipsclass->member['id'].' AND created > '.$timezero
  						                         ));

           $this->ipsclass->DB->simple_exec();
           if($this->ipsclass->DB->get_num_rows() >= $this->ipsclass->vars['rep_maxperday'])
           {
               $this->return_string('error8');
           }
       }

       //Cannot vote more 1 member more then 1 time in a X days
       if ($this->ipsclass->vars['rep_time'])
       {
           $ctime = time();
           $timezero = $ctime - ($this->ipsclass->vars['rep_time']*24*3600);

           $this->ipsclass->DB->simple_construct(array('select' => 'id',
  							                         'from'   => 'reputation',
  							                         'where'  => 'from_user='.$this->ipsclass->member['id'].' AND to_user='.$mid.' AND created > '.$timezero
  						                         ));

           $this->ipsclass->DB->simple_exec();
           if($this->ipsclass->DB->get_num_rows())
           {
               $this->return_string('error9');
           }
       }

       if (!$this->ipsclass->vars['rep_onepost'] and $post)
       {
           //Cannot change reputation a few times for one and the same post
           $this->ipsclass->DB->simple_construct(array('select' => 'id',
  							                         'from'   => 'reputation',
  							                         'where'  => 'post = '.$post.' AND from_user = '.$this->ipsclass->member['id']
  						                         ));

           $this->ipsclass->DB->simple_exec();
           if ($this->ipsclass->DB->get_num_rows())
           {
               $this->return_string('error10');
           }
       }

       $message = strip_tags($message);

       $this->ipsclass->DB->simple_construct(array('select' => 'members_display_name,rep_notify,reputation,rep_off',
  						                         'from'   => 'members',
  						                         'where'  => "id=".$mid
  					                         ));
       $this->ipsclass->DB->simple_exec();

       $member = $this->ipsclass->DB->fetch_row();
       if($member['rep_off'])
       {
           $this->return_string('error13');
       }


       if($this->ipsclass->vars['rep_maxlen'] and (strlen($message) > $this->ipsclass->vars['rep_maxlen']))
       {
           $this->return_string('error11');
       }

       if($anonym and !$this->ipsclass->vars['rep_anonym'])
       {
           $this->return_string('error12');
       }

//Get the Topic ID
       if($post)
       {
           $this->ipsclass->DB->simple_construct(array('select' => 'topic_id',
  							                         'from'   => 'posts',
  							                         'where'  => 'pid = '.$post,
  						                         ));
           $this->ipsclass->DB->simple_exec();
           $row = $this->ipsclass->DB->fetch_row();
           $topic_id = $row['topic_id'];
       }
       else $topic_id = 0;

       $this->ipsclass->DB->do_insert('reputation',array('from_user' => $this->ipsclass->member['id'],
  								                         'to_user'   => $mid,
  								                         'post'  	=> $post,
  								                         'topic' 	=> $topic_id,
  								                         'message'   => $message,
  								                         'rating'	=> $num,
  								                         //'anonym'	=> $anonym,
  								                         'created'   => time()));

       $this->ipsclass->DB->simple_update('members',
  				                         "reputation=reputation+$num",
  				                         'id='.$mid
  				                         );
       $this->ipsclass->DB->simple_exec();

       $member['reputation'] = $member['reputation'] + $num;

       if ($member['rep_notify'])
       {
           $this->ipsclass->load_language('lang_reputation');

           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;

           $rep_from = $anonym ? $this->ipsclass->vars['rep_anon_title'] : "[url={$this->ipsclass->base_url}showuser={$this->ipsclass->member['id']}][b]{$this->ipsclass->member['members_display_name']}[/b][/url]";
           $change = ($num > 0) ? $this->ipsclass->lang['rep_plus'] : $this->ipsclass->lang['rep_minus'];

           $pmpost = sprintf($this->ipsclass->lang['rep_notify_text'], $member['members_display_name'], $rep_from, $change, $message);
           $pmpost = $parser->pre_db_parse( $pmpost );
           $pmpost = $parser->pre_display_parse( $pmpost );

           require_once( ROOT_PATH.'sources/lib/func_msg.php' );

           $this->lib = new func_msg();
           $this->lib->ipsclass =& $this->ipsclass;

           $this->lib->init();

           $this->lib->to_by_id	= $mid;
           $this->lib->from_member['id'] = $this->ipsclass->vars['rep_pmid'];
           $this->lib->msg_title   = $this->ipsclass->lang['rep_notify_title'];
           $this->lib->msg_post	= $pmpost;//sprintf($this->ipsclass->lang['rep_notify_text'], $member['members_display_name'], $rep_from, $change, $message);
           $this->lib->force_pm	= 0;

           $this->lib->send_pm();

           if ( $this->lib->error )
           {
               //do nothing iniipet
           }
       }        
       $this->return_string("<a href='{$this->ipsclass->base_url}act=rep&type=history&mid={$mid}' title='Просмотреть репутацию'>{$member['reputation']}</a>");    
   }

/*-------------------------------------------------------------------------*/
// make string XML safe
/*-------------------------------------------------------------------------*/

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

  • 1 месяц спустя...

Уважаемых Arhar, пожалуйста помогите решить мне данную проблему. Этот баг заново проявляется и фактически делает мод неработоспособным.

 

Ошибка получается такая:

http://www.pictureshack.ru/images/8776bug1.png

 

Так же пользователи жаловались что выдает такую ошибку:

http://www.pictureshack.ru/images/9305bug2.jpg

 

 

В чем причина - я не понимаю. Я специально проверяю ссылки по которым ставится репутация, и в них все верно. Особенно интересно, что один пользователь по той же самой ссылки может изменить репутацию, а у другого выдает ошибку.

 

Если вы хотите чтобы ваши услуги оплатили, я готов на это пойти, не вопрос, но так оставлять нельзя.

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

такое в разных браузерах?

скачать ccleaner и стереть все временные файлы браузеров, запуская от имени администратора не поможет?

 

да и отслеживать все равно придется самому - именно на этой машине, именно в этом браузере

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

такое в разных браузерах?

скачать ccleaner и стереть все временные файлы браузеров, запуская от имени администратора не поможет?

В других я не проверял, но вероятнее всего да.

Когда такое происходит, я лезу в БД. Там в таблице репутации то самое пустое место, как на 1 скрине, отображается словно репутация поставлена пользователю, которого не существует/удален. То есть ссылка на репутацию имеет верный адрес, а ставится почему то совершенно другому ID, которого вдобавок не существует. И так каждый раз и каждый раз у разных пользователей.

 

 

Я бы рад отследить баг, но у меня не тот уровень чтобы это было мне по силам. Особенно самостоятельно.

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

×
×
  • Создать...

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

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