<?php	

namespace app\models;
use app\models\User;

class Post extends \lithium\data\Model {

 public $belongsTo = array('User');

/* Post model $_Schema:
 * _id => MongoID
 * user_id -> mongoID of the user that posted it
 * datetime -> mongodate of when the post was posted
 * body -> the text of the post
 * level -> access level required to see the post
 * comments[] => list of comments 
 * type -> the type of post, IE picture text, chat etc
 */ 

 	/**
 	 * Parses an array of words to find mentions and topic tags then converts them
 	 * @param Entitiy $entity Not used, but otherwise lithium will pass entity into words which makes the program blowup
 	 * @param Mixed $input, either a string, or a spilt array of words (ie an exploded string)
 	 * @return String a string with the topics and mentions converted
 	 */ 
 	public function parse($entity, $input)
 	{

 		//If $input is an array, set words to it otherwise, explode it. 
 		$words = (is_array($input)) ? $input : explode(" ", $input);

 		//Count the number of words 
 		$count = count($words);


 		//For each word in the array
		for ($i = 0; $i < $count; $i++)
		{
			//If the word begins with a '@' convert it to a mention
			if ($words[$i][0] == '@')
			{
				$words[$i] = $this->convertToMention($words[$i]);
			}
			//Else if the word beings with a '#' Convert to topic link
			else if ($words[$i][0] == '#')
			{
				$words[$i] = $this->convertToTopic($words[$i]);
			}
		}
		return implode(" ", $words);	
 	}
	
	//TODO: Some sort of security check to make sure 
	//That the user is ok with receiving message
	public function directMessage($entity, $to)
	{
		//Get the user the message is to
		$user = User::find('first', array('conditions' => array('username' => $to)));

		//If find() returned a user, 
		if ($user)
		{
			//Add the post to their feed,
			var_dump($entity->data());
			$entity->save();
			return $entity->store($user); 
		}
		//If the user wasn't found
		return false;
	}

   /**
	* Converts a string with a topic tag(eg: #madoka) to clickable link to the topic eg <a class="topic" href"/topic/madoka>#madoka</a>
	* @param String $input The string with topic tag
	* @return String the string with href
	*/
	public function convertToTopic($input)
	{
		//Remove the # character from the beginning 
		$output = substr($input, 1);
		
		//Formats the string and returns it.
		return "<a class=\"topic\" href=\"/topics/view/$output\">$input</a>";
	}	

	/**
	* converts a mention (eg: @bob) to a clickable link to the user's profile eg <a class="topic" href"/topic/madoka>#madoka</a>
	* @param String $input The string with topic tag
	* @return String the string with href
	*/
	public function convertToMention($input)
	{
		//Remove the @ character from the beginning 
		$output = substr($input, 1);

		//Formats the string and returns it.
		return "<a class=\"mention\" href=\"/profile/view/$output\">$input</a>";
	}
}
?>