* @version $Revision: 1087 $ */ class TagsCallbackView extends GalleryView { /** * @see GalleryView::isImmediate */ function isImmediate() { return true; } /** * @see GalleryView::isControllerLike */ function isControllerLike() { return true; } /** * @see GalleryView::renderImmediate */ function renderImmediate($status, $error) { list ($itemId, $command, $tagName) = GalleryUtilities::getRequestVariables('itemId', 'command', 'tagName'); $tagName = trim($tagName); if (!headers_sent()) { header('Content-type: text/plain; charset=UTF-8'); } switch ($command) { case 'addTag': if (!empty($tagName)) { $ret = TagsHelper::assignTag($itemId, $tagName); if ($ret) { return $ret; } } break; case 'delTag': if (!empty($tagName)) { $ret = TagsHelper::unassignTag($itemId, $tagName); if ($ret) { return $ret; } } break; case 'newTag': if (!empty($tagName)) { list ($ret, $tagList) = TagsHelper::splitTags($tagName); if ($ret) { return $ret; } foreach ($tagList as $tag) { $ret = TagsHelper::addNewTag($tag); if ($ret) { return $ret; } $ret = TagsHelper::assignTag($itemId, $tag); if ($ret) { return $ret; } } } break; case 'getTagList': $prefix = GalleryUtilities::getRequestVariables('prefix'); list ($ret, $tagList) = TagsHelper::getTaglist($prefix); if (!$ret) { /* * AutoComplete's handling of HTML entities has been fixed in r16352. Calling * unsanitize() doesn't do the same but is a workaround for older G2 versions. */ if (!GalleryUtilities::isCompatibleWithApi( array(7, 29), GalleryCoreApi::getApiVersion())) { /** @todo Remove this check / call on the next major API change. */ GalleryUtilities::unsanitizeInputValues($tagList, false); } print implode("\n", $tagList); } /* @todo Log Error when debug is on */ break; default: /* @note Not sure if this should a debug log instead */ return GalleryCoreApi::error(ERROR_BAD_PARAMETER); } return null; } } ?>