OverHerz Опубликовано 16 Декабря 2006 Жалоба Поделиться Опубликовано 16 Декабря 2006 И очень все-таки не хватает кнопки общего пересчета всех спасиб всех пользователей.не факт, что заработает Открыть thanks.php //найти function thanks_recount() { if ( $this->edit_permissions() ) { // Input data $author_id = intval($this->ipsclass->input['mid']); if ($author_id) { // Get "post_thanks" $this->ipsclass->DB->simple_construct( array( 'select' => 'post_thanks', 'from' => 'posts', 'where' => 'author_id = ' . $author_id . ' and post_thanks <> \'\' ' ) ); $this->ipsclass->DB->simple_exec(); $thanks_count = 0; // Recount "post_thanks" while($row = $this->ipsclass->DB->fetch_row()) { $thanks_count += count( explode(',',$row['post_thanks']) ); } // Update "post_thanks" $this->ipsclass->DB->do_update( 'members', array( 'thanks_point' => $thanks_count ), 'id = ' . $author_id ); // Redirect $this->ipsclass->print->redirect_screen( $this->ipsclass->lang['thx_recount_thanks'], "act=thanks&type=history&mid={$author_id}&st={$this->ipsclass->input['st']}" ); }//Заменить на function thanks_recount() { if ( $this->edit_permissions() ) { // Input data $author_id = intval($this->ipsclass->input['mid']); if ($author_id) { $recount_all = $this->ipsclass-DB->simple_construct(array('select' => 'id', 'from' => 'members')); while ($row = mysql_fetch_assoc($recount_all)) { // Get "post_thanks" $this->ipsclass->DB->simple_construct( array( 'select' => 'post_thanks', 'from' => 'posts', 'where' => 'author_id = ' . $row[id] . ' and post_thanks <> \'\' ' ) ); $this->ipsclass->DB->simple_exec(); $thanks_count = 0; // Recount "post_thanks" while($row = $this->ipsclass->DB->fetch_row()) { $thanks_count += count( explode(',',$row['post_thanks']) ); } // Update "post_thanks" $this->ipsclass->DB->do_update( 'members', array( 'thanks_point' => $thanks_count ), 'id = ' . $row[id] ); // Redirect $this->ipsclass->print->redirect_screen( $this->ipsclass->lang['thx_recount_thanks'], "act=thanks&type=history&mid={$author_id}&st={$this->ipsclass->input['st']}" ); } } Лучше сначало на локалке проверь, за изменения не отвечаю =) Только я не советую это делать, нагрузка на базу будет огромной Ссылка на комментарий Поделиться на других сайтах Прочее
Vselennaya Опубликовано 17 Декабря 2006 Жалоба Поделиться Опубликовано 17 Декабря 2006 Где автор?20 страниц уже написали и снова половина народу застряла на одной и той же проблеме Ссылка на комментарий Поделиться на других сайтах Прочее
gtk Опубликовано 17 Декабря 2006 Жалоба Поделиться Опубликовано 17 Декабря 2006 Неее, если нагрузка на сервак будет большой, то такой способ решения проблемы не подходит А что Ваш пример делает? (просто я в программировании "не бум-бум") Я так понимаю, что здесь идет перечсет сразу при удалении спасиб (постов в которых эти "спасиба" были сказаны). У можно ли тогда сделать пересчет вручную (где-нить в админке кнопочкой) или допустим раз в сутки это автоматом делалось? Ссылка на комментарий Поделиться на других сайтах Прочее
OverHerz Опубликовано 17 Декабря 2006 Жалоба Поделиться Опубликовано 17 Декабря 2006 Неее, если нагрузка на сервак будет большой, то такой способ решения проблемы не подходитзависит от того, сколько у тебя пользователей, чем больше => тем больше нагрузка. Я просто добавил цикл, заходишь в любого пользователя и тыкаешь "пересчитать", только пересчитывается не этот 1, а сразу все Ссылка на комментарий Поделиться на других сайтах Прочее
BELLFAGOR Опубликовано 17 Декабря 2006 Жалоба Поделиться Опубликовано 17 Декабря 2006 Поставил мод,все выполнил правильно абсолютно.Зашел на форум ,вроде все нормально.Но когда заходишь в любую тему ,напримерhttp://*******.ruforum/index.php?showtopic=8 Появляется белый лист и ошибка; Fatal error: Call to undefined method skin_topic_2::button_thanks() in /data/www/public_html/forum/sources/action_public/topics.php on line 965 Посмотрев еще раз 10 понял что установил я все правильно,и ссылается на какую то ошибку Плиз если кто может сказать в чем проблема подскажите...неохото обратно все править чтобы от мода избавится... Ссылка на комментарий Поделиться на других сайтах Прочее
Pimen Опубликовано 17 Декабря 2006 Жалоба Поделиться Опубликовано 17 Декабря 2006 BELLFAGOR проверь изменения в скинах Если все правильно, то попробуй сделать ребилд Ссылка на комментарий Поделиться на других сайтах Прочее
vlad7 Опубликовано 18 Декабря 2006 Жалоба Поделиться Опубликовано 18 Декабря 2006 Тоже проблема с thanks.php Ссылка на комментарий Поделиться на других сайтах Прочее
holod2007 Опубликовано 18 Декабря 2006 Жалоба Поделиться Опубликовано 18 Декабря 2006 В списке тех, кто сказал спасибо, видно только 9 последних. Как отобразить все, а лучше сделать постраничный вывод. Ссылка на комментарий Поделиться на других сайтах Прочее
vlad7 Опубликовано 18 Декабря 2006 Жалоба Поделиться Опубликовано 18 Декабря 2006 Блин. Что никто не знаеТ? Ссылка на комментарий Поделиться на других сайтах Прочее
vlad7 Опубликовано 18 Декабря 2006 Жалоба Поделиться Опубликовано 18 Декабря 2006 [error] PHP Fatal error: Call to undefined function: button_thanks() in /home/sources/action_public/topics.php on line 966 Люди добрые Помогите.... Ссылка на комментарий Поделиться на других сайтах Прочее
sultana Опубликовано 18 Декабря 2006 Жалоба Поделиться Опубликовано 18 Декабря 2006 Мод отличный, ставится легко. Спасибо + автору.Подскажите, пожалуйста, как в текстовом скине заменить кнопку "спасибо" на слово. Ссылка на комментарий Поделиться на других сайтах Прочее
Master Опубликовано 18 Декабря 2006 Жалоба Поделиться Опубликовано 18 Декабря 2006 Посмотрите в макросах скина Ссылка на комментарий Поделиться на других сайтах Прочее
vlad7 Опубликовано 18 Декабря 2006 Жалоба Поделиться Опубликовано 18 Декабря 2006 На мой вопрос никто не ответит? Я уже три раза переставлял мод, все правильно делаю. В чем проблема? Ссылка на комментарий Поделиться на других сайтах Прочее
sultana Опубликовано 18 Декабря 2006 Жалоба Поделиться Опубликовано 18 Декабря 2006 Посмотрите в макросах скина Там почему-то такой макрос не появился вообще. Может его можно вручную добавить? Ссылка на комментарий Поделиться на других сайтах Прочее
Master Опубликовано 18 Декабря 2006 Жалоба Поделиться Опубликовано 18 Декабря 2006 Тогда в самом последнем шаге---------------------------------------------------------------------- Тело шаблона : ---------------------------------------------------------------------- <a href="{ipb.script_url}act=thanks&type=add&f={ipb.input[f]}&t={ipb.input[t]}&pid={$post}" title="Thanks"><img src='style_images/<#IMG_DIR#>/thanks.gif' border='0' alt='Thanks' /></a>Изменить так:---------------------------------------------------------------------- Тело шаблона : ---------------------------------------------------------------------- <a href="{ipb.script_url}act=thanks&type=add&f={ipb.input[f]}&t={ipb.input[t]}&pid={$post}" title="Thanks">Спасибо</a> Ссылка на комментарий Поделиться на других сайтах Прочее
sultana Опубликовано 18 Декабря 2006 Жалоба Поделиться Опубликовано 18 Декабря 2006 Спасибо, теперь все супер. Отлличный мод! Ссылка на комментарий Поделиться на других сайтах Прочее
gtk Опубликовано 19 Декабря 2006 Жалоба Поделиться Опубликовано 19 Декабря 2006 Вот, один хороший человек (Zio) сделал общий пересчет всех спасиб всем пользователям из админки //******************************//Массовое пересчитывание спасиб//****************************** //============================================ // ./sources/action_admin/rebuild.php //============================================ //******************* // находим //******************* case 'tool_bansettings': $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':rebuild' ); $this->tool_bansettings(); break; case 'tools': $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':' ); $this->tools_splash(); break; //**************** // добавляем после //**************** //---------------------- // thanks //---------------------- case 'recount_thanks': $this->ipsclass->admin->cp_permission_check( $this->perm_main.'|'.$this->perm_child.':rebuild' ); $this->recount_thanks(); break; //******************* // находим //******************* /*-------------------------------------------------------------------------*/ // REBUILD POST COUNTS /*-------------------------------------------------------------------------*/ function rebuild_post_counts() { //******************* // добавляем ПЕРЕД //******************* function recount_thanks() { //----------------------------------------- // Set up //----------------------------------------- $done = 0; $start = intval( $this->ipsclass->input['st'] ); $end = intval( $this->ipsclass->input['pergo'] ) ? intval( $this->ipsclass->input['pergo'] ) : 500; $end += $start; $output = array(); //----------------------------------------- // Got any more? //----------------------------------------- $tmp = $this->ipsclass->DB->simple_exec_query( array( 'select' => 'id', 'from' => 'members', 'where' => "id > $end", 'limit' => array(0,1) ) ); $max = intval( $tmp['id'] ); //----------------------------------------- // Avoid limit... //----------------------------------------- $this->ipsclass->DB->simple_construct( array( 'select' => 'id, name', 'from' => 'members', 'where' => "id >= $start and id < $end and thanks_point>0", 'order' => 'id ASC' ) ); $outer = $this->ipsclass->DB->simple_exec(); //----------------------------------------- // Process... //----------------------------------------- while( $r = $this->ipsclass->DB->fetch_row( $outer ) ) { $this->ipsclass->DB->simple_construct( array( 'select' => 'post_thanks', 'from' => 'posts', 'where' => 'author_id = ' . $r['id'] . ' and post_thanks <> \'\' ' ) ); $this->ipsclass->DB->simple_exec(); $thanks_count = 0; // Recount "post_thanks" while($row = $this->ipsclass->DB->fetch_row()) { $thanks_count += count( explode(',',$row['post_thanks']) ); } // Update "post_thanks" $this->ipsclass->DB->do_update( 'members', array( 'thanks_point' => $thanks_count ), 'id = ' . $r['id'] ); $done++; } //----------------------------------------- // Finish - or more?... //----------------------------------------- if ( ! $done and ! $max ) { //----------------------------------------- // Done.. //----------------------------------------- $text = "<b>Пересчет завершен</b><br />".implode( "<br />", $output ); $url = "{$this->ipsclass->form_code}"; $time = 2; } else { //----------------------------------------- // More.. //----------------------------------------- $text = "<b>Пользователей пересчитано: $end, продолжение...</b><br />".implode( "<br />", $output ); $url = "{$this->ipsclass->form_code}&code=".$this->ipsclass->input['code'].'&pergo='.$this->ipsclass->input['pergo'].'&st='.$end; $time = 0; } //----------------------------------------- // Bye.... //----------------------------------------- $this->ipsclass->admin->redirect( $url, $text, 0, $time ); } //******************* // находим //******************* //-------------------------------// $this->ipsclass->admin->output(); } //******************* // добавляем ПЕРЕД //******************* //----------------------------------------- // Recount thanks //----------------------------------------- $this->ipsclass->html .= $this->ipsclass->adskin->start_form( array( 1 => array( 'code' , 'recount_thanks' ), 2 => array( 'act' , 'rebuild' ), 4 => array( 'section', $this->ipsclass->section_code ), ) ); $this->ipsclass->adskin->td_header[] = array( " " , "60%" ); $this->ipsclass->adskin->td_header[] = array( " " , "40%" ); $this->ipsclass->html .= $this->ipsclass->adskin->start_table( "Пересчет благодарностей пользователей" ); $this->ipsclass->html .= $this->ipsclass->adskin->add_td_row( array( "<b>Пересчет благодарностей</b><div style='color:gray'>Данная опция позволяет пересчитать благодарности пользователей.<br /> Эта функция полезна, если Вы удалили тему, в которой объявлены благодарности пользователю.</div> Внимание: эта опция требует достаточно много ресурсов.<br /> Рекомендуется перестраивать Спасибо у 500 пользователей за раз. <span style='color:gray'>Если данная функция не может быть выполнена и PHP скрипт </span>\"вылетает\" <span style='color:gray'>по</span> \"30 секундному таймауту\"<span style='color:gray'>, то уменьшите число пересчитываемых за раз пользователей.</span>", "по ". $this->ipsclass->adskin->form_simple_input( 'pergo', '500', 5 ). " за раз" ) ); $this->ipsclass->html .= $this->ipsclass->adskin->end_form('Пересчитать благодарности пользователей'); $this->ipsclass->html .= $this->ipsclass->adskin->end_table(); /******************************** //*******************************************//Удаление спасиб вместе с постом//******************************************* //============================================ // ./sources/lib/func_mod.php //============================================ // function post_delete($id) //******************* // находим код, начинающийся с //******************* //----------------------------------------- // Get Stuff //----------------------------------------- $this->ipsclass->DB->simple_construct( array( 'select' => 'pid, topic_id', 'from' => 'posts', 'where' => 'pid'.$pid ) ); $this->ipsclass->DB->simple_exec(); while ( $r = $this->ipsclass->DB->fetch_row() ) { $posts[ $r['pid'] ] = $r['topic_id']; $topics[ $r['topic_id'] ] = 1; } //----------------------------------------- // Is there an attachment to this post? //----------------------------------------- //**************** //Заменяем на: //**************** //----------------------------------------- // Get Stuff //----------------------------------------- $this->ipsclass->DB->simple_construct( array( 'select' => 'pid, topic_id, author_id, post_thanks', 'from' => 'posts', 'where' => 'pid'.$pid ) ); $this->ipsclass->DB->simple_exec(); $r = $this->ipsclass->DB->fetch_row(); $posts[ $r['pid'] ] = $r['topic_id']; $topics[ $r['topic_id'] ] = 1; $author_id=$r['author_id']; $post_thanks=$r['post_thanks']; //Delete Thanks point $this->ipsclass->DB->simple_construct( array( 'select' => 'thanks_point, posts', 'from' => 'members', 'where' => "id=".$author_id ) ); $this->ipsclass->DB->simple_exec(); $user_data = $this->ipsclass->DB->fetch_row( ); if ($post_thanks!="") { $thanks_count=count( explode( ",", $post_thanks)); $thanks_point=($user_data['thanks_point']-$thanks_count); } else { $thanks_point=$user_data['thanks_point']; } $inp_data= array( 'thanks_point' => $thanks_point, 'posts' => $user_data['posts']-1, ); $this->ipsclass->DB->do_update( 'members',$inp_data, "id=".intval($author_id)); //End Delete Thanks point //----------------------------------------- // Is there an attachment to this post? //----------------------------------------- Ссылка на комментарий Поделиться на других сайтах Прочее
vlad7 Опубликовано 19 Декабря 2006 Жалоба Поделиться Опубликовано 19 Декабря 2006 У кого проблемы с thanks.php . Я нашел проблему (тоесть человек подсказал) Все элементарно просто. cache нужно права поставить. Ссылка на комментарий Поделиться на других сайтах Прочее
in_fact Опубликовано 19 Декабря 2006 Жалоба Поделиться Опубликовано 19 Декабря 2006 на 220 кто-то ставил? Ссылка на комментарий Поделиться на других сайтах Прочее
Tokyocut Опубликовано 19 Декабря 2006 Жалоба Поделиться Опубликовано 19 Декабря 2006 Спасибо, все перелестно работает! Здесь много задавали вопросов о совместимости с модом хайд от от Vic'er. Я этот мод установил после мода "Спасибо". Как тепероь привязать их так, чтоб ссылка появлялась только после нажатия спасибо? А то по умолчанию у мода "хайд" настройки такие, что он показывает скрытый текст зарегистрированому пользователю просто и пользователю, имеющему Н-ое количество постов. И второй вопрос - можно ли убрать "спаибо" со всех постов, а привязывать его только к тому, в котором укажет автор поста. Например - первый пост в теме с полезной ссылкой имеет спасибо, на которую все нажимают чтоб увидеть эту самую ссылку. Ссылка на комментарий Поделиться на других сайтах Прочее
swind Опубликовано 19 Декабря 2006 Жалоба Поделиться Опубликовано 19 Декабря 2006 после установки возникает ошибка: Fatal error: Maximum execution time of 30 seconds exceeded in ...sources/action_public/thanks.php on line 198 как исправить? Ссылка на комментарий Поделиться на других сайтах Прочее
OverHerz Опубликовано 19 Декабря 2006 Жалоба Поделиться Опубликовано 19 Декабря 2006 никак, менять хостинг Ссылка на комментарий Поделиться на других сайтах Прочее
swind Опубликовано 19 Декабря 2006 Жалоба Поделиться Опубликовано 19 Декабря 2006 у меня свой хост. Что мне нужно поправить? это возникает при попытке посмотерть историю спасибов. Ссылка на комментарий Поделиться на других сайтах Прочее
OverHerz Опубликовано 19 Декабря 2006 Жалоба Поделиться Опубликовано 19 Декабря 2006 нужно увеличить время выполнения скриптов Ссылка на комментарий Поделиться на других сайтах Прочее
swind Опубликовано 20 Декабря 2006 Жалоба Поделиться Опубликовано 20 Декабря 2006 то есть эта модификация грузиться настолько долго? Ссылка на комментарий Поделиться на других сайтах Прочее
Рекомендуемые сообщения