Private
Server IP : 195.201.23.43  /  Your IP : 18.220.23.205
Web Server : Apache
System : Linux webserver2.vercom.be 5.4.0-192-generic #212-Ubuntu SMP Fri Jul 5 09:47:39 UTC 2024 x86_64
User : kdecoratie ( 1041)
PHP Version : 7.1.33-63+ubuntu20.04.1+deb.sury.org+1
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : OFF  |  Sudo : ON  |  Pkexec : ON
Directory :  /home/kdecoratie/public_html/plugins/content/admirorgallery/admirorgallery/classes/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME SHELL ]     

Current File : /home/kdecoratie/public_html/plugins/content/admirorgallery/admirorgallery/classes/agGallery.php
<?php
 /*------------------------------------------------------------------------
# admirorgallery - Admiror Gallery Plugin
# ------------------------------------------------------------------------
# author   Igor Kekeljevic & Nikola Vasiljevski
# copyright Copyright (C) 2014 admiror-design-studio.com. All Rights Reserved.
# @license - http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
# Websites: http://www.admiror-design-studio.com/joomla-extensions
# Technical Support:  Forum - http://www.vasiljevski.com/forum/index.php
# Version: 5.0.0
-------------------------------------------------------------------------*/
defined('_JEXEC') or die();

define('PLUGIN_BASE_PATH', '/plugins/content/admirorgallery/admirorgallery/');

require_once (dirname(__FILE__) . DIRECTORY_SEPARATOR . 'agHelper.php');
require_once (dirname(__FILE__) . DIRECTORY_SEPARATOR . 'agPopup.php');

class agGallery extends agHelper {

    var $sitePath = '';
    var $sitePhysicalPath = '';
    // Virtual path. Example: "http://www.mysite.com/plugin/content/admirorgallery/thumbs/"
    var $thumbsFolderPath = '';
    // Physical path on the server. Example: "E:\php\www\joomla/plugin/content/admirorgallery/thumbs/"
    var $thumbsFolderPhysicalPath = '';
    // Gallery name. Example: food
    var $imagesFolderName = '';
    // Physical path on the server. Example: "E:\php\www\joomla/plugin/content/"
    var $imagesFolderPhysicalPath = '';
    // Virtual path. Example: "http://www.mysite.com/images/stories/food/"
    var $imagesFolderPath = '';
    var $images = array();
    var $imageInfo = array();
    var $params = array();
    var $staticParams = array();
    var $index = -1;
    var $articleID = 0;
    var $popupEngine;
    var $currPopupRoot = '';
    var $currTemplateRoot = '';
    // Virtual path. Example: "http://www.mysite.com/plugins/content/admirorgallery/"
    var $pluginPath = '';
    var $squareImage = false;
    var $paginInitPages = array();
    var $albumInitFolders = array();
    var $paginImgTotal = 0;
    var $numOfGal = 0;
    var $albumParentLink = '';
    private $errors = array();
    private $doc = null;
    private $descArray = array();
    private $match = '';
    private $DS = DIRECTORY_SEPARATOR;

    //**************************************************************************
    //Template API functions                                                  //
    //**************************************************************************
    /**
     * Gets image info data, and loads it in imageInfo array. It also rounds image size.
     * @param <string> $imageName
     */
    function getImageInfo($imageName) {
        $this->imageInfo = agHelper::ag_imageInfo($this->imagesFolderPhysicalPath . $this->DS . $imageName);
        $this->imageInfo["size"] = agHelper::ag_fileRoundSize($this->imageInfo["size"]);
    }

    /**
     * Returns gallery id formed from gallery index and article ID
     * @return <string>
     */
    function getGalleryID() {
        return $this->index . $this->articleID;
    }

    /**
     * Loads CSS file from the given path.
     * @param <string> $path
     */
    function loadCSS($path) {
        $this->doc->addStyleSheet($this->sitePath . PLUGIN_BASE_PATH . $path);
    }

    /**
     * Loads JavaScript file from the given path.
     * @param <string> $path
     */
    function loadJS($path) {
        $this->doc->addScript($this->sitePath . PLUGIN_BASE_PATH . $path);
    }

    /**
     * Loads JavaScript code block into document head.
     * @param <string> $script
     */
    function insertJSCode($script) {
        $this->doc->addScriptDeclaration($script);
    }

    /**
     * Returns specific inline parametar if entered or returns default value
     * @param <string> $atrib
     * @param <string> $default
     * @return <value> 
     */
    function getParameter($atrib, $default) {
        return $this->ag_getParams($atrib, $this->match, $default);
    }

