<?php
	require_once(dirname(__FILE__).DIRECTORY_SEPARATOR.'class.api.php');

	class API_RATING extends API
	{
		var $rateid = 0;
		var $questionid = 0;
		var $ip = '';
		var $ratedat = '';

		var $fields = array (
			'rateid',
			'questionid',
			'ip',
			'ratedat',
			'ratingemail',
			'ratingmessage'
		);

		var $pk = 'rateid';

		/**
		* create
		* create a new rating in the database
		*
		* @return bool was the creation successful ?
		*/
		function create()
		{
			$_POST['ratedat'] = date('Y-m-d H:i:s');
			$_POST['ip'] = $_SERVER['REMOTE_ADDR'];
			return parent::create();
		}
		
		/**
		* multiDelete
		* Delete multiple rating ids. Update each associated question.
		*
		* @return bool was the delete successful?
		*/
		function multiDelete($ids) {
		
			//Get the question ids
			$objArray = $this->loadMulti($ids);

			foreach ($objArray as $rateObj) {
				$questionObj = new API_QUESTION(); 
				$questionObj->load($rateObj->questionid);
				
				$questionObj->negvotes--;
				$questionObj->score -= SCORE_MODIFIER;
				
				$questionObj->updateField("negvotes", $questionObj->negvotes);
				$questionObj->updateField("score", $questionObj->score);
			}			
			
			//Delete from the main table
			if (!parent::multiDelete($ids)) {
				return false;
			}
			
			return true;
		}
		
		/**
		* validate_rateid
		*
		* Ensure the rate id is a pos int
		*
		* @param string $var
		*
		* @return bool
		*/
		function validate_rateid($var)
		{
			return $this->is_positive_int($var);
		}

		/**
		* validate_questionid
		*
		* Ensure the questionid is pos int
		*
		* @return bool
		*/
		function validate_questionid($var)
		{
			return $this->is_positive_int($var);
		}

		/**
		* validate_ip
		*
		* Ensure the ip is an ipv4 address
		*
		* @param $var the ip to validate
		*
		* @return bool
		*/
		function validate_ip($var)
		{
			return $this->is_ip($var);
		}

		/**
		* validate_ratedat
		*
		* Ensure the rated at date is in the standard date format
		*
		* @param string $var
		*
		* @return bool
		*/
		function validate_ratedat($var)
		{
			return $this->is_standard_date($var);
		}
		
		/**
		* validate_email
		*
		* Ensure the email address for this rate entry is valid.
		*
		* @param string $var
		*
		* @return bool
		*/
		function validate_ratingemail(&$var)
		{
			if ((trim($var) == "") || (trim($var) == GetLang("WhyUnhelpfulEmail"))) {
				$var = "";
				return true;
			} else {
				return is_email_address($var);
			}
		}	
		
		/**
		* validate_ratingmessage
		*
		* Ensure there is a message and its not blank.
		*
		* @param string $var
		*
		* @return bool
		*/
		function validate_ratingmessage(&$var)
		{
			if (strlen(trim($var)) > 250) {
				$var = substr(trim($var),0,250);
				return true;
			} else {
				return (trim($var) != "");
			}
		}
	}

?>
