Данный модификация позволяет вывести пользователю статистику рейтинга данной новости.Выводит процентную шкалу баллов голосовавших .
Приступим к установке:
Выполняем 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[] = ' '.$i.' '.$num.' ';
}
$rated = 'Статистика '.implode("n",array_reverse($staticrate)).'';}
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]статистика рейтинга{static-rating}[/static-rating]