    /**
     * Returns full image html
     * @param <string> $imageName
     * @param <string> $cssClass
     * @return <html> 
     */
    function writeImage($imageName, $cssClass='') {
        return '<img src="' . $this->imagesFolderPath . $imageName . '"
                alt="' . strip_tags($this->descArray[$imageName]) . '"
                class="' . $cssClass . '">';
    }

    /**
     * Returns thumb html
     * @param <string> $imageName
     * @param <string> $cssClass
     * @return <html> 
     */
    function writeThumb($imageName, $cssClass='') {
        return '<img src="' . $this->sitePath . PLUGIN_BASE_PATH . 'thumbs/' . $this->imagesFolderName . '/' . $imageName . '"
                alt="' . strip_tags($this->descArray[$imageName]) . '"
                class="' . $cssClass . '">';
    }

    /**
     * Generates HTML with new image tag
     * @param <string> $image
     * @return <html>
     */
    function writeNewImageTag($image) {
        $FileAge = date("YmdHi", filemtime($this->imagesFolderPhysicalPath . $image)); // DEFAULT DATE
        $dateLimit = date("YmdHi", mktime(date("H"), date("i"), date("s"), date("m"), date("d") - (int) ($this->params['newImageTag_days']), date("Y")));
        if ($FileAge > $dateLimit && $this->params['newImageTag'] == 1) {
            return '<span class="ag_newTag"><img src="' . $this->sitePath . PLUGIN_BASE_PATH . 'newTag.gif" class="ag_newImageTag" /></span>';
        }
    }

    /**
     * Generates HTML with Popup engine integration
     * @param <string> $image
     * @return <html>
     */
    function writePopupThumb($image) {
        $html = '';
        if ($this->popupEngine->customPopupThumb) {
            $html = $this->popupEngine->customPopupThumb;
            $html = str_replace("{imagePath}", $this->imagesFolderPath . $image, $html);
            $html = str_replace("{imageDescription}", htmlspecialchars($this->descArray[$image], ENT_QUOTES, "UTF-8"), $html);
            $html = str_replace("{className}", $this->popupEngine->className, $html);
            $html = str_replace("{rel}", $this->popupEngine->rel, $html);
            $html = str_replace("{customAttr}", $this->popupEngine->customTag, $html);
            $html = str_replace("{newImageTag}", $this->writeNewImageTag($image), $html);
            $html = str_replace("{thumbImagePath}", $this->sitePath . PLUGIN_BASE_PATH . 'thumbs/' . $this->imagesFolderName . '/' . $image, $html);
        } else {
            $html.='<a href="' . $this->imagesFolderPath . $image . '" title="' . htmlspecialchars($this->descArray[$image], ENT_QUOTES, "UTF-8") . '" class="' . $this->popupEngine->className . '" rel="' . $this->popupEngine->rel . '" ' . $this->popupEngine->customAttr . ' target="_blank">' . $this->writeNewImageTag($image) . '<img src="' . $this->sitePath . PLUGIN_BASE_PATH . 'thumbs/' . $this->imagesFolderName . '/' . $image . '" alt="' . strip_tags($this->descArray[$image]) . '" class="ag_imageThumb"></a>';
        }
        return $html;
    }

    /**
     * Generates HTML link to album page
     * @param <type> $default_folder_img
     * @param <type> $thumbHeight
     * @return string
     */
    function writeFolderThumb($default_folder_img, $thumbHeight) {

        // Album Support
        $html = "";
        if ($this->params['albumUse'] && !empty($this->folders)) {
            $html.='<div class="AG_album_wrap">' . "\n";
            foreach ($this->folders as $folderKey => $folderName) {
                $thumb_path = $this->ag_get_album_thumb_path($default_folder_img,$folderName);
                $html.='<a href="javascript:void(0);" onClick="AG_form_submit_' . $this->articleID . '(' . $this->index . ',1,\'' . $this->imagesFolderName . '/' . $folderName . '\'); return false;" class="AG_album_thumb">';    
                $html.='<span class="AG_album_thumb_img" >';
                $html.='<img style="height: '.$thumbHeight.'px;" src="'.$thumb_path.'" />' . "\n";
                $html.='</span>';
                $html.='<span class="AG_album_thumb_label">';
                $html.=$this->descArray[$folderName];
                $html.='</span>';
                $html.='</a>';
            }
            $html.= '<br style="clear:both;" /></div>' . "\n";
        }
        return $html;
    }
    
