<?php
	/**
	 * Tidypics Add Photo Tag
	 * 
	 */

	gatekeeper();
	action_gatekeeper();

	$coordinates_str = get_input('coordinates');

	$user_id = get_input('user_id');
	$image_guid = get_input('image_guid');
	$word = get_input('word');

	if ($image_guid == 0) {
		register_error(elgg_echo("tidypics:phototagging:error"));
		forward($_SERVER['HTTP_REFERER']);
	}

	$image = get_entity($image_guid);
	if (!$image)
	{
		register_error(elgg_echo("tidypics:phototagging:error"));
		forward($_SERVER['HTTP_REFERER']);
	}

	$new_word_tag = false;
	if ($user_id != 0) {
		$relationships_type = 'user';
		$value = $user_id;
	} else {
		$relationships_type = 'word';
		$value = $word;
		
		// check to see if the photo has this tag and add if not
		if (!is_array($image->tags)) {
			if ($image->tags != $word) {
				$new_word_tag = true;
				$tagarray = $image->tags . ',' . $word;
				$tagarray = string_to_tag_array($tagarray);
			}
		} else {
			if (!in_array($word, $image->tags)) {
				$new_word_tag = true;
				$tagarray = $image->tags;
				$tagarray[] = $word;
			}
		}
	}
	
	// add new tag now so it is available in search
	if ($new_word_tag) {
		$image->clearMetadata('tags');
		$image->tags = $tagarray;
	}

	// test for empty tag

	// create string for javascript tag object
	$tag->coords = $coordinates_str;
	$tag->type   = $relationships_type;
	$tag->value  = $value;

	$access_id = $image->getAccessID();
	$owner_id = get_loggedin_userid();

	//Save annotation
	if ($image->annotate('phototag', serialize($tag), $access_id, $owner_id)) {
		// if tag is a user id, add relationship for searching (find all images with user x)
		if ($relationships_type === 'user') {
			if (!check_entity_relationship($user_id, 'phototag', $image_guid))
				add_entity_relationship($user_id, 'phototag', $image_guid);
		}
	
		system_message(elgg_echo("tidypics:phototagging:success"));
	}


	forward($_SERVER['HTTP_REFERER']);

?>