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:  * The Ansel_View_Gallery:: class wraps display of individual images.
  4:  *
  5:  * See the enclosed file COPYING for license information (GPL). If you
  6:  * did not receive this file, see http://www.horde.org/licenses/gpl.
  7:  *
  8:  * @author  Chuck Hagenbuch <chuck@horde.org>
  9:  * @author  Michael J. Rubinsky <mrubinsk@horde.org>
 10:  *
 11:  * @package Ansel
 12:  */
 13: class Ansel_View_Gallery extends Ansel_View_Ansel
 14: {
 15:     /**
 16:      *  Holds the object that does the actual rendering.
 17:      *
 18:      *  @var Ansel_View_GalleryRenderer
 19:      */
 20:     protected $_renderer;
 21: 
 22:     /**
 23:      * Const'r
 24:      *
 25:      * @see Ansel_View_Base::__construct
 26:      */
 27:     public function __construct($params = array())
 28:     {
 29:         parent::__construct($params);
 30: 
 31:         if (!empty($params['gallery_slug'])) {
 32:             $this->gallery = $this->_getGallery(null, $params['gallery_slug']);
 33:         } elseif (!empty($params['gallery_id'])) {
 34:             $this->gallery = $this->_getGallery($params['gallery_id']);
 35:         } else {
 36:             $this->gallery = $this->_getGallery();
 37:         }
 38: 
 39:         // Check user age
 40:         if (!$this->gallery->isOldEnough()) {
 41:             if (!empty($params['api'])) {
 42:                 throw new Horde_Exception('Locked galleries are not viewable via the api.');
 43:             }
 44:             $date = Ansel::getDateParameter(
 45:                 array('year' => isset($this->_params['year']) ? $this->_params['year'] : 0,
 46:                       'month' => isset($this->_params['month']) ? $this->_params['month'] : 0,
 47:                       'day' => isset($this->_params['day']) ? $this->_params['day'] : 0));
 48: 
 49:             $galleryurl = Ansel::getUrlFor('view', array_merge(
 50:                                array('gallery' => $this->gallery->id,
 51:                                      'slug' => empty($params['slug']) ? '' : $params['slug'],
 52:                                      'page' => empty($params['page']) ? 0 : $params['page'],
 53:                                      'view' => 'Gallery'),
 54:                                $date),
 55:                                true);
 56: 
 57:             $params = array('gallery' => $this->gallery->id, 'url' => $galleryurl);
 58:             Horde::url('disclamer.php')->add($params)->setRaw(true)->redirect();
 59:             exit;
 60:         }
 61: 
 62:         if ($this->gallery->hasPasswd()) {
 63:             if (!empty($params['api'])) {
 64:                 throw new Ansel_Exception(_("Locked galleries are not viewable via the api."));
 65:             }
 66:             $date = Ansel::getDateParameter(
 67:                 array('year' => isset($this->_params['year']) ? $this->_params['year'] : 0,
 68:                       'month' => isset($this->_params['month']) ? $this->_params['month'] : 0,
 69:                       'day' => isset($this->_params['day']) ? $this->_params['day'] : 0));
 70: 
 71:                 $galleryurl = Ansel::getUrlFor('view', array_merge(
 72:                     array('gallery' => $this->gallery->id,
 73:                           'slug' => empty($params['slug']) ? '' : $params['slug'],
 74:                           'page' => empty($params['page']) ? 0 : $params['page'],
 75:                           'view' => 'Gallery'),
 76:                     $date),
 77:                     true);
 78: 
 79:             $params = array('gallery' => $this->gallery->id, 'url' => $galleryurl);
 80:             Horde::url('protect.php')->add($params)->setRaw(true)->redirect();
 81:             exit;
 82:         }
 83: 
 84:         if (!$this->gallery->hasPermission($GLOBALS['registry']->getAuth(), Horde_Perms::READ)) {
 85:             throw new Horde_Exception('Access denied viewing this gallery.');
 86:         }
 87: 
 88:         // Since this is a gallery view, the resource is the gallery.
 89:         $this->resource = $this->gallery;
 90: 
 91:         // Do we have an explicit style set? If not, use the gallery's
 92:         if (!empty($this->_params['style'])) {
 93:             $style = Ansel::getStyleDefinition($this->_params['style']);
 94:         } else {
 95:             $style = $this->gallery->getStyle();
 96:         }
 97:         if (!empty($this->_params['gallery_view'])) {
 98:             $renderer = $this->_params['gallery_view'];
 99:         } else {
100:             $renderer = (!empty($style->gallery_view)) ? $style->gallery_view : 'Gallery';
101:         }
102: 
103:         // Load the helper
104:         $classname = 'Ansel_View_GalleryRenderer_' . basename($renderer);
105:         $this->_renderer = new $classname($this);
106:         $this->_renderer->init();
107:     }
108: 
109:     public function getGalleryCrumbData()
110:     {
111:         return $this->gallery->getGalleryCrumbData();
112:     }
113: 
114:     /**
115:      * Get this gallery's title.
116:      *
117:      * @return string  The gallery's title.
118:      */
119:     public function getTitle()
120:     {
121:         return $this->gallery->get('name');
122:     }
123: 
124:     /**
125:      * Return the HTML representing this view.
126:      *
127:      * @return string  The HTML.
128:      *
129:      */
130:     public function html()
131:     {
132:         return $this->_renderer->html();
133:     }
134: 
135:     public function viewType()
136:     {
137:         return 'Gallery';
138:     }
139: }
140: 
API documentation generated by ApiGen