    function ag_get_album_thumb_path($default_folder_img,$folderName)
    {
        // Get Thumb URL value                
        // Set Possible Description File Apsolute Path // Instant patch for upper and lower case...
        $ag_pathWithStripExt = $this->imagesFolderPhysicalPath . $folderName;
        $ag_XML_path = $ag_pathWithStripExt . ".XML";
        if (file_exists($ag_pathWithStripExt . ".xml")) {
            $ag_XML_path = $ag_pathWithStripExt . ".xml";
        }
        if (file_exists($ag_XML_path)) {// Check is descriptions file exists
            $ag_XML_xml = simplexml_load_file($ag_XML_path);
            if (isset($ag_XML_xml->thumb)) {
                $thumb_file = (string) $ag_XML_xml->thumb;
            }
        }
        if (empty($thumb_file)) {
            $images = agHelper::ag_imageArrayFromFolder($this->imagesFolderPhysicalPath . $folderName);
            if (!empty($images)) {
                $images = agHelper::array_sorting($images, $this->imagesFolderPhysicalPath . $folderName . $this->DS, $this->params['arrange']);
                $thumb_file = $images[0]; // Get First image in folder as thumb 
            }
        }
        if (!empty($thumb_file)) {
            $this->Album_generateThumb($folderName, $thumb_file);
            $thumb_file = 'thumbs/' . $this->imagesFolderName . '/' . $folderName . '/' . basename($thumb_file);
        }
        else
        {
            $thumb_file = $this->currTemplateRoot.$default_folder_img;
        }
        return $this->sitePath . PLUGIN_BASE_PATH .$thumb_file;
    }

    /**
     * Pagination HTML output
     * @return string
     */
    function writePagination() {
        // Paggination Support
        $html = "";
        if ($this->params['paginUse']) {
            if ($this->params['paginUse']) {
                if (!empty($this->paginImgTotal) && ceil($this->paginImgTotal / $this->params['paginImagesPerGallery']) > 1) {
                    $html.= '<div class="AG_pagin_wrap">';
                    $paginPrev = ($this->paginInitPages[$this->index] - 1);
                    if ($paginPrev >= 1) {
                        $html.= '<a href="javascript:void(0);" onClick="AG_form_submit_' . $this->articleID . '(' . $this->index . ',' . $paginPrev . ',\'' . $this->imagesFolderName . '\'); return false;" class="AG_pagin_prev">' . JText::_("AG_PREV") . '</a>';
                    }
                    for ($i = 1; $i <= ceil($this->paginImgTotal / $this->params['paginImagesPerGallery']); $i++) {
                        if ($i == $this->paginInitPages[$this->index]) {
                            $html.= '<span class="AG_pagin_current">' . $i . '</span>';
                        } else {
                            $html.= '<a href="javascript:void(0);" onClick="AG_form_submit_' . $this->articleID . '(' . $this->index . ',' . $i . ',\'' . $this->imagesFolderName . '\',this);return false;" class="AG_pagin_link">' . $i . '</a>';
                        }
                    }
                    $paginNext = ($this->paginInitPages[$this->index] + 1);
                    if ($paginNext <= ceil($this->paginImgTotal / $this->params['paginImagesPerGallery'])) {
                        $html.= '<a href="javascript:void(0);" onClick="AG_form_submit_' . $this->articleID . '(' . $this->index . ',' . $paginNext . ',\'' . $this->imagesFolderName . '\'); return false;" class="AG_pagin_next">' . JText::_("AG_NEXT") . '</a>';
                    }
                    $html.= '<br style="clear:both"></div>';
                }
            }
        }
        return $html;
    }

    /**
     * Generates html with popup support for all the images in the gallery.
     * @return <html>
     */
    function writeAllPopupThumbs() {
        $html = '';
        if (!empty($this->images)) {
            foreach ($this->images as $imagesKey => $imagesValue) {
                $html.='<a href="' . $this->imagesFolderPath . $imagesValue . '" title="' . htmlspecialchars(strip_tags($this->descArray[$imagesValue])) . '" class="' . $this->popupEngine->cssClass . '" rel="' . $this->popupEngine->rel . '" ' . $this->popupEngine->customTag . ' target="_blank">';
                $html.=$this->writeNewImageTag($imagesValue);
                $html.='<img src="' . $this->sitePath . PLUGIN_BASE_PATH . 'thumbs/' . $this->imagesFolderName . '/' . $imagesValue . '
                        " alt="' . htmlspecialchars(strip_tags($this->descArray[$imagesValue])) . '" class="ag_imageThumb"></a>';
            }
        }
        return $html;
    }

