예제 #1
0
파일: g2image.php 프로젝트: crosby823/pgd
/**
 * Get all of the Gallery2 items
 *
 * @return array $album_info Album Title and URL for the current album
 * @return array $gallery_items Sorted array of IDs and Titles for all Gallery2 Data Items in the current album
 */
function g2ic_get_gallery_items()
{
    global $gallery, $g2ic_options;
    $gallery_items = array();
    $item_mod_times = array();
    $item_orig_times = array();
    $item_create_times = array();
    $item_titles = array();
    $item_ids = array();
    $album_info = array();
    $urlGenerator =& $gallery->getUrlGenerator();
    list($error, $albums) = GalleryCoreApi::loadEntitiesById(array($g2ic_options['current_album']));
    if (!$error) {
        foreach ($albums as $album) {
            $album_info['url'] = $urlGenerator->generateUrl(array('view' => 'core.ShowItem', 'itemId' => $album->getid()), array('forceFullUrl' => true));
            $album_info['title'] = $album->getTitle();
            list($error, $data_item_ids) = GalleryCoreApi::fetchChildDataItemIds($album);
            foreach ($data_item_ids as $data_item_id) {
                $item_ids[] = $data_item_id;
                list($error, $items) = GalleryCoreApi::loadEntitiesById(array($data_item_id));
                foreach ($items as $item) {
                    $item_titles[] = $item->getTitle();
                    $item_mod_times[] = $item->getModificationTimestamp();
                    $item_orig_times[] = $item->getOriginationTimestamp();
                    $item_create_times[] = $item->getOriginationTimestamp();
                }
            }
        }
    } else {
        print T_('Error loading album entity');
    }
    // Sort directories and files
    $count_files = count($item_ids);
    if ($count_files > 0) {
        switch ($g2ic_options['sortby']) {
            case 'title_asc':
                array_multisort($item_titles, $item_ids);
                break;
            case 'title_desc':
                array_multisort($item_titles, SORT_DESC, $item_ids);
                break;
            case 'orig_time_asc':
                array_multisort($item_orig_times, $item_titles, $item_ids);
                break;
            case 'orig_time_desc':
                array_multisort($item_orig_times, SORT_DESC, $item_titles, $item_ids);
                break;
            case 'mtime_asc':
                array_multisort($item_mod_times, $item_titles, $item_ids);
                break;
            case 'mtime_desc':
                array_multisort($item_mod_times, SORT_DESC, $item_titles, $item_ids);
        }
        for ($i = 0; $i < $count_files; $i++) {
            $gallery_items[$i] = array('title' => $item_titles[$i], 'id' => $item_ids[$i]);
        }
    }
    return array($album_info, $gallery_items);
}
예제 #2
0
 /**
  * Returns a complete packaged album for the given
  * gallery id
  * @param Int albumId
  * @return GalleryAlbum
  */
 function getPackagedAlbum($albumId)
 {
     global $logger;
     $logger->debug(get_class($this) . "::getPackagedAlbum({$albumId})");
     $album = new GalleryAlbum();
     $this->initGalleryApi();
     list($ret, $parent) = GalleryCoreApi::loadEntitiesById($albumId);
     if ($parent && $parent->canContainChildren) {
         list($ret, $children) = GalleryCoreApi::fetchChildDataItemIds($parent);
         $images = array();
         if ($children) {
             $found = array();
             // holds the ids of already packaged images so we don't repeat it
             foreach ($children as $imageId) {
                 if (!in_array($imageId, $found)) {
                     $image = $this->getCompositeImage($imageId);
                     if ($image) {
                         $found[] = $image->getSmall() ? $image->getSmall()->getId() : null;
                         $found[] = $image->getMedium() ? $image->getMedium()->getId() : null;
                         $found[] = $image->getLarge() ? $image->getLarge()->getId() : null;
                     }
                     $images[] = $image;
                 }
             }
         }
         $album = $this->setAlbumValues($parent, $album);
         $album->setImages($images);
     }
     return $album;
 }