<?php
// ----------------------------------------------------------------------------------
// Program Name.......: Roger's PHP Gallery
// Filename...........: gallery.php
// Function...........: Main script which generates index and image page
// Creation Date......: 01.08.2002
// Last Modified......: 14.11.2005
// Author.............: Roger Murer / www.rmurer.ch / r.murer@tiscalinet.ch
// ----------------------------------------------------------------------------------


// ----------------------------------------------------------------------------------
// This program is released under the GNU General Public License (GPL).
//
// Copyright 2002-2005, Roger Murer <r.murer@tiscalinet.ch>
//
// This script is part of "Roger's PHP Gallery".
//
// "Roger's PHP Gallery" is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.
// 
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
//
// This copyright notice MUST APPEAR in all copies of the script!
// ------------------------------------------------------------------------------------------------- 

// DEBUG 
 error_reporting(E_ALL);
// DEBUG END

require_once('./config.php');
require_once('./inc/gallery_classes.php');

// This gets the vars out of $_GET
// to support register_globals = off in php.ini
unset($id, $gal, $page);
if (isset($_GET['gal'])) {
    $gal = Lib::cleanGalName($_GET['gal']);
}
if (isset($_GET['id'])) {
    $id = $_GET['id'];
}
if (isset($_GET['page'])) {
    $page = $_GET['page'];
}

// add PHP self to config var
$rpg['PHP_SELF'] = $_SERVER['PHP_SELF'];

// if page is still not set or not
// integer then init with 1
if (!isset($page) || !Lib::isInteger($page)) {
    $page = 1;
}

// create gallery object
$Obj_ImageGet=new GetImageDir($gal, $page, $rpg);

// create template object
$tmpl = new template($gal);