    /**
     * Returns image description. The current localization is taken into account.
     * @param <string> $imageName
     * @return <string> 
     */
    function writeDescription($imageName) {
        return $this->descArray[$imageName];
    }

    /*
     * Initialises Popup engine. Loads popupEngine settings and scripts
     */

    function initPopup() {
        require (dirname(dirname(__FILE__)). $this->DS . 'popups' . $this->DS . $this->params['popupEngine'] . $this->DS . 'index.php');
        return $this->popupEngine->initCode;
    }

    /*
     * Includes JavaScript code ad the end of the gallery html
     */

    function endPopup() {
        return $this->popupEngine->endCode;
    }

    /*
     * adds new error value to the error array
     */

    function addError($value) {
        if ($value != '') {
            $this->errors[] = $value;
        }
    }

    //**************************************************************************
    // END Template API functions                                             //
    //**************************************************************************
    //**************************************************************************
    // Gallery Functions                                                      //
    //**************************************************************************
    /**
     * Gallery initialization
     * @param <string> $match
     */
    function initGallery($match) {
        $this->match = $match;
        $this->readInlineParams();
        $this->imagesFolderNameOriginal = preg_replace("/{.+?}/", "", $match);
        $this->imagesFolderName = strip_tags($this->imagesFolderNameOriginal);
        // Pagination Support
        if ($this->params['paginUse'] || $this->params['albumUse']) {
            $this->paginInitPages[] = 1;
            if (!empty($_GET['AG_form_paginInitPages_' . $this->articleID])) {
                $AG_form_paginInitPages_array = explode(",", $_GET['AG_form_paginInitPages_' . $this->articleID]);
                $this->paginInitPages[$this->index] = strip_tags($AG_form_paginInitPages_array[$this->index]);
            }
            $script = 'var paginInitPages_' . $this->articleID . '="' . implode(",", $this->paginInitPages) . '";';
            
            $this->doc->addScriptDeclaration(strip_tags($script));

            // Album Support
            $this->albumParentLink = '';
            $this->albumInitFolders[] = "";
            $this->albumInitFolders[$this->index] = strip_tags($this->imagesFolderName); // Set init folders
            if (!empty($_GET['AG_form_albumInitFolders_' . $this->articleID])) {
                $AG_form_albumInitFolders_array = explode(",", $_GET['AG_form_albumInitFolders_' . $this->articleID]);
                $this->albumInitFolders[$this->index] = strip_tags($AG_form_albumInitFolders_array[$this->index]);
                $this->imagesFolderName = strip_tags($AG_form_albumInitFolders_array[$this->index]);
                // Support for Album Parent Link
                if ($this->imagesFolderName != $this->imagesFolderNameOriginal) {
                    $this->albumParentLink = '
                        <a href="javascript:void(0);" onClick="AG_form_submit_' . strip_tags($this->articleID) . '(' . strip_tags($this->index) . ',1,\'' . strip_tags(dirname($this->imagesFolderName)) . '\'); return false;" class="AG_album_parent">
                            <span>
                                ' . strip_tags(basename(dirname($this->imagesFolderName))) . '
                            </span>
                        </a>
                        <br style="clear:both;" />
                        ';
                }
            }

            // Breadcrump Support           
            if (JFactory::getApplication()->getMenu()->getActive()->query['view'] == "layout") {
                $this->writeBreadcrum();
            }

            $script = 'var albumInitFolders_' . $this->articleID . '="' . implode(",", $this->albumInitFolders) . '";';
            $this->doc->addScriptDeclaration(strip_tags($script));
        }
        $this->imagesFolderPhysicalPath = $this->sitePhysicalPath . $this->params['rootFolder'] . $this->imagesFolderName . $this->DS;
        $this->thumbsFolderPhysicalPath = $this->sitePhysicalPath . PLUGIN_BASE_PATH . 'thumbs' . $this->DS . $this->imagesFolderName . $this->DS;
        $this->imagesFolderPath = $this->sitePath . $this->params["rootFolder"] . $this->imagesFolderName . '/';
        $this->readDescriptionFiles();
        $this->loadImageFiles();
        $this->loadFolders();
        $this->currPopupRoot = 'popups/' . $this->params['popupEngine'] . '/';
        $this->currTemplateRoot = 'templates/' . $this->params['template'] . '/';
        $this->pluginPath = $this->sitePath . PLUGIN_BASE_PATH;
    }

