countImages() public méthode

Returns the number of images in this gallery and, optionally, all sub-galleries.
public countImages ( boolean $subgalleries = false ) : integer
$subgalleries boolean Determines whether subgalleries should be counted or not.
Résultat integer number of images in this gallery
Exemple #1
0
 /**
  * @param boolean $retry
  *
  * @return Ansel_Gallery
  */
 private function _getGallery($retry = false)
 {
     // Make sure we haven't already selected a gallery.
     if ($this->_gallery instanceof Ansel_Gallery) {
         return $this->_gallery;
     }
     // Get the gallery object and cache it.
     if (isset($this->_params['gallery']) && $this->_params['gallery'] != '__random') {
         $this->_gallery = $GLOBALS['injector']->getInstance('Ansel_Storage')->getGallery($this->_params['gallery']);
     } else {
         $this->_gallery = $GLOBALS['injector']->getInstance('Ansel_Storage')->getRandomGallery();
     }
     // Protect at least a little bit against getting an empty gallery. We
     // can't just loop until we get one with images since it's possible we
     // actually don't *have* any with images yet.
     if ($this->_params['gallery'] == '__random' && !empty($this->_gallery) && !$this->_gallery->countImages() && $this->_gallery->hasSubGalleries() && !$retry) {
         $this->_gallery = null;
         $this->_gallery = $this->_getGallery(true);
     }
     if (empty($this->_gallery)) {
         throw new Horde_Exception_NotFound(_("Gallery does not exist."));
     } elseif (!$this->_gallery->hasPermission($GLOBALS['registry']->getAuth(), Horde_Perms::SHOW) || !$this->_gallery->isOldEnough() || $this->_gallery->hasPasswd()) {
         throw new Horde_Exception_PermissionDenied(_("Access denied viewing this gallery."));
     }
     // Return the gallery.
     return $this->_gallery;
 }
Exemple #2
0
    /**
     * Return javascript needed to initialize the carousel.
     *
     * @return string  The javascript code.
     */
    protected function _doCarouselSetup()
    {
        if ($this->_haveCarousel) {
            return '';
        }
        $this->_haveCarousel = true;
        $previewUrl = Horde::url('img/upload_preview.php')->add('gallery', $this->_gallery->id);
        $js = <<<EOT
           Ajax.Response.prototype._getHeaderJSON = function() {
            var nbElements = {$this->_gallery->countImages()};
            var from = this.request.parameters.from;
            var to   = Math.min(nbElements, this.request.parameters.to);
            return {html: this.responseText, from: from, to: to, more: to != nbElements};
        }

        function runCarousel() {
            updateCarouselSize();
            carousel = new UI.Ajax.Carousel("horizontal_carousel", { url: "{$previewUrl->toString(true)}", elementSize: 115 })
                .observe("request:started", function() {
                    \$('spinner').show().morph("opacity:0.8", {duration:0.5});
                })
                .observe("request:ended", function() {
                    \$('spinner').morph("opacity:0", {duration:0.5, afterFinish: function(obj) { obj.element.hide(); }});
                });
        }
        function resized() {
            updateCarouselSize();
            if (carousel) {
                carousel.updateSize();
            }
        }
        function updateCarouselSize() {
            var dim = \$('anseluploader').getDimensions();
            \$("horizontal_carousel").style.width = dim.width + "px";
            \$\$("#horizontal_carousel .container").first().style.width =  (dim.width - 50) + "px";
        }

        Event.observe(window, 'resize', resized);
        carousel = null;
        runCarousel();
EOT;
        return $js;
    }