if (!isset($id)) {
    // build gallery page

    // calculate image range for gallery
    if ($rpg['IMG_PER_PAGE'] <> 0) {
        $start_image = $rpg['IMG_PER_PAGE'] * $page - $rpg['IMG_PER_PAGE'];
        $end_image = $rpg['IMG_PER_PAGE'] * $page - 1;
    } else {
      $start_image = 0;
      $end_image = 0;
    }
    
    // fetch images and header
    if ($Obj_ImageGet->getImages($start_image, $end_image) && $Obj_ImageGet->getImageQuantityReturned() > 0) {
        $images = $Obj_ImageGet->image_array;
        $total_images = $Obj_ImageGet->getImageQuantityReturned();
    } else {
        exit('requested image/gallery could not be found');
    }

    // init template handler
    $thumb_rows = '';
    $thumb_cells = '';
    $var_arr = array();
      
    $img_count = 0; 
    foreach ($images as $key => $image) {
        $img_count += 1;
        
        // get the size of the thumbnail for img tag
        $thumb_size = @getimagesize($image['thumbnail']);
        $var_arr['thumbSize'] =  $thumb_size[3];
        
        // open window with javascript or target
        if (!$rpg['JAVA_WINDOW']) {
            $var_arr['linkImage'] = $image['link'];
            $var_arr['linkTarget'] = $rpg['TARGET_WINDOW'];
        } else {
            $win_height = $image['height'] + $rpg['PIX_VERT'];
            $win_width = $image['width'] + $rpg['PIX_HORIZ'];
            $var_arr['linkImage'] = "javascript:win_open('".$image['link']."', $win_width, $win_height)";
            $var_arr['linkTarget'] = '';
        }
        
        $var_arr['thumbSource'] = $image['thumbnail'];
        $var_arr['imageName'] = $image['name'];
        $var_arr['imageSize'] = $image['size'];
        $var_arr['linkText'] = $image['linktext'];
        $var_arr['imageDescription'] = $image['description'];
        $var_arr['imageNumber'] = $key + 1;
        $var_arr['imagesTotal'] = $Obj_ImageGet->getImageQuantity();

        // build cell
        $tmpl->setVariables($var_arr);
        $tmpl->setTemplateFile('index-page-cell.htm');
        $thumb_cells .= $tmpl->getParsedTemplate();
        
        // finish one row
        if ((($img_count % $rpg['IMG_PER_ROW']) == 0)||($img_count == $total_images)) {
            $tmpl->setTemplateFile('index-page-row.htm');
            $tmpl->setVariables(array('thumbCells' => $thumb_cells));
            $thumb_rows .= $tmpl->getParsedTemplate();
            $thumb_cells = '';
        }
    }
    
    // generate page links
    $page_arr = $Obj_ImageGet->getPageLinks();
    $page_links = '';
    foreach ($page_arr as $page_number => $properties) {
        if ($properties['current'] == true) {
            $tmpl->setTemplateFile('index-page-pagecurrent.htm');
        } else {
            $tmpl->setTemplateFile('index-page-pagelink.htm');
        }
        $tmpl->setVariables(array( 'pageNumber' => $page_number,
                                   'pageLink' => $properties['pageLink']));
        $page_links .= $tmpl->getParsedTemplate();                           
    }
    
    $tmpl->setTemplateFile('index-page-main.htm');
    $tmpl->setVariables(array( 'pageLinks' => $page_links,
                               'rowQuantity' => $rpg['IMG_PER_ROW'],
                               'thumbIndex' => $thumb_rows,
                               'galTitle' => $Obj_ImageGet->getGalleryTitle(),
                               'cssPath' => $tmpl->getCssPath('gallery.css')));
    echo $tmpl->getParsedTemplate();
    
} else {    
    // build image window
     
    // image range for single image
    $start_image = $id - 1;
    $end_image = $id + 1;

    // fetch images
    if ($Obj_ImageGet->getImages($start_image, $end_image) && $Obj_ImageGet->getImageQuantityReturned() > 0) {
        $images = $Obj_ImageGet->image_array;
        $total_images = $Obj_ImageGet->getImageQuantityReturned();
    } else {
        exit('requested image could not befound');
    }
    // count
    $image_counter = New ImageCounter($gal, $rpg);
    $image_counter->increaseImageCounter($images[$id]['name']);

    $total_images = $Obj_ImageGet->getImageQuantity();
    // set previous and next image for navigation
    $prev_id = (int) ($id - 1);
    $next_id = $id + 1;
    if ($prev_id < 0) {
        unset($prev_id);
    }
    if ($next_id > ($total_images - 1)) {
        unset($next_id);
    }
    
    // navigation to previous-/next image
    $prevLink = ''; 
    $homeLink = '';
    $nextLink = '';
    
    if (isset($prev_id) && !$rpg['JAVA_WINDOW']) {
        $tmpl->setVariables(array('prevLink' => Lib::convUrl($rpg['PHP_SELF'].
                            '?gal='.urlencode($gal).'&id='.$prev_id)));
        $tmpl->setTemplateFile('image-page-prev.htm');
        $prevLink = $tmpl->getParsedTemplate();
    }
    
    if ($rpg['TARGET_WINDOW'] == '_blank' || $rpg['JAVA_WINDOW']) {
        // lets the user close the picture window
        $tmpl->setVariables(array('homeLink' => 'javascript:window.close()'));
        $tmpl->setTemplateFile('image-page-close.htm');
    } else {
        // lets the user get back to the gallery
        $tmpl->setVariables(array('homeLink' => Lib::convUrl($rpg['PHP_SELF'].
                            '?gal='.urlencode($gal).'&page='.ceil(($id+1)/$rpg['IMG_PER_PAGE']))));
        $tmpl->setTemplateFile('image-page-home.htm');
    }    
    $homeLink = $tmpl->getParsedTemplate();
    
    // link for next image
    if (isset($next_id) && !$rpg['JAVA_WINDOW']) {
        $tmpl->setVariables(array('nextLink' => Lib::convUrl($rpg['PHP_SELF'].
                            '?gal='.urlencode($gal).'&id='.$next_id)));
        $tmpl->setTemplateFile('image-page-next.htm');
        $nextLink = $tmpl->getParsedTemplate();
    }
    
    $variables = array('galleryName' => $Obj_ImageGet->getGalleryTitle(),
                       'imageName' => $images[$id]['name'],
                       'imageDescription' => $images[$id]['description'],
                       'imageSize' => $images[$id]['dimension'],
                       'imageLink' => './'.$rpg['IMAGE_DIR'].$gal.'/'.$images[$id]['name'],
                       'prevLink' => $prevLink,
                       'homeLink' => $homeLink,
                       'nextLink' => $nextLink,
                       'cssPath' => $tmpl->getCssPath('gallery.css'));
    $tmpl->setVariables($variables);
    $tmpl->setTemplateFile('image-page-main.htm');
    echo $tmpl->getParsedTemplate();
    
    
}    
?>