    /**
     *  Clears obsolete thumbnail folders
     */
    function cleanThumbsFolder() {
        $this->ag_cleanThumbsFolder($this->imagesFolderPhysicalPath, $this->thumbsFolderPhysicalPath);
    }

    /**
     *  Clears obsolete thumbnails
     */
    function clearOldThumbs() {
        $this->ag_clearOldThumbs($this->imagesFolderPhysicalPath, $this->thumbsFolderPhysicalPath, $this->params['albumUse']);
    }

    /**
     *  Reads description files
     */
    private function readDescriptionFiles() {
        // Create Images Array
        unset($this->descArray);

        if (file_exists($this->imagesFolderPhysicalPath)) {

            $ag_images = Array();
            $ag_files = JFolder::files($this->imagesFolderPhysicalPath);
            $ag_ext_valid = array("jpg", "jpeg", "gif", "png"); // SET VALID IMAGE EXTENSION
            foreach ($ag_files as $key => $value) {
                if (is_numeric(array_search(strtolower(agHelper::ag_getExtension(basename($value))), $ag_ext_valid))) {
                    $ag_images[] = $value;
                }
            }
            $ag_files = array_merge($ag_images, JFolder::folders($this->imagesFolderPhysicalPath));

            if (!empty($ag_files)) {
                foreach ($ag_files as $key => $f) {

                    // Set image name as imageDescription value, as predifined value
                    $this->descArray[$f] = $f;

                    // Set Possible Description File Apsolute Path // Instant patch for upper and lower case...
                    $ag_pathWithStripExt = $this->imagesFolderPhysicalPath . agHelper::ag_removExtension($f);
                    $descriptionFileApsolutePath = $ag_pathWithStripExt . ".XML";
                    if (file_exists($ag_pathWithStripExt . ".xml")) {
                        $descriptionFileApsolutePath = $ag_pathWithStripExt . ".xml";
                    }

                    if (file_exists($descriptionFileApsolutePath)) {// Check is descriptions file exists
                        $ag_imgXML_xml = JFactory::getXML($descriptionFileApsolutePath);
                        $ag_imgXML_captions = $ag_imgXML_xml->captions;
                        $lang = JFactory::getLanguage();
                        $langTag = strtolower($lang->getTag());

                        // GET DEFAULT LABEL
                        if (!empty($ag_imgXML_captions->caption)) {
                            foreach ($ag_imgXML_captions->caption as $ag_imgXML_caption) {
                                if (strtolower($ag_imgXML_caption->attributes()->lang) == "default") {
                                    $this->descArray[$f] = $ag_imgXML_caption;
                                }
                            }
                        }

                        // GET CURRENT LANG LABEL
                        if (!empty($ag_imgXML_captions->caption)) {
                            foreach ($ag_imgXML_captions->caption as $ag_imgXML_caption) {
                                if (strtolower($ag_imgXML_caption->attributes()->lang) == strtolower($langTag)) {
                                    $this->descArray[$f] = $ag_imgXML_caption;
                                }
                            }
                        }



                        // RICH TEXT SUPPORT
                        if ($this->params['plainTextCaptions']) {
                            $this->descArray[$f] = strip_tags($this->descArray[$f]);
                        }
                    }
                }
            }// if(file_exists($descriptionFileApsolutePath))
        }
        else
            $this->descArray = null;
    }

    /**
     *  Loads images array, sorted as defined bu parametar.
     */
    private function loadImageFiles() {
        $this->images = agHelper::ag_imageArrayFromFolder($this->imagesFolderPhysicalPath);
        if (!empty($this->images)) {
            $this->images = agHelper::array_sorting($this->images, $this->imagesFolderPhysicalPath,$this->params['arrange']);
        }

        // Paginations Support
        if ($this->params['paginUse']) {
            $this->paginImgTotal = count($this->images);
            $paginImages = Array();
            $ag_pagin_start = ($this->paginInitPages[$this->index] - 1) * $this->params['paginImagesPerGallery'];
            $ag_pagin_end = ($this->paginInitPages[$this->index] * $this->params['paginImagesPerGallery']) - 1;

            if (!empty($this->images)) {
                for ($i = $ag_pagin_start; $i <= $ag_pagin_end; $i++) {
                    if ($i < $this->paginImgTotal) {
                        $paginImages[] = $this->images[$i];
                    }
                }
            }

            $this->images = $paginImages;
        }
    }

