| NordWest | 
					
						 Отправлено: 30 ноября 2013 — 09:54          
					 | 
				 
				
					
	        			
  
  
						   
        				Super Member 
        				 
  
        				Покинул форум 
        				Сообщений всего: 994 
        				Дата рег-ции: Дек. 2011  
        				 Откуда: Северо-Запад 
						Репутация: 76 
        				 
        				 
         				 
        				  
					 | 
					Внес правки в код мода. Убрал атавизмы отладки и решил проблему с подсчетом "мертвых душ". Изменения касаются только topic.php. Долго думал как описать и решил выложить в виде нового варианта установки. Замените один вариант кода другим... 
 
Спойлер (Отобразить)topic.php
Ищем строку
 CODE:if ($fm->exbb['karma'] === TRUE) { $fm->_LoadModuleLang('karma');}  
перед которой вставляем
 CODE:// ********* мод сказать "спасибо" ********* 
$_icon['$thank_i'] = ($fm->exbb['text_menu'] === TRUE) ? $fm->LANG['IconThank'] : '<img src="./templates/'.DEF_SKIN.'/im/'.DEF_LANG.'/thanks.gif" border="0" title="'.$fm->LANG['DescThank'].'" alt="'.$fm->LANG['IconThank'].'">'; 
if ($fm->input['action'] == 'thanks' && $fm->user['id'] != 0) 
    { 
    $key = $fm->input['post']; 
    $member_id = (isset($threads[$key]['p_id'])) ? $threads[$key]['p_id'] : 0; 
    if ($fm->user['id'] != $member_id) 
        { 
        $threads = $fm->_Read2Write($fp_threads, 'forum'.$forum_id.'/'.$topic_id.'-thd.php'); 
        if (!isset($threads[$key]['thanks'])) {$threads[$key]['thanks'] = $fm->user['id'];} 
        if (strpos($threads[$key]['thanks'],strval($fm->user['id'])) === false) {$threads[$key]['thanks'] .= ','.$fm->user['id'];} 
        $fm->_Write($fp_threads, $threads);   
        }    
    header ('Location: topic.php?forum='.$forum_id.'&topic='.$topic_id.'&postid='.$key.'#'.$key); 
    } 
// *******************************************  
затем ниже ищем строку
 CODE:$info           = $fm->LANG['PostDate'].' <b>'.$postdate.'</b> '.$postIP;  
после которой вставляем
 CODE:// ********* мод сказать "спасибо" *********     
    $say_thank_b = ($access === TRUE && $topic['state'] != 'closed' && $fm->user['id'] != 0 && $fm->user['id'] != $member_id)  
        ? '<a href="topic.php?action=thanks&forum='.$forum_id.'&topic='.$topic_id.'&post='.$key.'" title='.$fm->LANG['DescThank'].'>'.$_icon['$thank_i'].'</a>'.$_icon['divider']  
        : ''; 
    $say_thank_d = ''; 
    if (isset($threads[$key]['thanks'])) 
        { 
        $th_list = ''; 
        $th_id = explode(",", $threads[$key]['thanks']); 
        $th_count = 0; 
        foreach ($th_id as $usid) 
            { 
            if ($member=$fm->_Getmember($usid)) 
                { 
                $th_count++; 
                if (in_array($usid,$fm->_Moderators)) {$member['status'] = 'mo';} 
                switch ($member['status'])  
                    { 
                    case 'ad':    $class = ' class="admin"'; break; 
                    case 'sm':    $class = ' class="supmoder"'; break; 
                    case 'mo':    $class = ' class="moder"'; break; 
                    default:    $class = ''; 
                    }    
                $th_list .= '<a href="profile.php?action=show&member='.$usid.'"'.$class.'>'.$member['name'].'</a>  ';        
                } 
            } 
        if ($th_count > 5)  
            { 
            $say_thank_d = '<span><b><i>'.sprintf($fm->LANG['ThankMsg'].$fm->LANG['ThankAddon'],$th_count).'</i></b></span> 
                    <span id="sp_thanks">(<a href="#" onClick="spoiler(\'_thanks\'); return false;">'.$fm->LANG['SpoilerShow'].'</a>)</span> 
                    <div id="spoiler_thanks" style="display: none;">'.$th_list.'</div>' ;         
            } 
        else {$say_thank_d = '<span><b><i>'.$fm->LANG['ThankMsg'].': </i></b></span>'.$th_list ;}        
        } 
// *****************************************    (Отредактировано автором: 30 ноября 2013 — 09:56)  | 
				 
				
					|   | 
					
						
						 
					 | 
				 
			 
            			
				
					| Иван Петров | 
					
						 Отправлено: 30 ноября 2013 — 19:45          
					 | 
				 
				
					
	        			
  
						  
        				Full Member 
        				 
  
        				Покинул форум 
        				Сообщений всего: 171 
        				Дата рег-ции: Авг. 2012  
        				 
						Репутация: 3 
        				 
        				 
         				 
        				  
					 | 
					Alexandr пишет:Кто-то стал вам неугоден, через админку учетку похерили, т.е. юзера не стало, под списком поблагодаривших запись также убирается, а вот счётчик пользователей сказавших спасибо не меняется, несмотря на то, что реальное число стало ниже.. (а также, появился другой пользователь который сказал спасибо, счётчик считает его значение и добавляет плюс 1 к указанной сумме, получается что суммарное число также не правильное)   
