<?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']); } // test for empty tag if ($user_id == 0 && empty($word)) { 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; } // 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(); $tagger = get_loggedin_user(); //Save annotation $annotation_id = $image->annotate('phototag', serialize($tag), $access_id, $owner_id); if ($annotation_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); // also add this to the river - subject is image, object is the tagged user add_to_river('river/object/image/tag', 'tag', $tagger->guid, $user_id, $access_id, 0, $annotation_id); // notify user of tagging as long as not self if ($owner_id != $user_id) { notify_user( $user_id, $owner_id, elgg_echo('tidypics:tag:subject'), sprintf( elgg_echo('tidypics:tag:body'), $image->title, $tagger->name, $image->getURL() ) ); } } } system_message(elgg_echo("tidypics:phototagging:success")); } forward($_SERVER['HTTP_REFERER']);