» » » Статистика рейтинга новости для dle 10-10.1

Ошибка добавление новости
Вы зашли на сайт как незарегистрированный пользователь.
Для добавления новости Вам требуется зарегистрироваться либо войти на сайт под своим именем.
Ошибка добавление вопроса
Вы зашли на сайт как незарегистрированный пользователь.
Для добавления вопроса Вам требуется зарегистрироваться либо войти на сайт под своим именем.

Статистика рейтинга новости для dle 10-10.1

 Robot    2014.03.05    DLE хаки     2321 
  Статистика рейтинга новости для dle 10-10.1


Данный модификация позволяет вывести пользователю статистику рейтинга данной новости.
Выводит процентную шкалу баллов голосовавших .

Протестировано пользователем Nimad на Опен сервере. Версия DLE 10.1
Приступим к установке:
Выполняем sql запрос из phpmyadmin:
ALTER TABLE `dle_post_extras` ADD  `static_votes` varchar(200) NOT NULL DEFAULT '';


Заменяем содержимое файла engine/ajax/rating.php

от строки
php - Код
$where = "ip ='{$_IP}'";



До строки php - Код
$buffer = ShowRating( $row['news_id'], $row['rating'], $row['vote_num'], false );


На это:
$rowlog = $db->super_query( "SELECT news_id FROM " . PREFIX . "_logs WHERE news_id ='$news_id' AND {$where}" ); //переименовали $row на $rowlog

/* 
Добавляем новую строку в phpmyadmin
ALTER TABLE `dle_post_extras` ADD  `static_votes` varchar(200) NOT NULL DEFAULT '';
*/

//Добавили вывод строки :,static_votes
$row = $db->super_query( "SELECT news_id, rating, vote_num,static_votes FROM " . PREFIX . "_post_extras WHERE news_id ='$news_id'" );
 
if( !$rowlog['news_id'] AND count( explode( ".", $_IP ) ) == 4 ) {//переименовали $row на $rowlog

//перзаписываем $row['static_votes']
$staticVote = count(unserialize($row['static_votes'])) > 0 ? unserialize($row['static_votes']) : array();
$static_votes= array();
for($i = 1; $i < 6; $i++) {$staticVote[$i] = intval($staticVote[$i]) ? $staticVote[$i] : 0;
$static_votes[$i] = ($i==$go_rate) ? $staticVote[$i]+1 : $staticVote[$i];
}

	
	 //$db->query( "UPDATE " . PREFIX . "_post_extras SET rating=rating+'$go_rate', vote_num=vote_num+1 WHERE news_id ='$news_id'" ); 
	$db->query( "UPDATE " . PREFIX . "_post_extras SET rating=rating+'$go_rate', vote_num=vote_num+1,static_votes='".serialize($static_votes)."' WHERE news_id ='$news_id'" ); 
	 
if ( $db->get_affected_rows() )	{
		if( $is_logged ) $user_name = $member_id['name'];
		else $user_name = "noname";
		
		$db->query( "INSERT INTO " . PREFIX . "_logs (news_id, ip, member) values ('$news_id', '$_IP', '$user_name')" );

		if ( $config['allow_alt_url'] == "yes" AND !$config['seo_type'] ) $cprefix = "full_"; else $cprefix = "full_".$news_id;	
	
		clear_cache( array( 'news_', 'rss', $cprefix ) );

	}
}


Открываем файл engine/inc/massactions.php находим строку:
$db->query( "UPDATE " . PREFIX . "_post_extras SET vote_num='0' WHERE news_id='{$id}'" );


Заменяем на эту:
$db->query( "UPDATE " . PREFIX . "_post_extras SET vote_num='0',static_votes='' WHERE news_id='{$id}'" );


Открываем engine/modules/show.full.php

После строки
$tpl->set( '{rating}', ShowRating( $row['id'], $row['rating'], $row['vote_num'], $user_group[$member_id['user_group']]['allow_rating'] ) );


Вставляем:
// Вывод статистики рейтинга
        $tpl->set( '{static-rating}',ShowStaticRating($row['vote_num'],count(unserialize($row['static_votes'])) > 0 ? unserialize($row['static_votes']) : array()));$tpl->set( '[static-rating]', "" );$tpl->set( '[/static-rating]', "" );

