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:  * A decorator around an Ansel_Gallery to allow multiple date groupings
  4:  * to access the same Ansel_Gallery instance.
  5:  *
  6:  * Copyright 2008-2012 Horde LLC (http://www.horde.org/)
  7:  *
  8:  * See the enclosed file COPYING for license information (GPL). If you
  9:  * did not receive this file, see http://www.horde.org/licenses/gpl.
 10:  *
 11:  * @author  Michael J. Rubinsky <mrubinsk@horde.org>
 12:  * @package Ansel
 13:  */
 14: class Ansel_Gallery_Decorator_Date
 15: {
 16:     /**
 17:      * The gallery mode helper
 18:      *
 19:      * @var Ansel_GalleryMode_Base object
 20:      */
 21:     protected $_modeHelper;
 22: 
 23:     /**
 24:      * The gallery we are decorating
 25:      *
 26:      * @var Ansel_Gallery
 27:      */
 28:     protected $_gallery;
 29: 
 30:     /**
 31:      * An array of image ids that this gallery contains
 32:      *
 33:      * @var array
 34:      */
 35:     protected $_images;
 36: 
 37:     /**
 38:      * The Ansel_Gallery_Date constructor.
 39:      *
 40:      * The client code (Ansel_GalleryMode_Date) needs to call the setDate()
 41:      * method on the new GalleryMode_Date object before it's used.
 42:      *
 43:      * @param Ansel_Gallery $gallery  The gallery we are decorating.
 44:      * @param array $images           An array of image ids that this grouping
 45:      *                                contains.
 46:      */
 47:     public function __construct(Ansel_Gallery $gallery, $images = array())
 48:     {
 49:         $this->_gallery = $gallery;
 50:         $this->_modeHelper = new Ansel_GalleryMode_Date($this);
 51:         $this->data = $this->_gallery->data;
 52:         $this->_images = $images;
 53:     }
 54: 
 55:     /**
 56:      * Magic method - pass thru methods to the wrapped Ansel_Gallery:: or to
 57:      * the Ansel_GalleryMode_Base:: handler.
 58:      *
 59:      * @param string $method
 60:      * @param array $args
 61:      *
 62:      * @return mixed
 63:      */
 64:     public function __call($method, $args)
 65:     {
 66:         switch ($method) {
 67:         case 'getGalleryChildren':
 68:         case 'countGalleryChildren':
 69:         case 'listImages':
 70:         case 'getImages':
 71:         case 'hasSubGalleries':
 72:         case 'getDate':
 73:         case 'setDate':
 74:             return call_user_func_array(array($this->_modeHelper, $method), $args);
 75:         default:
 76:             return call_user_func_array(array($this->_gallery, $method), $args);
 77:         }
 78:     }
 79: 
 80:     public function __get($property)
 81:     {
 82:         switch ($property) {
 83:         case 'id':
 84:             return $this->_gallery->id;
 85:         }
 86:     }
 87: 
 88:     /**
 89:      * Output the HTML for this gallery's tile.
 90:      *
 91:      * @param Ansel_Gallery $parent  The parent Ansel_Gallery object
 92:      * @param Ansel_Style $style     A gallery style to use.
 93:      * @param boolean $mini          Force the use of a mini thumbnail?
 94:      * @param array $params          Any additional parameters the Ansel_Tile
 95:      *                               object may need.
 96:      */
 97:     public function getTile($parent = null, $style = null, $mini = false, $params = array())
 98:     {
 99:         if (!is_null($parent) && is_null($style)) {
100:             $style = $parent->getStyle();
101:         }
102: 
103:         return Ansel_Tile_DateGallery::getTile($this, $style, $mini, $params);
104:     }
105: 
106:     /**
107:      * Return the most recently added images in this gallery.
108:      *
109:      * @param integer $limit  The maximum number of images to return.
110:      *
111:      * @return array  An array of Ansel_Image objects
112:      */
113:     public function getRecentImages($limit = 10)
114:     {
115:         return $GLOBALS['injector']->getInstance('Ansel_Storage')
116:             ->getRecentImages(array($this->_gallery->id), $limit);
117:     }
118: 
119:     /**
120:      * Returns the image in this gallery corresponding to the given id.
121:      *
122:      * @param integer $id  The ID of the image to retrieve.
123:      *
124:      * @return Ansel_Image  The image object corresponding to the given id.
125:      */
126:     public function getImage($id)
127:     {
128:         return $GLOBALS['injector']->getInstance('Ansel_Storage')->getImage($id);
129:     }
130: 
131:     /**
132:      * Returns the number of images in this gallery and, optionally, all
133:      * sub-galleries.
134:      *
135:      * @param boolean $subgalleries  Determines whether subgalleries should
136:      *                               be counted or not.
137:      *
138:      * @return integer number of images in this gallery
139:      */
140:     public function countImages($subgalleries = false)
141:     {
142:         return count($this->_images);
143:     }
144: 
145:     /**
146:      * Returns the key image for this gallery.
147:      *
148:      * @param Ansel_Style $style  Force the use of this style, if it's available
149:      *
150:      * @return mixed  The image_id of the key image or false.
151:      */
152:     public function getKeyImage($style = null)
153:     {
154:         if (count($this->_images)) {
155:             return reset($this->_images);
156:         } else {
157:             return 0;
158:         }
159:     }
160: 
161:     /**
162:      * Return a count of the number of children this share has
163:      *
164:      * @param string  $user       The user to use for checking perms
165:      * @param integer $perm       A Horde_Perms::* constant
166:      * @param boolean $allLevels  Count grandchildren or just children
167:      *
168:      * @return integer  The number of child shares
169:      */
170:     public function countChildren($user, $perm = Horde_Perms::SHOW, $allLevels = true)
171:     {
172:         return $this->_gallery->getShareOb()->countShares($user, $perm, null, $this, $allLevels);
173:     }
174: 
175:     /**
176:      * Returns a child's direct parent
177:      *
178:      * @return Ansel_Gallery  The direct parent Horde_Share_Object
179:      */
180:     public function getParent()
181:     {
182:         return $this->_gallery->getParent($this);
183:     }
184: 
185:     /**
186:      * Returns all image ids that this grouping contains.
187:      *
188:      * @array
189:      */
190:     public function getImagesByGrouping()
191:     {
192:         return $this->_images;
193:     }
194: }
195: 
API documentation generated by ApiGen