<?php if (!defined('BASEPATH')) exit('No direct script access allowed'); 

	global $_COOKIE;
	
	// if (!isset($_SERVER['HTTP_X_REQUESTED_WITH'])) die('AJAX Error');

	mso_checkreferer(); // защищаем реферер
	
	if ( $post = mso_check_post(array('rating', 'slug')) )
	{
		// данные хранятся в куках посетителя - алгоримт тотже, что и в mso_page_view_count_first
		$name_cookies = 'maxsite_rating';
		$expire = 60 * 60 * 24 * 30; // 30 дней = 2592000 секунд
		
		if (isset($_COOKIE[$name_cookies]))	$all_slug = $_COOKIE[$name_cookies]; // значения текущего кука
			else $all_slug = ''; // нет такой куки вообще
		
		$slug = $post['slug']; // слаг страницы откуда пришел запрос
		
		$all_slug = explode('|', $all_slug); // разделим в массив
		

		if ( in_array($slug, $all_slug) ) // уже есть текущий урл - не увеличиваем счетчик
		{
			echo '<span>Вы уже голосовали!</span>';
			return; 
		}		
		
		$rating = (int) $post['rating']; // выставленная оценка
		
		if ($rating) // есть присланная оценка
		{
			// нужно обновить рейтинг
			$all_slug[] = $slug; // добавляем текущий id
			$all_slug = array_unique($all_slug); // удалим дубли на всякий пожарный
			$all_slug = implode('|', $all_slug); // соединяем обратно в строку
			$expire = time() + $expire; 
			@setcookie($name_cookies, $all_slug, $expire); // записали в куку
			
			// запишем значение в БД - нужно взять текущее
			// и вычислить среднюю на основе page_rating и page_rating_count
			
			$CI = & get_instance();
			$CI->db->select('page_rating, page_rating_count');
			$CI->db->where('page_slug', $slug);
			$CI->db->limit(1);
			
			$query = $CI->db->get('page');
		
			if ($query->num_rows() > 0)
			{
				$row = $query->row();
				$page_rating = $row->page_rating; // текущая оценка
				$page_rating_count = $row->page_rating_count; // колличество проголосовавших
				
				// средняя оценка вычисляется как $page_rating деленное на $page_rating_count
				// но в $page_rating хранится сумма всех оценок!
				$page_rating = $page_rating + $rating;
				$page_rating_count++;
				
				
				$CI->db->where('page_slug', $slug);
				$CI->db->update('page', array('page_rating'=>$page_rating, 'page_rating_count' => $page_rating_count) );
				
				// обнуление рейтинга всех записей
				// $CI->db->update('page', array('page_rating'=>0, 'page_rating_count'=>0) );
				
				$sredn = round($page_rating / $page_rating_count);
				
				echo '<span>Ваша оценка:</span> ' . $rating . '<br /><span>Средняя оценка</span>: ' . $sredn . ' из ' . $page_rating_count . ' проголосовавших'; 
			}
		}
	}
?>