Overview

Packages

  • Ansel
  • None

Classes

  • Ansel
  • Ansel_Ajax_Application
  • Ansel_Ajax_Imple_EditCaption
  • Ansel_Ajax_Imple_EditFaces
  • Ansel_Ajax_Imple_EditGalleryFaces
  • Ansel_Ajax_Imple_Embed
  • Ansel_Ajax_Imple_GallerySlugCheck
  • Ansel_Ajax_Imple_ImageSaveGeotag
  • Ansel_Ajax_Imple_LocationAutoCompleter
  • Ansel_Ajax_Imple_MapLayerSelect
  • Ansel_Ajax_Imple_TagActions
  • Ansel_Ajax_Imple_ToggleGalleryActions
  • Ansel_Ajax_Imple_ToggleOtherGalleries
  • Ansel_Ajax_Imple_UploadNotification
  • Ansel_Api
  • Ansel_Exception
  • Ansel_Faces
  • Ansel_Faces_Base
  • Ansel_Faces_Facedetect
  • Ansel_Faces_User
  • Ansel_Factory_Faces
  • Ansel_Factory_Storage
  • Ansel_Factory_Styles
  • Ansel_Form_Ecard
  • Ansel_Form_Image
  • Ansel_Form_ImageDate
  • Ansel_Form_Upload
  • Ansel_Gallery
  • Ansel_Gallery_Decorator_Date
  • Ansel_GalleryMode_Base
  • Ansel_GalleryMode_Date
  • Ansel_GalleryMode_Normal
  • Ansel_Image
  • Ansel_ImageGenerator
  • Ansel_ImageGenerator_Mini
  • Ansel_ImageGenerator_PolaroidThumb
  • Ansel_ImageGenerator_PolaroidThumbStack
  • Ansel_ImageGenerator_RoundedThumb
  • Ansel_ImageGenerator_RoundedThumbStack
  • Ansel_ImageGenerator_Screen
  • Ansel_ImageGenerator_ShadowThumb
  • Ansel_ImageGenerator_ShadowThumbStack
  • Ansel_ImageGenerator_SquareThumb
  • Ansel_ImageGenerator_Thumb
  • Ansel_LoginTasks_SystemTask_Upgrade
  • Ansel_Report
  • Ansel_Report_letter
  • Ansel_Report_mail
  • Ansel_Report_tickets
  • Ansel_Search
  • Ansel_Search_exif
  • Ansel_Search_Tag
  • Ansel_Storage
  • Ansel_Style
  • Ansel_Tagger
  • Ansel_Test
  • Ansel_Tile_DateGallery
  • Ansel_Tile_Gallery
  • Ansel_Tile_Image
  • Ansel_View_Ansel
  • Ansel_View_Base
  • Ansel_View_EmbeddedRenderer_GalleryLink
  • Ansel_View_EmbeddedRenderer_Mini
  • Ansel_View_EmbeddedRenderer_Slideshow
  • Ansel_View_Gallery
  • Ansel_View_GalleryProperties
  • Ansel_View_GalleryRenderer_Base
  • Ansel_View_GalleryRenderer_Gallery
  • Ansel_View_GalleryRenderer_GalleryLightbox
  • Ansel_View_Image
  • Ansel_View_List
  • Ansel_View_Results
  • Ansel_View_Slideshow
  • Ansel_View_Upload
  • Ansel_Widget
  • Ansel_Widget_Actions
  • Ansel_Widget_Base
  • Ansel_Widget_GalleryFaces
  • Ansel_Widget_Geotag
  • Ansel_Widget_ImageFaces
  • Ansel_Widget_Links
  • Ansel_Widget_OtherGalleries
  • Ansel_Widget_OwnerFaces
  • Ansel_Widget_SimilarPhotos
  • Ansel_Widget_Tags
  • Ansel_XPPublisher
  • Overview
  • Package
  • Class
  • Tree
  1: <?php
  2: /**
  3:  * Ansel_Ajax_Imple_EditFaces:: class for performing Ajax discovery and editing
  4:  * of image faces
  5:  *
  6:  * Copyright 2008-2012 Horde LLC (http://www.horde.org/)
  7:  *
  8:  * @author Duck <duck@obala.net>
  9:  * @author Michael J. Rubinsky <mrubinsk@horde.org>
 10:  *
 11:  * @package Ansel
 12:  */
 13: class Ansel_Ajax_Imple_EditFaces extends Horde_Core_Ajax_Imple
 14: {
 15:     /**
 16:      * Attach these actions to the view
 17:      *
 18:      */
 19:     public function attach()
 20:     {
 21:         Horde::addScriptFile('editfaces.js');
 22: 
 23:         $url = $this->_getUrl('EditFaces', 'ansel', array('url' => rawurlencode($this->_params['selfUrl'])));
 24:         $js = array();
 25:         $js[] = "Ansel.ajax['editFaces'] = {'url':'" . $url . "', text: {loading:'" . _("Loading...") . "'}};";
 26:         $js[] = "Event.observe('" . $this->_params['domid'] . "', 'click', function(event) {Ansel.doFaceEdit(" . $this->_params['image_id'] . ");Event.stop(event)});";
 27: 
 28:         Horde::addInlineScript($js, 'dom');
 29:     }
 30: 
 31:     function handle($args, $post)
 32:     {
 33:         if ($GLOBALS['registry']->getAuth()) {
 34:             $action = $args['action'];
 35:             $image_id = (int)$post['image'];
 36:             $reload = empty($post['reload']) ? 0 : $post['reload'];
 37: 
 38:             if (empty($action)) {
 39:                 return array('response' => 0);
 40:             }
 41: 
 42:             $faces = $GLOBALS['injector']->getInstance('Ansel_Faces');
 43:             switch($action) {
 44:             case 'process':
 45:                 // process - detects all faces in the image.
 46:                 $name = '';
 47:                 $autocreate = true;
 48:                 $results = $faces->getImageFacesData($image_id);
 49:                 // Attempt to get faces from the picture if we don't already have results,
 50:                 // or if we were asked to explicitly try again.
 51:                 if (($reload || empty($results))) {
 52:                     $image = $GLOBALS['injector']->getInstance('Ansel_Storage')->getImage($image_id);
 53:                     $image->createView('screen');
 54:                     $results = $faces->getFromPicture($image_id, $autocreate);
 55:                 }
 56:                 if (!empty($results)) {
 57:                     $customurl = Horde::url('faces/custom.php');
 58:                     $url = (!empty($args['url']) ? urldecode($args['url']) : '');
 59:                     Horde::startBuffer();
 60:                     include ANSEL_TEMPLATES . '/faces/image.inc';
 61:                     $html = Horde::endBuffer();
 62:                     return array('response' => 1,
 63:                                  'message' => $html);
 64:                 } else {
 65:                     return array('response' => 1,
 66:                                  'message' => _("No faces found"));
 67:                 }
 68:                 break;
 69: 
 70:             case 'delete':
 71:                 // delete - deletes a single face from an image.
 72:                 $face_id = (int)$post['face'];
 73:                 $image = $GLOBALS['injector']->getInstance('Ansel_Storage')->getImage($image_id);
 74:                 $gallery = $GLOBALS['injector']->getInstance('Ansel_Storage')->getGallery($image->gallery);
 75:                 if (!$gallery->hasPermission($GLOBALS['registry']->getAuth(), Horde_Perms::EDIT)) {
 76:                     throw new Horde_Exception('Access denied editing the photo.');
 77:                 }
 78: 
 79:                 Ansel_Faces::delete($image, $face_id);
 80:                 break;
 81: 
 82:             case 'setname':
 83:                 // setname - sets the name of a single image.
 84:                 $face_id = (int)$post['face'];
 85:                 if (!$face_id) {
 86:                     return array('response' => 0);
 87:                 }
 88: 
 89:                 $name = $post['facename'];
 90:                 $image = &$GLOBALS['injector']->getInstance('Ansel_Storage')->getImage($image_id);
 91:                 $gallery = &$GLOBALS['injector']->getInstance('Ansel_Storage')->getGallery($image->gallery);
 92:                 if (!$gallery->hasPermission($GLOBALS['registry']->getAuth(), Horde_Perms::EDIT)) {
 93:                     throw new Horde_Exception('You are not allowed to edit this photo');
 94:                 }
 95: 
 96:                 $faces = $GLOBALS['injector']->getInstance('Ansel_Faces');
 97:                 $result = $faces->setName($face_id, $name);
 98:                 return array('response' => 1,
 99:                              'message' => Ansel_Faces::getFaceTile($face_id));
100:                 break;
101:             }
102:         }
103:     }
104: 
105: }
106: 
API documentation generated by ApiGen