    /**
     * Loads folder array, sorted as defined bu parametar.
     */
    private function loadFolders() {
        $this->folders = agHelper::ag_foldersArrayFromFolder($this->imagesFolderPhysicalPath);
        if (!empty($this->folders)) {
            $this->folders = agHelper::array_sorting($this->folders, $this->imagesFolderPhysicalPath,$this->params['arrange']);
        }
    }

    /**
     * Generates thumbs, check for settings change and recreates thumbs if it needs to
     */
    function generateThumbs() {
        if (($this->params['thumbWidth'] == 0) || ($this->params['thumbHeight'] == 0)) {
            $this->adderror(JText::_("AG_CANNOT_CREATE_THUMBNAILS_WIDTH_AND_HEIGHT_MUST_BE_GREATER_THEN_0"));
            return;
        }
        //Add's index.html to thumbs folder
        if (!file_exists($this->thumbsFolderPhysicalPath . $this->DS . 'index.html')) {
            $this->ag_indexWrite($this->thumbsFolderPhysicalPath . $this->DS . 'index.html');
        }
        // Check for Changes
        if (!empty($this->images)) {
            foreach ($this->images as $imagesKey => $imagesValue) {
                $original_file = $this->imagesFolderPhysicalPath . $imagesValue;
                $thumb_file = $this->thumbsFolderPhysicalPath . $imagesValue;
                if (!file_exists($thumb_file)) {
                    $this->addError(agHelper::ag_createThumb($this->imagesFolderPhysicalPath . $imagesValue, $thumb_file, $this->params['thumbWidth'], $this->params['thumbHeight'], $this->params['thumbAutoSize']));
                } else {

                    list($imagewidth, $imageheight) = getimagesize($thumb_file);
                    switch ($this->params['thumbAutoSize']) {
                        case "none":
                            if ($imageheight != $this->params['thumbHeight'] || $imagewidth != $this->params['thumbWidth']) {
                                $this->addError(agHelper::ag_createThumb($this->imagesFolderPhysicalPath . $imagesValue, $thumb_file, $this->params['thumbWidth'], $this->params['thumbHeight'], $this->params['thumbAutoSize']));
                            }
                            break;
                        case "height":
                            if ($imagewidth != $this->params['thumbWidth']) {
                                $this->addError(agHelper::ag_createThumb($this->imagesFolderPhysicalPath . $imagesValue, $thumb_file, $this->params['thumbWidth'], $this->params['thumbHeight'], $this->params['thumbAutoSize']));
                            }
                            break;
                        case "width":
                            if ($imageheight != $this->params['thumbHeight']) {
                                $this->addError(agHelper::ag_createThumb($this->imagesFolderPhysicalPath . $imagesValue, $thumb_file, $this->params['thumbWidth'], $this->params['thumbHeight'], $this->params['thumbAutoSize']));
                            }
                            break;
                    }
                }
                // ERROR - Invalid image
                if (!file_exists($thumb_file)) {
                    //$this->addError("Cannot read thumbnail");
                    $this->addError(JText::sprintf("AG_CANNOT_READ_THUMBNAIL", $thumb_file));
                }
            }
        }
    }

    /**
     * Generates Album Thumbs
     */
    function Album_generateThumb($AG_parent_folder, $AG_img) {
        if (($this->params['thumbWidth'] == 0) || ($this->params['thumbHeight'] == 0)) {
            $this->adderror(JText::_("AG_CANNOT_CREATE_THUMBNAILS_WIDTH_AND_HEIGHT_MUST_BE_GREATER_THEN_0"));
            return;
        }
        $imagesFolderPhysicalPath = $this->imagesFolderPhysicalPath . $AG_parent_folder . $this->DS;
        $thumbsFolderPhysicalPath = $this->thumbsFolderPhysicalPath . $AG_parent_folder . $this->DS;
        //Create directory in thumbs for gallery
        if (!file_exists($thumbsFolderPhysicalPath)) {
            JFolder::create($thumbsFolderPhysicalPath, 0755);
        }
        //Add's index.html to thumbs folder
        if (!file_exists($thumbsFolderPhysicalPath . 'index.html')) {
            $this->ag_indexWrite($thumbsFolderPhysicalPath . 'index.html');
        }
        $original_file = $imagesFolderPhysicalPath . $AG_img;
        $thumb_file = $thumbsFolderPhysicalPath . $AG_img;
        if (!file_exists($thumb_file)) {
            $this->addError(agHelper::ag_createThumb($original_file, $thumb_file, $this->params['thumbWidth'], $this->params['thumbHeight'], $this->params['thumbAutoSize']));
        } else {
            list($imagewidth, $imageheight) = getimagesize($thumb_file);
            switch ($this->params['thumbAutoSize']) {
                case "none":
                    if ($imageheight != $this->params['thumbHeight'] || $imagewidth != $this->params['thumbWidth']) {
                        $this->addError(agHelper::ag_createThumb($original_file, $thumb_file, $this->params['thumbWidth'], $this->params['thumbHeight'], $this->params['thumbAutoSize']));
                    }
                    break;
                case "height":
                    if ($imagewidth != $this->params['thumbWidth']) {
                        $this->addError(agHelper::ag_createThumb($original_file, $thumb_file, $this->params['thumbWidth'], $this->params['thumbHeight'], $this->params['thumbAutoSize']));
                    }
                    break;
                case "width":
                    if ($imageheight != $this->params['thumbHeight']) {
                        $this->addError(agHelper::ag_createThumb($original_file, $thumb_file, $this->params['thumbWidth'], $this->params['thumbHeight'], $this->params['thumbAutoSize']));
                    }
                    break;
            }
        }
        // ERROR - Invalid image
        if (!file_exists($thumb_file)) {
            //$this->addError("Cannot read thumbnail");
            $this->addError(JText::sprintf("AG_CANNOT_READ_THUMBNAIL", $thumb_file));
        }
    }