Я очень редко кого-то удаляю, считаю, что бана достаточно.  
Ну почему же не правильно считает.., очень даже правильно, ведь удаленному пользователю тоже понравилось, а значит счетчик говорит правду   
 
NordWest, установил ваши последние изменения в моде, но пришлось все заново восстанавливать, т.к. теперь стало отображаться вот так: (пример)  
 
Спойлер (Отобразить)конец сообщения постаЗа этот пост сказали спасибо:   
 
Т.е. без всякого отступа и пробела стал отображаться список поблагодаривших | 
				 
				
					|   | 
					
						
						 
					 | 
				 
			 
            			
				
					| Alexandr | 
					
						 Отправлено: 30 ноября 2013 — 19:49          
					 | 
				 
				
					
	        			
  
						  
        				Junior Member 
        				 
  
        				Покинул форум 
        				Сообщений всего: 51 
        				Дата рег-ции: Дек. 2012  
        				 Откуда: Russia 
						Репутация: 1 
        				 
        				 
         				 
        				  
					 | 
					Счетчик "мертвых душ" теперь обрабатывается корректно. Только по-моему, где-то не хватает тега <br> (скрин). 
  
По поводу пользователя, да, очень странно, в каком-то конкретном сообщении кнопку нажимает но ничего не добавляется, хотя может перейти на др. страничку - там всё ок, нажимает и запись внизу появляется. 
 
Вы уж простите) заметил ещё - допустим тема состоит из четырёх страниц, нужно перейти на вторую, третью, не важно - и в самом первом сообщении страницы нажать кнопку "спасибо", запись об этом добавится, но при этом перекинет на страничку номером ниже, например: были на третьей, поблагодарили за первый пост, переместились на вторую и т.д., общий алгоритм такой.  
 
p.s. для демонстрации обоих примеров могу дать доступ на площадку где это всё уже установлено, а так же логин/пароль проблемного пользователя, чтобы можно было увидеть вживую.  
Ещё раз спасибо! Прикреплено изображение
 
  | 
				 
				
					|   | 
					
						
						 
					 | 
				 
			 
            			
            			
				
					| Alexandr | 
					
						 Отправлено: 17 декабря 2013 — 20:29          
					 | 
				 
				
					
	        			
  
						  
        				Junior Member 
        				 
  
        				Покинул форум 
        				Сообщений всего: 51 
        				Дата рег-ции: Дек. 2012  
        				 Откуда: Russia 
						Репутация: 1 
        				 
        				 
         				 
        				  
					 | 
					NordWest пишет:Всё посмотрю завтра - сегодня уже башка не варит...   
NordWest, поправьте пожалуйста перенос строки в Вашем последнем посте (от 30 ноября 2013) с инструкцией по установке. Мне этот вариант нравится больше, чем в начале темы. 
Проверил также, что на чистой сборке многих проблем перечисленных мной нет, видимо на моём форуме вполне вероятно есть что-то "нехорошее" в текстовой базе (может появилось в результате нескольких обновлений движка за последние годы или переезда с одного места в другое)(Отредактировано автором: 17 декабря 2013 — 20:32)  | 
				 
				
					|   | 
					
						
						 
					 | 
				 
			 
            			
            			
            			
				
					| Alexandr | 
					
						 Отправлено: 18 декабря 2013 — 20:42          
					 | 
				 
				
					
	        			
  
						  
        				Junior Member 
        				 
  
        				Покинул форум 
        				Сообщений всего: 51 
        				Дата рег-ции: Дек. 2012  
        				 Откуда: Russia 
						Репутация: 1 
        				 
        				 
         				 
        				  
					 | 
					Лучше всего во всех вариантах отображение получилось при двойном <br />. Спасибо! 
CODE:if ($th_count > 5)  
 { 
 $say_thank_d = '<br /><br /><span><b><i>'.sprintf($fm->LANG['ThankMsg'].$fm->LANG['ThankAddon'],$th_count).'</i></b></span> 
 <span id="sp_thanks">(<a href="#" onClick="spoiler(\'_thanks\'); return false;">'.$fm->LANG['SpoilerShow'].'</a>)</span> 
 <div id="spoiler_thanks" style="display: none;">'.$th_list.'</div>' ;  
 } 
 else {$say_thank_d = '<br /><br /><span><b><i>'.$fm->LANG['ThankMsg'].': </i></b></span>'.$th_list ;}   
 
Немного выше писал ещё о таком баге: 
Цитата:допустим тема состоит из четырёх страниц, нужно перейти на вторую, третью, не важно - и в самом первом сообщении страницы нажать кнопку "спасибо", запись об этом добавится, но при этом перекинет на страничку номером ниже, например: были на третьей, поблагодарили за первый пост, переместились на вторую и т.д.    
При поиске по форуму наткнулся на такую темку: http://exbb.info/community/topic.php?forum=6&topic=258 
(она довольно старая и осталась без ответа тогда), походу ноги  растут оттуда, т.к. у меня имеется такая же проблема (на 99% уверен, что и с модом "спасибо" перекидывает на страничку ниже, если поблагодарить автора первого поста, из-за неё). Если есть решение - подскажите пожалуйста.(Отредактировано автором: 18 декабря 2013 — 20:45)  | 
				 
				
					|   | 
					
						
						 
					 | 
				 
			 
            			
            			
            			
            			
            
					 |