Далее после строки:
$tpl->set( '{rating}', "" );

Вставляем:
$tpl->set( '{static-rating}','');$tpl->set_block( "'\\[static-rating\\](.*?)\\[/static-rating\\]'si", "" );


В файл engine/modules/ functions.php новую функцию:
Ищем:
function flooder($ip, $news_time = false) {


Выше добавляем:
/* статистика рейтинга */
function ShowStaticRating($vote_num,$static_votes=array()){
global $config;
$rated = '';
$staticrate = array();
if(count($static_votes)>1){
$color= array('1'=>'one','2'=>'two','3'=>'three','4'=>'four','5'=>'five') ;
for($i = 1; $i < 6; $i++) {
$num = $static_votes[$i];
if( ! $num ) $num = 0;
			if( $vote_num != 0 ) $proc = $num / ($vote_num /100); 
			else $proc = 0;
			$proc = round( $proc, 2 );
$staticrate[] = '<div class="rating-bar-container '.$color[$i].'"> <span class="bar-label"> <span class="star-tiny star-full"></span>'.$i.' </span> <span class="bar" style="width:'.intval($proc).'%"></span> <span class="bar-number">'.$num.'</span> </div> ';
} 
$rated = '<div class="rating-histogram_hide"><div class="title">Статистика</div><div class="rating-histogram"> '.implode("\n",array_reverse($staticrate)).'</div></div>';}
return $rated;

}


В стилях вашего шаблона добавляем:
.rating-histogram_hide {background: #ffffff;-moz-border-radius: 5px;-webkit-border-radius: 5px;border-radius: 5px;-webkit-box-shadow: 0px 2px 10px 0px rgba(63,69,75,0.5);-moz-box-shadow: 0px 2px 10px 0px rgba(63,69,75,0.5);box-shadow: 0px 2px 10px 0px rgba(63,69,75,0.5);color: #4c5157;cursor: default;display: none;font-size: 11px;right:35px;line-height: 14px;padding: 11px 17px 12px 13px;position: absolute;min-width: 230px;z-index: 1;border-collapse: separate;text-align:left;}

.rating-histogram_hide .title {font-weight: bold;}

.rating-histogram{width:170px;float:right}

.rating-histogram{padding:20px 20px 20px 30px}

.rating-bar-container{color:#737373;height:23px;font-weight:400;position:relative;width:100%}

.bar-label{font-size:11px;left:-30px;letter-spacing:1px;position:absolute;top:4px}

.bar-number{color:#333;font-size:11px;left:5px;position:absolute;top:4px}

.rating-bar-container .bar{-moz-opacity:0.8;opacity:0.8;filter:alpha(opacity=80);-webkit-transition:width .25s ease;-moz-transition:width .25s ease;-o-transition:width .25s ease;transition:width .25s ease;display:inline-block;height:100%}

.rating-bar-container.five .bar{background:#88b131}

.rating-bar-container.four .bar{background:#99cc00}

.rating-bar-container.three .bar{background:#ffcf02}

.rating-bar-container.two .bar{background:#ff9f02}

.rating-bar-container.one .bar{background:#ff6f31}

.star-tiny{display:inline-block}

.star-tiny{height:16px;position:relative;top:-1px;width:16px;vertical-align:middle}

.star-full{background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAOCAYAAAAfSC3RAAAAdElEQVQoz2P4//8/AzmYgWKN6KC4uDgBhGF8UjQ+AGGSNEJt+w/FCXg1AhUUAHEDEB8A4g9IGj9AxUByBdg0LkBSjAsvwOpUApoX4PUjUMEFLJouEAwcSjTCFB+AYjAfr0agAgNo/AUgGRQAFTOgbpIjFQMAtcfKBD81ItYAAAAASUVORK5CYII=)

}


В шаблон fullstory.tpl вашей темы вставить
[static-rating]<div><a href="#" onclick="$('.rating-histogram_hide').toggle('blind',{},100); return false;">статистика рейтинга</a>{static-rating}</div>[/static-rating]
Другие новости по теме:
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.
Гости
Such a deep anwsre! GD&RVVF


4 мая 2015 01:21
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.