    /**
     * Returns error html
     */
    function writeErrors() {
        $errors = "";
        $osVersion = $this->ag_get_os_($_SERVER['HTTP_USER_AGENT']);
        $phpVersion = phpversion();
        if (isset($this->errors)) {
            foreach ($this->errors as $key => $value) {
                $errors.='<div class="error">' . $value . ' <br/>
                        Admiror Gallery: ' . AG_VERSION . '<br/>
                        Server OS:' . $_SERVER['SERVER_SOFTWARE'] . '<br/>
                        Client OS:' . $osVersion . '<br/>
                        PHP:' . $phpVersion . '
                        </div>' . "\n";
            }
            unset($this->errors);
        }
        return $errors;
    }

    /**
     * Breadcrump Support
     * Author: Lee Anderson
     * Authors e-mail: landerson@atlas-tech.com
     */
    function writeBreadcrum() {
        $folderNames = str_replace('//', '/', $this->imagesFolderName);
        $albumName = explode("/", $folderNames);
        $folderNumber = count($albumName) - 1;
        $linkFolderName = '';
        for ($i = 0; $i <= $folderNumber; $i++) {
            $linkFolderName .= $albumName[$i] . '/';
            $linkFolderName = str_replace('//', '/', $linkFolderName);
            if ($albumName[$i] != '' && $i != 0) {
                $this->events['name'] = $albumName[$i];
                $link = 'Javascript: AG_form_submit_' . $this->articleID . '(' . $this->index . ',1,\'' . $linkFolderName . '\');';
                $mainframe = JFactory::getApplication();
                $document = JFactory::getDocument();
                $pathway = $mainframe->getPathway();
                $document->setTitle($this->events['name']);
                $pathway->addItem($this->events['name'], $link);
            }
        }
    }

    /**
     *  Reads inline parametar if any or sets default values
     */
    function readInlineParams() {
        ////setting parametars for current gallery, if there is no inline params default params are set
        $this->params['template'] = $this->ag_getParams("template", $this->match, $this->staticParams['template']);
        $this->params['thumbWidth'] = $this->ag_getParams("thumbWidth", $this->match, $this->staticParams['thumbWidth']);
        $this->params['thumbHeight'] = $this->ag_getParams("thumbHeight", $this->match, $this->staticParams['thumbHeight']);
        $this->params['thumbAutoSize'] = $this->ag_getParams("thumbAutoSize", $this->match, $this->staticParams['thumbAutoSize']);
        $this->params['arrange'] = $this->ag_getParams("arrange", $this->match, $this->staticParams['arrange']);
        $this->params['newImageTag'] = $this->ag_getParams("newImageTag", $this->match, $this->staticParams['newImageTag']);
        $this->params['newImageTag_days'] = $this->ag_getParams("newImageDays", $this->match, $this->staticParams['newImageTag_days']);
        $this->params['frameWidth'] = $this->ag_getParams("frameWidth", $this->match, $this->staticParams['frame_width']);
        $this->params['frameHeight'] = $this->ag_getParams("frameHeight", $this->match, $this->staticParams['frame_height']);
        $this->params['showSignature'] = $this->ag_getParams("showSignature", $this->match, $this->staticParams['showSignature']);
        $this->params['plainTextCaptions'] = $this->ag_getParams("plainTextCaptions", $this->match, $this->staticParams['plainTextCaptions']);
        $this->params['popupEngine'] = $this->ag_getParams("popupEngine", $this->match, $this->staticParams['popupEngine']);
        $this->params['backgroundColor'] = $this->ag_getParams("backgroundColor", $this->match, $this->staticParams['backgroundColor']);
        $this->params['foregroundColor'] = $this->ag_getParams("foregroundColor", $this->match, $this->staticParams['foregroundColor']);
        $this->params['highliteColor'] = $this->ag_getParams("highliteColor", $this->match, $this->staticParams['highliteColor']);

        // Albums Support
        $this->params['albumUse'] = $this->ag_getParams("albumUse", $this->match, $this->staticParams['albumUse']);
        // Paginations Support
        $this->params['paginUse'] = $this->ag_getParams("paginUse", $this->match, $this->staticParams['paginUse']);
        $this->params['paginImagesPerGallery'] = $this->ag_getParams("paginImagesPerGallery", $this->match, $this->staticParams['paginImagesPerGallery']);
    }