Exemple #3
0
 /**
  * Outputs the html for a gallery tile.
  *
  * @param Ansel_Gallery $gallery  The Ansel_Gallery we are displaying.
  * @param Ansel_Style $style      A style object.
  * @param boolean $mini           Force the use of a mini thumbail?
  * @param array $params           An array containing additional parameters.
  *                                Currently, gallery_view_url and
  *                                image_view_url are used to override the
  *                                respective urls. %g and %i are replaced
  *                                with image id and gallery id, respectively
  *
  *
  * @return  Outputs the HTML for the tile.
  */
 public static function getTile(Ansel_Gallery $gallery, Ansel_Style $style = null, $mini = false, array $params = array())
 {
     global $prefs, $registry, $injector;
     // Create view
     $view = $injector->createInstance('Horde_View');
     $view->addTemplatePath(ANSEL_TEMPLATES . '/tile');
     $view->gallery = $gallery;
     $view_type = Horde_Util::getFormData('view', 'Gallery');
     $haveSearch = $view_type == 'Results' ? 1 : 0;
     if ($view_type == 'Results' || $view_type == 'List' || basename($_SERVER['PHP_SELF']) == 'index.php' && $prefs->getValue('defaultview') == 'galleries') {
         $showOwner = true;
     } else {
         $showOwner = false;
     }
     // Use the galleries style if not explicitly passed.
     if (is_null($style)) {
         $style = $gallery->getStyle();
     }
     // If the gallery has subgalleries, and no images, use one of the
     // subgalleries' stack image. hasSubGalleries already takes
     // permissions into account.
     if ($gallery->hasPermission($registry->getAuth(), Horde_Perms::READ) && !$gallery->countImages() && $gallery->hasSubGalleries()) {
         try {
             $galleries = $injector->getInstance('Ansel_Storage')->listGalleries(array('parent' => $gallery->id, 'all_levels' => false, 'perm' => Horde_Perms::READ));
             foreach ($galleries as $sgallery) {
                 if ($default_img = $sgallery->getKeyImage($style)) {
                     $view->gallery_image = Ansel::getImageUrl($default_img, $mini ? 'mini' : 'thumb', true, $style);
                 }
             }
         } catch (Ansel_Exception $e) {
         }
     } elseif ($gallery->hasPermission($registry->getAuth(), Horde_Perms::READ) && $gallery->countImages()) {
         $thumbstyle = $mini ? 'mini' : 'thumb';
         if ($gallery->hasPasswd()) {
             $view->gallery_image = Horde_Themes::img('gallery-locked.png');
         } else {
             $view->gallery_image = Ansel::getImageUrl($gallery->getKeyImage($style), $thumbstyle, true, $style);
         }
     }
     // If no image at this point, we can't get one.
     if (empty($view->gallery_image)) {
         $view->gallery_image = Horde_Themes::img('thumb-error.png');
     }
     // Check for being called via the api and generate correct view links
     if (!isset($params['gallery_view_url'])) {
         $view->view_link = Ansel::getUrlFor('view', array('gallery' => $gallery->id, 'view' => 'Gallery', 'havesearch' => $haveSearch, 'slug' => $gallery->get('slug')));
     } else {
         $view->view_link = new Horde_Url(str_replace(array('%g', '%s'), array($gallery->id, $gallery->get('slug')), urldecode($params['gallery_view_url'])));
     }
     if ($gallery->hasPermission($registry->getAuth(), Horde_Perms::EDIT) && !$mini) {
         $view->properties_link = Horde::url('gallery.php', true)->add(array('gallery' => $gallery->id, 'actionID' => 'modify', 'havesearch' => $haveSearch, 'url' => Horde::selfUrl(true, false, true)));
     }
     if ($showOwner && !$mini && $registry->getAuth() != $gallery->get('owner')) {
         $view->owner_link = Ansel::getUrlFor('view', array('view' => 'List', 'owner' => $gallery->get('owner'), 'groupby' => 'owner'), true);
         $view->owner_string = $gallery->getIdentity()->getValue('fullname');
         if (empty($view->owner_string)) {
             $view->owner_string = $gallery->get('owner');
         }
     }
     $view->background_color = $style->background;
     $view->gallery_count = $gallery->countImages(true);
     $view->date_format = $prefs->getValue('date_format');
     return $view->render('gallery' . ($mini ? 'mini' : ''));
 }