Файл: news/includes/view.php
Строк: 253
<?php
/*
////////////////////////////////////////////////////////////////////////////////
// JohnCMS //
// Официальный сайт сайт проекта: http://johncms.com //
// Дополнительный сайт поддержки: http://gazenwagen.com //
////////////////////////////////////////////////////////////////////////////////
// JohnCMS core team: //
// Евгений Рябинин aka john77 john77@johncms.com //
// Олег Касьянов aka AlkatraZ alkatraz@johncms.com //
// //
// Информацию о версиях смотрите в прилагаемом файле version.txt //
////////////////////////////////////////////////////////////////////////////////
*/
defined('_IN_JOHNCMS') or die('Error: restricted access');
if(empty($_SESSION['error']))
$_SESSION['error'] = '';
//Функция отображения рейтинга
function rating($id, $type = 0) {
if(!$id)
return '<img class="ico" src="../images/stars/stars_5.gif" alt="0" />';
$total = mysql_result(mysql_query("SELECT COUNT(*) FROM `cms_news_rating` WHERE `news`='$id'"), 0);
if($total) {
$query = mysql_query("SELECT `golos`, COUNT(*) as `count` FROM `cms_news_rating` WHERE `news`='$id' GROUP BY `golos`");
$array['plus'] = 0;
$array['minus'] = 0;
while (($row = mysql_fetch_assoc($query)) !== false) {
if(isset($row['golos']) && $row['golos'] == 1) $array['plus'] = $row['count'];
else if(isset($row['golos']) && $row['golos'] == 2) $array['minus'] = $row['count'];
else {
$array['plus'] = 0;
$array['minus'] = 0;
}
}
if($array['plus'] > $array['minus']) {
if($array['minus'] == 0) {
if($array['plus'] == 1) $count = 60;
else if($array['plus'] == 2) $count = 60;
else if($array['plus'] == 3) $count = 60;
else if($array['plus'] == 4) $count = 70;
else if($array['plus'] == 5) $count = 70;
else if($array['plus'] == 6) $count = 80;
else if($array['plus'] == 7) $count = 80;
else if($array['plus'] == 8) $count = 90;
else if($array['plus'] == 9) $count = 90;
else if($array['plus'] >= 10) $count = 100;
} else {
$count = round($array['minus'] / $array['plus'], 1) * 100;
if($count == 0) $count = 100;
else $count = (100 - $count);
}
} else if($array['plus'] < $array['minus']) {
if($array['plus'] == 0) {
if($array['minus'] == 1) $count = 40;
else if($array['minus'] == 2) $count = 40;
else if($array['minus'] == 3) $count = 40;
else if($array['minus'] == 4) $count = 30;
else if($array['minus'] == 5) $count = 30;
else if($array['minus'] == 6) $count = 20;
else if($array['minus'] == 7) $count = 20;
else if($array['minus'] == 8) $count = 10;
else if($array['minus'] == 9) $count = 10;
else if($array['minus'] >= 10) $count = 0;
} else {
$pr = (round($array['plus'] / $array['minus'], 1) * 100);
$count = $pr;
}
} else
$count = 50;
$percent = $count;
if($percent == 100) $stars = 10;
else if($percent < 100 && $percent >= 90) $stars = 9;
else if($percent < 100 && $percent >= 90) $stars = 9;
else if($percent < 90 && $percent >= 80) $stars = 8;
else if($percent < 80 && $percent >= 70) $stars = 7;
else if($percent < 70 && $percent >= 60) $stars = 6;
else if($percent < 60 && $percent >= 50) $stars = 5;
else if($percent < 50 && $percent >= 40) $stars = 4;
else if($percent < 40 && $percent >= 30) $stars = 3;
else if($percent < 30 && $percent >= 20) $stars = 2;
else if($percent < 20 && $percent >= 10) $stars = 2;
else if($percent < 10 && $percent > 0) $stars = 1;
else if($percent == 0) $stars = 0;
if($type == 0) return '<img class="ico" src="../images/stars/stars_'.$stars.'.gif" alt="•" />';
else return $percent;
} else return '<img class="ico" src="../images/stars/stars_5.gif" alt="•" />';
}
if($id) {
$query = mysql_query("SELECT `cms_news`.*, `cms_news_cat`.`name` as `catname`, `cms_news_cat`.`id` as `catid` FROM `cms_news` LEFT JOIN `cms_news_cat` ON `cms_news`.`refid`=`cms_news_cat`.`id` WHERE `cms_news`.`id`='$id'".($rights < 7 ? " AND `cms_news`.`time`<='" . time() . "'":"")." LIMIT 1;");
if (mysql_num_rows($query)) {
//Показываем новость
$res1 = mysql_fetch_assoc($query);
$textl = $lng['news'] . ' | ' . htmlentities($res1['name'], ENT_QUOTES, 'UTF-8');
require_once('../incfiles/head.php');
echo '<div class="phdr"><h3>' . htmlentities($res1['name'], ENT_QUOTES, 'UTF-8') . '</h3></div>';
echo '<div class="list1">';
//Выводим картинку
if(file_exists('../files/news/news_' . $id . '.png') !== false)
echo '<img style="float: left; margin: 5px 6px 2px 2px; border: 0px;" src="../files/news/news_' . $id . '.png" alt=""/>';
$text = functions::checkout($res1['text'], 1, 1);
if ($set_user['smileys'])
$text = functions::smileys($text);
echo $text;
echo '<div style="clear:both;"></div></div>';
//Обрабатываем голосование
if(isset($_POST['plus_x']) || isset($_POST['plus_y'])) {
if($res1['user_id'] == $user_id) {
$_SESSION['error'] = '<div class="list1 red">' . $lng_news['my_vote'] . '!</div>';
} else {
$plus = mysql_result(mysql_query("SELECT COUNT(*) FROM `cms_news_rating` WHERE `news`='$id' AND `user_id`='$user_id' LIMIT 1;"), 0);
if($plus) {
$_SESSION['error'] = '<div class="list1 red">' . $lng_news['already_voted'] . '!</div>';
} else {
mysql_query("INSERT INTO `cms_news_rating` SET
`news`='$id',
`user_id`='$user_id', `golos`='1';");
$_SESSION['error'] = '<div class="list1 green">' . $lng_news['ok_vote'] . '!</div>';
}
}
Header('Location: index.php?act=view&id=' . $id);
exit;
} else if(isset($_POST['minus_x']) || isset($_POST['minus_y'])) {
if($res1['user_id'] == $user_id) {
$_SESSION['error'] = '<div class="list1 red">' . $lng_news['my_vote'] . '!</div>';
} else {
$plus = mysql_result(mysql_query("SELECT COUNT(*) FROM `cms_news_rating` WHERE `news`='$id' AND `user_id`='$user_id' LIMIT 1;"), 0);
if($plus) {
$_SESSION['error'] = '<div class="list1 red">' . $lng_news['already_voted'] . '!</div>';
} else {
mysql_query("INSERT INTO `cms_news_rating` SET
`news`='$id',
`user_id`='$user_id', `golos`='2';");
$_SESSION['error'] = '<div class="list1 green">' . $lng_news['ok_vote'] . '!</div>';
}
}
Header('Location: index.php?act=view&id=' . $id);
exit;
}
//Сообщение об оставленном голосе
echo $_SESSION['error'];
//Выводим автора новости
$us = mysql_query("SELECT `id`, `name` FROM `users` WHERE `id` = '{$res1['user_id']}'");
if (mysql_num_rows($us)) {
$rowuse = mysql_fetch_assoc($us);
$name_use = $user_id ? '<a href="../users/profile.php?user=' . $rowuse['id'] . '">' . $rowuse['name'] . '</a>' : $rowuse['name'];
} else {
$name_use = $lng['guest'];
}
//
echo '<div class="list2"><span class="underline">' . $lng['rating'] . ':</span> ' . rating($id) . '<br />
'.($user_id ? '<form action="index.php?act=view&id=' . $id . '" method="post"><div>
<input style="cursor:none; border: 0px; padding: 0;padding-top: 2px; margin: 0;" type="image" name="plus" value="15" src="../images/like_yes1.gif" alt="' . $lng_news['like'] . '"/><input class="rate" style="cursor:none; border: 0px; margin: 0; padding: 0;padding-top: 2px;" type="image" src="../images/like_no1.gif" name="minus" alt="-"/>
</div></form>':'<img class="ico" src="../images/like_yes1.gif" alt="+" /><img class="ico" src="../images/like_no1.gif" alt="-" /><br />').'
</div><div class="gmenu">
' . $lng_news['posted'] . ': ' . $name_use . '<br />
' . $lng_news['time_posted'] . ': ' . date('d.m.o / H:i', $res1['time'] + (core::$system_set['timeshift'] + core::$user_set['timeshift']) * 3600) . '<br />
'.($res1['time'] > time()?'<div class="func">' . $lng_news['begin_show_through'] . ': ' . timer($res1['time'] - time() + (core::$system_set['timeshift'] * 3600)) . '</div>':'').'
<a href="index.php?act=comments&id=' . $id . '">' . $lng['comments'] . '</a> (' . mysql_result(mysql_query("SELECT COUNT(*) FROM `cms_news_comments` WHERE `refid`='$id'"), 0) . ')
</div>
' . ($rights >= 7 ? '<div class="menu"><div class="func">
<a href="../panel/index.php?act=news&mod=newsedit&id=' . $id . '">' . $lng['edit'] . '</a><br />
<a href="../panel/index.php?act=news&mod=delnews&id=' . $id . '">' . $lng['delete'] . '</a><br />
</div></div>':'') . '
<div class="bmenu"><a href="index.php?id=' . $res1['catid'] . '">' . htmlentities($res1['catname'], ENT_QUOTES, 'UTF-8') . '</a></div>';
} else {
$textl = $lng['news'];
require_once('../incfiles/head.php');
echo functions::display_error($lng_news['news_does_not_exist']);
}
} else {
$textl = $lng['news'];
require_once('../incfiles/head.php');
echo functions::display_error($lng_news['news_is_not_chose']);
}
unset($_SESSION['error']);