    /**
     * Gallery constructor, sets path values, sets document reference
     * @param <JParameter> $globalParams
     * @param <string> $path
     * @param <string> $sitePhysicalPath
     * @param <pointer> $document
     */
    function __construct($globalParams, $path, $sitePhysicalPath, $document) {
        $this->staticParams['thumbWidth'] = $globalParams->get('thumbWidth', 200);
        $this->staticParams['thumbHeight'] = $globalParams->get('thumbHeight', 120);
        $this->staticParams['thumbAutoSize'] = $globalParams->get('thumbAutoSize', "none");
        $this->staticParams['template'] = $globalParams->get('template', 'classic');
        $this->staticParams['arrange'] = $globalParams->get('arrange', 'priority');
        $this->staticParams['newImageTag'] = $globalParams->get('newImageTag', true);
        $this->staticParams['newImageTag_days'] = $globalParams->get('newImageTag_days', '7');
        $this->staticParams['frame_width'] = $globalParams->get('frame_width', false);
        $this->staticParams['frame_height'] = $globalParams->get('frame_height', false);
        $this->staticParams['showSignature'] = $globalParams->get('showSignature', true);
        $this->staticParams['plainTextCaptions'] = $globalParams->get('plainTextCaptions', true);
        $this->staticParams['popupEngine'] = $globalParams->get('popupEngine', 'slimbox');
        $this->staticParams['usePopuEngine'] = $globalParams->get('usePopuEngine', true);
        $this->staticParams['ignoreError'] = $globalParams->get('ignoreError', true);
        $this->staticParams['ignoreAllError'] = $globalParams->get('ignoreAllError', false);
        $this->staticParams['rootFolder'] = $globalParams->get('rootFolder', '/images/sampledata/');
        $this->staticParams['backgroundColor'] = $globalParams->get('backgroundColor', 'ffffff');
        $this->staticParams['foregroundColor'] = $globalParams->get('foregroundColor', '808080');
        $this->staticParams['highliteColor'] = $globalParams->get('highliteColor', 'fea804');
        $this->popupEngine = new agPopup();
        $this->params = $this->staticParams;
        if (substr($path, -1) == "/")
            $path = substr($path, 0, -1);
        $this->sitePath = $path;
        $this->sitePhysicalPath = $sitePhysicalPath;
        $this->thumbsFolderPhysicalPath = $sitePhysicalPath . PLUGIN_BASE_PATH . 'thumbs' . $this->DS;
        $this->imagesFolderPhysicalPath = $sitePhysicalPath . $this->params["rootFolder"];
        $this->cleanThumbsFolder();
        $this->doc = $document;
        $this->loadCSS('AdmirorGallery.css');
        //$this->errors = new agErrors();
        // Album Support
        $this->staticParams['albumUse'] = $globalParams->get('albumUse', true);
        // Paginations Support
        $this->staticParams['paginUse'] = $globalParams->get('paginUse', true);
        $this->staticParams['paginImagesPerGallery'] = $globalParams->get('paginImagesPerGallery', 10);
    }
    //Constructor backward compatibility with PHP4
    function agGallery($globalParams, $path, $sitePhysicalPath, $document)
    {
        $this->__construct($globalParams, $path, $sitePhysicalPath, $document);
    }
    //**************************************************************************
    // END Gallery Functions                                                  //
    //**************************************************************************
}

?>
Private