pikachu Опубликовано 20 Июня 2006 Жалоба Поделиться Опубликовано 20 Июня 2006 Anna: Я не уверен конечно, но помоему сей мод стал конфликотвать с модом автоматического снятия предупреждений. Выдает ошибку мускула...Сейчас не процитирую конечно, но ошибка выпадает, если автоматический снятие предупреждений снимает предупреждение, поставленное этим модом. Как повториться, обязательно скрин запощу. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
pikachu Опубликовано 29 Июня 2006 Жалоба Поделиться Опубликовано 29 Июня 2006 mySQL query error: INSERT INTO ibf_warn_logs VALUES('','6735','<content>Снят по истечении срока</content><mod>,d,</mod><post>,d, </post><susp>,d</susp>','none','','1151571993','pos','2','0') mySQL error: Column count doesn't match value count at row 1mySQL error code: Date: Thursday 29th of June 2006 01:06:33 PM вот сама строка из скрипта: $queries[] = "INSERT INTO ".SQL_PREFIX."warn_logs VALUES('','{$ibforums->member['id']}','<content>Снят по истечении срока</content><mod>,d,</mod><post>,d, </post><susp>,d</susp>','none','','".time()."','pos','".DEC_ID."','0')"; Такая вот штука, насколько я понимаю, автоматическое снятие нарушений снимает только по 1 единицы наказаний, а в моде Вес предупреждений встречаются и 2 и 3 пункта наказаний сразу Т.е нужно сделать так, чтобы мод Автоматического снятия нарушений снимал то кол-во пунктов, на которое был наказан пользователь Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
pikachu Опубликовано 29 Июня 2006 Жалоба Поделиться Опубликовано 29 Июня 2006 В принципе можно избежать ошибки БД, если заменить код на: $queries[] = "INSERT INTO ".SQL_PREFIX."warn_logs VALUES('','{$ibforums->member['id']}','<content>Ñíÿò ïî èñòå÷åíèè ñðîêà</content><mod>,d,</mod><post>,d, </post><susp>,d</susp>','none','','".time()."','pos','".DEC_ID."','0','','')"; тут просто еще 2 поля добавлены. Но он не снимает сам Вес предупреждений, но как временная мера вполне подходит Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Wilddancer Опубликовано 30 Июня 2006 Жалоба Поделиться Опубликовано 30 Июня 2006 Уважаемая AnnaУ меня такие ерроры:При введении изменений в topics.php выдает ошибку:Parse error: parse error, unexpected T_ELSE in n:\home\localhost\www\sources\topics.php on line 1197Если не вношу изменений - ошибок нет.ах да...версия 2.0.3 Снимаю вопрос....решил сам. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Anna Опубликовано 2 Июля 2006 Автор Жалоба Поделиться Опубликовано 2 Июля 2006 mySQL query error: INSERT INTO ibf_warn_logs VALUES('','6735','<content>Снят по истечении срока</content><mod>,d,</mod><post>,d, </post><susp>,d</susp>','none','','1151571993','pos','2','0') mySQL error: Column count doesn't match value count at row 1mySQL error code: Date: Thursday 29th of June 2006 01:06:33 PM здесь используется так называемая "неполная вставка", т.е. тут не перечисляются поля, в которые вставляются значения. а поскольку в моем моде в эту таблицу добавляется еще два поля, то и получается что общее колво полей больше, чем колво значений. надо либо перечислять в скобках названия полей после названия таблицы, либо дописать еще два значения. первый вариант ИМХО более корректный. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
pikachu Опубликовано 2 Июля 2006 Жалоба Поделиться Опубликовано 2 Июля 2006 Anna: в идеале, конечно, нужно дописать запрос в Снятии предупреждений, чтобы он смотрел лог-наказаия и брал значение поля warn_weight и на столько же снимал Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Anna Опубликовано 3 Июля 2006 Автор Жалоба Поделиться Опубликовано 3 Июля 2006 Да, это будет то что нужно. Без этого снятие предупреждения будет неадекватным по своему весу. Если вы знаете ID строки предупреждения, то выяснить вес достаточно просто - простой запрос к соответствующему полю. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
pikachu Опубликовано 3 Июля 2006 Жалоба Поделиться Опубликовано 3 Июля 2006 Anna: К сожалению я в Mysql полный 0, поэтому самостоятельно это сделать не смогу остается надеятся на других "тружеников"ресурса Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Anna Опубликовано 5 Июля 2006 Автор Жалоба Поделиться Опубликовано 5 Июля 2006 (изменено) К сожалению я не знакома с модом автоматического снятия предупреждений, но по смыслу должно быть так: SELECT wlog_weight FROM ibf_warn_logs WHERE wlog_id = 'сюда_индекс_предупреждения'; а потом это значение пишешь в переменную и подставляешь в свой запрос на снятие предупреждения так, чтоб оно попало в поле wlog_weight Изменено 5 Июля 2006 пользователем Anna Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Xeim.net Опубликовано 5 Июля 2006 Жалоба Поделиться Опубликовано 5 Июля 2006 Очень хотелось бы такой мод для 1.3. форума. Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Frampi Опубликовано 9 Июля 2006 Жалоба Поделиться Опубликовано 9 Июля 2006 По всей видимости мод просто отличный! Вот только жаль что он не под 2.1.х Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
M-K Опубликовано 15 Ноября 2006 Жалоба Поделиться Опубликовано 15 Ноября 2006 Возможно я не буду оригинален. Но для 1.3 это чудо будет? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 30 Января 2007 Жалоба Поделиться Опубликовано 30 Января 2007 с автоматическим снятием проблем быть не должно, так как оно снимает минус одинСКАЖИТЕ ТОЛЬКО, ЭТО РАБОТАЕТ?тогда я переделаю под 21, мне самому нужно Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 9 Февраля 2007 Жалоба Поделиться Опубликовано 9 Февраля 2007 в общем занялся я этим для 2.1.хработаетконфликтов с автоснятием нет, правда снимается минус 1, да я считаю это нормально, просто поставить чтоб почаще снималосьсейчас расскажу как сделатьбуду говорить, какие изменения по отношению к коду надо вносить от версии для 2.0.х пункты описания системы с 1 по 8 выполняются без изменений 1 - создаем ДУБЛИКАТ правил в закрытом разделе, доступ только у модеров, формат по описанию выше2 - создаем в разделе настройки-правила новую настройку с любым именем, но ключом = rules_post_id3 - не выполняем (оставляем все как есть) таким образом мы можем использовать все как и было, сделать правила в админке, а в посте будет их копия-исходник для модерирования(предупреждений) 1 - без изменений(выполняем как есть, собственно в предыдущем первом пункте мы это выполняли, не так ли)2 - выполняем как есть, тут все совпадает3 - благодаря создателям ипб, действия над шаблонами для этого мода под 2.0.х подходят без изменений под 2.1.хтоесть выполняем все как есть4 - в шаблоне warn_header надо добавить к <input type="radio" name="level" id="add" class="radiobutton" value="add" {$type['add']}onclick="document.getElementById('option_mainrule').style.display='block'; document.getElementById('option_weight').style.display='block'; document.getElementById('option_weight_minus').style.display='none'"а к<input type="radio" name="level" id="minus" class="radiobutton" value="remove" {$type['minus']}onclick="document.getElementById('option_mainrule').style.display='none'; document.getElementById('option_weight').style.display='none'; document.getElementById('option_weight_minus').style.display='block'"в остальных шабллонах все как и для 2.0.х теперь самый ответственный файл5 sources/action_public/misc/warn.phpнаходимvar $warn_member = "";добавляем после// warn weight var $tmp_row_length = 50; var $tmp_weight_arr = array( 0 => 'В соответствии с выбранным пунктом Правил', 1 => 'Легкое', 2 => 'Среднее', 3 => 'Серьезное' ); var $tmp_colors_arr = array( 0 => 'gray' , 1 => 'green', 2 => 'orange', 3 => 'red' ); //^^находим$content = $this->parser->pre_display_parse( $this->parser->pre_db_parse( $match[1] ) );добавляем после // warn weight $weight = ""; if (strlen($r['wlog_mainrule'])>0) { $content .= "<br /><br /><span align=left><b>Основной пункт правил: {$r['wlog_mainrule']}</b></span>"; } if (strlen($r['wlog_weight'])>0) { $weight = "<span style='color: {$this->tmp_colors_arr[$r['wlog_weight']]}; border: 2px solid white'><b> " . ($r['wlog_type'] == 'pos' ? "-" : "+") . $r['wlog_weight'] . " (". $this->tmp_weight_arr[$r['wlog_weight']].") </b></span>"; } // ^^находим if ( $r['wlog_type'] == 'pos' ) { $this->output .= $this->ipsclass->compiled_templates['skin_mod']->warn_view_positive_row($date, $content, $puni_name); } else { $this->output .= $this->ipsclass->compiled_templates['skin_mod']->warn_view_negative_row($date, $content, $puni_name); }меняем на if ( $r['wlog_type'] == 'pos' ) { $this->output .= $this->ipsclass->compiled_templates['skin_mod']->warn_view_positive_row($date, $content, $puni_name, $weight); } else { $this->output .= $this->ipsclass->compiled_templates['skin_mod']->warn_view_negative_row($date, $content, $puni_name, $weight); }находим $save['wlog_mid'] = $this->warn_member['id']; $save['wlog_addedby'] = $this->ipsclass->member['id'];добавляем после//warn weight if ($this->ipsclass->input['level'] == 'add') { $tmp = explode( "," , $this->ipsclass->input['mainrule'] ); if (intval($this->ipsclass->input['weight']) > 0) { $save['wlog_weight'] = $this->ipsclass->input['weight']; if (intval($tmp[1]) > 0) { $save['wlog_mainrule'] = $tmp[0]; } } else { if (intval($tmp[1]) == 0) { $save['wlog_weight'] = 2; } else { $save['wlog_weight'] = $tmp[1]; $save['wlog_mainrule'] = $tmp[0]; } } } else { $save['wlog_weight'] = $this->ipsclass->input['weight_minus']; } //^^находим if ( $this->ipsclass->input['level'] == 'add' ) { $warn_level++; } else { $warn_level--; }меняем на if ( $this->ipsclass->input['level'] == 'add' ) { //$warn_level++; $warn_level += $save['wlog_weight']; } else { //$warn_level--; $warn_level -= $save['wlog_weight']; }находим if ( $warn_level > $this->ipsclass->vars['warn_max'] ) { $warn_level = $this->ipsclass->vars['warn_max']; }меняем на /*if ( $warn_level > $this->ipsclass->vars['warn_max'] ) { $warn_level = $this->ipsclass->vars['warn_max']; }*/(собственно, закомментируем) находим $this->output .= $this->ipsclass->compiled_templates['skin_mod']->warn_suspend($ban_arr, $ban_extra); }добавляем после// warn weight $mainrule_contains = "<option value='' style='text-weight: bold; color: red'>Не удалось подгрузить Правила или распарсить их!</option>"; $cache = $this->ipsclass->DB->simple_exec_query( array( 'select' => '*', 'from' => 'conf_settings', 'where' => "conf_key='rules_post_id'" ) ); $text = $cache['conf_value'] ? $cache['conf_value'] : $cache['conf_default']; $this->ipsclass->DB->query("SELECT pid, post FROM ibf_posts WHERE pid=".intval($text)); if ($row=$this->ipsclass->DB->fetch_row()) { $mainrule_contains = "<option style='color: gray' value='0,0'>Не выбрано</option>\n"; $text = $this->ipsclass->my_nl2br($row['post']); $tmp = explode( "<br />" , $text); foreach ($tmp as $row) { if (preg_match("/color\:/", $row)) { $tmp_clear = preg_replace('/<span style=\'color:.+?<\/span>/', '', $row); $tmp_clear = str_replace("'", "", preg_replace('/<.+?>/', '', $tmp_clear)); $tmp_color = str_replace("'", "", preg_replace('/(.*)color:(\w+)(.*)/', '$2', $row)); switch ($tmp_color) { case $this->tmp_colors_arr[3]: $tmp_weight = 3; $tmp_weight_desc = $this->tmp_weight_arr[$tmp_weight]; break; case $this->tmp_colors_arr[1]: $tmp_weight = 1; $tmp_weight_desc = $this->tmp_weight_arr[$tmp_weight]; break; default: $tmp_weight = 2; $tmp_weight_desc = $this->tmp_weight_arr[$tmp_weight]; } $tmp_number = str_replace("'", "", preg_replace('/([\d\.]+)(.*)/', '$1', $tmp_clear)); $tmp_clear = substr( $tmp_clear , strlen($tmp_number) ); $mainrule_contains .= "<option style='color: {$this->tmp_colors_arr[$tmp_weight]}' value='{$tmp_number},{$tmp_weight}'>{$tmp_number} - Характер нарушения: {$tmp_weight_desc}</option>\n"; $tmp_clear_arr = explode(" ", $tmp_clear); $tmp_part = ""; foreach ($tmp_clear_arr as $entry) { $tmp_part .= $entry." "; if (strlen($tmp_part)>=$this->tmp_row_length) { $mainrule_contains = $this->mainrule_optgroup($mainrule_contains, trim($tmp_part)); $tmp_part = ""; } } if (strlen(trim($tmp_part))>0) { $mainrule_contains = $this->mainrule_optgroup($mainrule_contains, $tmp_part); } } } } $this->output .= $this->ipsclass->compiled_templates['skin_mod']->warn_main_rule($mainrule_contains, $this->ipsclass->input['type'] == 'minus' ? 'none' : 'block'); $weight_contains = ""; $weight_minus_contains = ""; foreach ($this->tmp_weight_arr as $k => $v) { $weight_contains .= "<option style='color: {$this->tmp_colors_arr[$k]}' value='{$k}'>{$v}</option>\n"; if ($k > 0) $weight_minus_contains .= "<option style='color: {$this->tmp_colors_arr[$k]}' value='{$k}'>{$v} (-{$k})</option>\n"; } $this->output .= $this->ipsclass->compiled_templates['skin_mod']->warn_weight($weight_contains, $this->ipsclass->input['type'] == 'minus' ? 'none' : 'block'); $this->output .= $this->ipsclass->compiled_templates['skin_mod']->warn_weight_minus($weight_minus_contains, $this->ipsclass->input['type'] == 'minus' ? 'block' : 'none'); //^^находим} ?>добавляем ПЕРЕД// warn weight function mainrule_optgroup($full, $part) { return $full . "<optgroup style='color: gray' label=' {$part}'></optgroup>\n"; } //^^ 6 - без изменений 7 - sources/action_public/profile.phpнаходим if ( $member['warn_level'] < 1 ) { $member['warn_img'] = '<{WARN_0}>'; } else if ( $member['warn_level'] >= $this->ipsclass->vars['warn_max'] ) { $member['warn_img'] = '<{WARN_5}>'; $member['warn_percent'] = 100; } else { $member['warn_percent'] = $member['warn_level'] ? sprintf( "%.0f", ( ($member['warn_level'] / $this->ipsclass->vars['warn_max']) * 100) ) : 0; if ( $member['warn_percent'] > 100 ) { $member['warn_percent'] = 100; }меняем на if ( $member['warn_level'] < 1 ) { $member['warn_img'] = '<{WARN_0}>'; } /*else if ( $member['warn_level'] >= $this->ipsclass->vars['warn_max'] ) { $member['warn_img'] = '<{WARN_5}>'; $member['warn_percent'] = 100; }*/ else { $member['warn_percent'] = $member['warn_level'] ? sprintf( "%.0f", ( ($member['warn_level'] / $this->ipsclass->vars['warn_max']) * 100) ) : 0; /*if ( $member['warn_percent'] > 100 ) { $member['warn_percent'] = 100; }*/ 8 - sources/action_public/topics.phpнаходим if ( $member['warn_level'] <= $this->ipsclass->vars['warn_min'] ) { $member['warn_img'] = '<{WARN_0}>'; $member['warn_percent'] = 0; } else if ( $member['warn_level'] >= $this->ipsclass->vars['warn_max'] ) { $member['warn_img'] = '<{WARN_5}>'; $member['warn_percent'] = 100; } else { $member['warn_percent'] = $member['warn_level'] ? sprintf( "%.0f", ( ($member['warn_level'] / $this->ipsclass->vars['warn_max']) * 100) ) : 0; if ( $member['warn_percent'] > 100 ) { $member['warn_percent'] = 100; }меняем на if ( $member['warn_level'] <= $this->ipsclass->vars['warn_min'] ) { $member['warn_img'] = '<{WARN_0}>'; $member['warn_percent'] = 0; } /*else if ( $member['warn_level'] >= $this->ipsclass->vars['warn_max'] ) { $member['warn_img'] = '<{WARN_5}>'; $member['warn_percent'] = 100; }*/ else { $member['warn_percent'] = $member['warn_level'] ? sprintf( "%.0f", ( ($member['warn_level'] / $this->ipsclass->vars['warn_max']) * 100) ) : 0; /*if ( $member['warn_percent'] > 100 ) { $member['warn_percent'] = 100; }*/правда я так и не понял, зачем эти проценты...9 - без изменений Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
n1c Опубликовано 10 Февраля 2007 Жалоба Поделиться Опубликовано 10 Февраля 2007 Хорошоб написать полное руководство по установке..и не смотреть как есть для 2.0 , а как для 2.1.7 ...а то запутаешься. Я вот например не понял , вот тут2 - создаем в разделе настройки-правила новую настройку с любым именем, но ключом = rules_post_idОстальные поля как заполнять? Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Arhar Опубликовано 14 Февраля 2007 Жалоба Поделиться Опубликовано 14 Февраля 2007 как угодно, желательно заполнить как можно меньше лишнего..поискать по сайту, может есть где мануал по добавлению настройкиу вас получится Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Yama Опубликовано 14 Февраля 2008 Жалоба Поделиться Опубликовано 14 Февраля 2008 Плачу 1000 рос. рублей, кто переделает под 2.3.4 Цитата Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения
Присоединиться к обсуждению
Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.