CodeIgniter
[ class tree: CodeIgniter ] [ index: CodeIgniter ] [ all elements ]

Source for file gallery.php

Documentation is available at gallery.php

  1. <?php
  2. /**
  3.  * CodeIgniter
  4.  *
  5.  * An open source application development framework for PHP 4.3.2 or newer
  6.  *
  7.  * @package        CodeIgniter Photogallery
  8.  * @author        Zdenek Kalina
  9.  * @filesource
  10.  */
  11. /**
  12.  * Gallery Class
  13.  *
  14.  * Gallery frontend
  15.  *
  16.  * @category Controllers
  17.  * @package CodeIgniter Photogallery
  18.  * @author Zdenek Kalina <kalinz1@fel.cvut.cz>
  19.  * @copyright Zdenek Kalina
  20.  */
  21. class Gallery extends Controller {
  22.     // --------------------------------------------------------------------
  23.     /**
  24.      * Constructor
  25.      */
  26.     function __construct()
  27.     {
  28.         parent::Controller();
  29.  
  30.         $this->load->model('gallery_model');
  31.         $this->load->model('entity_model');
  32.     }
  33.     // --------------------------------------------------------------------
  34.     /**
  35.      * Gallery not exist page
  36.      *
  37.      * @access private
  38.      */
  39.     function _not_exist($id_gallery)
  40.     {
  41.         $view['label''Na zadané adrese neexistuje bohužel žádná galerie.';
  42.         $view['link'anchor('gallery''Hlavní složka galerie');
  43.         $this->config->set_item('global_title''Chyba');
  44.         $this->template->write_view('content''error'$view);
  45.         $this->template->render();
  46.     }
  47.     // --------------------------------------------------------------------
  48.     /**
  49.      * Gallery Image not exist page
  50.      *
  51.      * @access private
  52.      */
  53.     function _not_exist_image($id_image$gallery_alias '')
  54.     {
  55.         $view['label''V zadané fotogalerii neexistuje bohužel zadaná fotografie.';
  56.         $view['link'anchor('gallery''Hlavní složka galerie');
  57.         if (strlen($gallery_alias)) {
  58.             if ($name $this->entity_model->selectOne('gallery''name'array('alias' => $gallery_alias)true))
  59.                 $view['link'anchor('gallery/index/' $gallery_alias$name);
  60.         }
  61.         $this->config->set_item('global_title''Chyba');
  62.  
  63.         $this->template->write_view('content''error'$view);
  64.         $this->template->render();
  65.     }
  66.     // --------------------------------------------------------------------
  67.     /**
  68.      * Show Gallery page
  69.      *
  70.      * Gallery layout shows when gallery alias is set
  71.      * Gallery Image layout shows when gallery alias and image alias are set
  72.      * Gallery layout with starting page shows when no parameters
  73.      *
  74.      * @access public
  75.      * @param string $gallery_alias 
  76.      * @param string $image_alias 
  77.      */
  78.     function index($gallery_alias ''$image_alias '')
  79.     {
  80.         if (strlen($gallery_alias)) $gallery_alias 0;
  81.         elseif (strlen($image_alias)) {
  82.             $this->_show_image($gallery_alias$image_alias);
  83.             return;
  84.         }
  85.         if ($gallery_alias && ($id_gallery $this->entity_model->selectOne('gallery''id_gallery'array('alias' => $gallery_alias)true))) {
  86.             $this->_not_exist($id_gallery);
  87.             return;
  88.         }
  89.  
  90.         $has_image false;
  91.         $has_subgal false;
  92.         if (!$gallery_alias{
  93.             $id_gallery $gallery_alias;
  94.             $info['root'true;
  95.             $info['name''Hlavní složka';
  96.             $info['cnt_galleries'$this->entity_model->count('gallery'array('id_gallery_parent' => $id_gallery));
  97.             $info['cnt_images'0;
  98.             // $cnt_recursive = $this->gallery_model->countSubgalleriesRecursive($id_gallery, TRUE, $info['cnt_galleries']);
  99.             $images array();
  100.         else {
  101.             $info $this->entity_model->selectOne('gallery''*'array('alias' => $gallery_alias));
  102.             $info['root'false;
  103.             $rating $info['rating'== -1?'Zatím nikdo nehodnotil':($info['rating'' z 10');
  104.             $id_gallery $info['id_gallery'];
  105.             // $cnt_recursive = $this->gallery_model->countSubgalleriesRecursive($id_gallery);
  106.             $images $this->entity_model->select('image''id_image, alias, name, created_by, created_date'array('id_gallery' => $id_gallery)false'alias');
  107.         }
  108.         $this->config->set_item('global_title'$info['name']);
  109.  
  110.         $cnt_galleries 0;
  111.         $cnt_images 0;
  112.         // process subgalleries
  113.         $subgalleries $this->entity_model->select('gallery''alias, name, cnt_images, cnt_galleries, visible, thumbnail_image'array('id_gallery_parent' => $id_gallery)false'name');
  114.         $subgalleries_list array();
  115.         foreach($subgalleries as $entry{
  116.             if (!$entry['visible'|| (!$entry['cnt_images'&& !$entry['cnt_galleries']|| is_url_allowed('gallery/index/' $entry['alias']1)) continue;
  117.  
  118.             $items['link'anchor('gallery/index/' $entry['alias']$entry['name']);
  119.  
  120.             $items['icon''';
  121.             if($entry['thumbnail_image']){
  122.                 $img_data['gallery'$entry['alias'];
  123.                 $img_data['alt'$entry['name'];
  124.                 $items['icon'$this->gallery_lib->getIcon($img_data);
  125.             }
  126.  
  127.             $subgalleries_list[$items;
  128.             $items array();
  129.             $has_subgal true;
  130.             $cnt_galleries++;
  131.         }
  132.  
  133.         $images_list array();
  134.         $th_data['gallery'$gallery_alias;
  135.         foreach($images as $entry{
  136.             $th_data['alt'$entry['name'];
  137.             $th_data['image'$entry['alias'];
  138.             $th_data['group'$gallery_alias;
  139.             $items['thumbnail'$this->gallery_lib->getThumb($th_datatruetruefalse);
  140.             $items['link'site_url('gallery/index/' $gallery_alias '/' $entry['alias']);
  141.  
  142.             $images_list[$items;
  143.             $items array();
  144.             $has_image true;
  145.             $cnt_images++;
  146.         }
  147.         // Output it
  148.         /*$cnt_galleries = $info['cnt_galleries'].' lokálně | '.$cnt_recursive['cnt_galleries'].' rekurzivně';
  149.         $cnt_images = $info['cnt_images'].' lokálně | '.$cnt_recursive['cnt_images'].' rekurzivně';*/
  150.         $cnt 'Počet fotografií: '.$cnt_images.' / Počet galerií: '.$cnt_galleries;
  151.         $cnt_images $cnt_images '';
  152.         // process gallery info
  153.         $this->prepare_view->add_col('name'$info['name']'Název galerie');
  154.         $this->prepare_view->add_col('cnt'$cnt'Obsah');
  155.         //$this->prepare_view->add_col('cnt_images', $cnt_images, 'Počet fotografií');
  156.         $items array('name''cnt');
  157.         if (!$info['root']{
  158.             $this->prepare_view->add_col('changed_last_date'$info['changed_last_date']'Datum poslední změny');
  159.             $this->prepare_view->add_col('created_date'$info['created_date']'Datum vytvoření');
  160.             $this->prepare_view->add_col('rating'$rating'Hodnocení');
  161.             $items array_merge($itemsarray('changed_last_date''created_date''rating'));
  162.         }
  163.  
  164.         $this->prepare_view->add_row(1$items);
  165.         // gallery info
  166.         $table1['list'$this->prepare_view->load_rows();
  167.         $this->template->write_view('left''gallery/info'$table1);
  168.         // breadcrumbs
  169.         $breadcrumbs['breadcrumbs'$this->gallery_lib->breadcrumbs($id_gallery);
  170.         $this->template->write_view('content''gallery/breadcrumbs'$breadcrumbs);
  171.  
  172.         if ($has_subgal{
  173.             $view['galleries'$subgalleries_list;
  174.             $this->template->write_view('content''gallery/gallery_list'$view);
  175.         }
  176.         if ($has_subgal && $has_image$this->template->write('content''<div class="hseparator">&nbsp;</div>');
  177.  
  178.         $view2['images'$images_list;
  179.         $this->template->write_view('content''gallery/image_list'$view2);
  180.         $this->template->render();
  181.     }
  182.     // --------------------------------------------------------------------
  183.     /**
  184.      * Gallery Image page
  185.      *
  186.      * @access private
  187.      * @param string $gallery_alias 
  188.      * @param string $image_alias 
  189.      */
  190.     function _show_image($gallery_alias$image_alias)
  191.     {
  192.         if (($id_gallery $this->entity_model->selectOne('gallery''id_gallery'array('alias' => $gallery_alias)true))) {
  193.             $this->_not_exist($id_gallery);
  194.             return;
  195.         }
  196.         if (($id_image $this->entity_model->selectOne('image''id_image'array('id_gallery' => $id_gallery'alias' => $image_alias)true))) {
  197.             $this->_not_exist_image($id_image$gallery_alias);
  198.             return;
  199.         }
  200.  
  201.         $info $this->entity_model->selectOne('image''*'array('id_gallery' => $id_gallery'alias' => $image_alias));
  202.         $this->config->set_item('global_title'$info['name']);
  203.  
  204.         $items['gallery_name'$this->entity_model->selectOne('gallery''name'array('id_gallery' => $id_gallery)true);
  205.         $items['gallery_name'anchor('gallery/index/' $gallery_alias$items['gallery_name']array('class' => 'nodeco'));
  206.         $items['dimensions'$info['width''x' $info['height'' px';
  207.         $items['created_date'$info['created_date'];
  208.         $items['date_time'($info['date']?($info['date'' '):''$info['time']?$info['time']:'';
  209.         $items['date_time'strlen($items['date_time'])?$items['date_time']:'-';
  210.         $items['dimensions_orig'($info['width_orig'&& $info['height_orig'])?($info['width_orig''x' $info['height_orig'' px'):'-';
  211.         $items['rating'$info['rating'== -1?'Zatím nikdo nehodnotil':($info['rating'' z 10');
  212.         // process gallery info
  213.         $this->prepare_view->add_col('name'$info['name']'Název fotografie');
  214.         $this->prepare_view->add_col('gallery_name'$items['gallery_name']'Název galerie');
  215.         $this->prepare_view->add_col('dimensions'$items['dimensions']'Velikost');
  216.         $this->prepare_view->add_col('created_date'$items['created_date']'Datum zveřejnění');
  217.         $this->prepare_view->add_col('author'$info['author']?$info['author']:'-''Autor fotografie');
  218.         $this->prepare_view->add_col('date_time'$items['date_time']'Datum pořízení');
  219.         $this->prepare_view->add_col('place'$info['place']?$info['place']:'-''Místo pořízení');
  220.         $this->prepare_view->add_col('gps'$info['gps']?$info['gps']:'-''GPS souřadnice');
  221.         $this->prepare_view->add_col('dimensions_orig'$items['dimensions_orig']'Originální velikost');
  222.         $this->prepare_view->add_col('camera'$info['camera']?$info['camera']:'-''Fotoaparát');
  223.         $this->prepare_view->add_col('rating'$items['rating']'Hodnocení');
  224.  
  225.         $this->prepare_view->add_row(1array('name''gallery_name''dimensions''created_date''author''date_time''place''gps''dimensions_orig''rating'));
  226.  
  227.         $table1['list'$this->prepare_view->load_rows();
  228.         $this->template->write_view('left''gallery/info'$table1);
  229.  
  230.         $breadcrumbs['breadcrumbs'$this->gallery_lib->breadcrumbs($id_gallerytrue);
  231.         $breadcrumbs['breadcrumbs'][$info['name'];
  232.         $this->template->write_view('content''gallery/breadcrumbs'$breadcrumbs);
  233.  
  234.         $img_data['gallery'$gallery_alias;
  235.         $img_data['alt'$info['name'];
  236.         $img_data['image'$info['alias'];
  237.         $items['image'$this->gallery_lib->getImage($img_data);
  238.  
  239.         $view2['image'$items['image'];
  240.         $view2['navigation'$this->gallery_lib->getPrevNextImage($id_gallery$id_image);
  241.         $this->template->write_view('content''gallery/image'$view2);
  242.         $this->template->render();
  243.     }
  244. }
  245.  
  246. ?>

Documentation generated on Sun, 11 Jan 2009 04:21:07 +0100 by phpDocumentor 1.4.1