| Current Path : /home/megadansyp/www/components/com_eventgallery/library/factory/ |
| Current File : /home/megadansyp/www/components/com_eventgallery/library/factory/folder.php |
<?php
/**
* @package Sven.Bluege
* @subpackage com_eventgallery
*
* @copyright Copyright (C) 2005 - 2019 Sven Bluege All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
// Check to ensure this file is included in Joomla!
defined('_JEXEC') or die();
class EventgalleryLibraryFactoryFolder extends EventgalleryLibraryFactoryFactory
{
/**
* @var EventgalleryLibraryFolder[]
*/
protected $_folders;
protected $_allFolderDatabaseObject = NULL;
/**
* Returns a folder
*
* @param $foldername string
* @return EventgalleryLibraryFolder
*/
public function getFolder($foldername) {
if (null == $foldername) {
return null;
}
if (!is_string($foldername)) {
throw new InvalidArgumentException("can get a folder by String only.");
}
return $this->getFolderFromDatabaseObject($foldername);
}
/**
* @return EventgalleryLibraryFolder[]
*/
public function getAllFolders() {
$allFolders = $this->getAllFoldersFromDatabase();
foreach($allFolders as $folder) {
$this->getFolderFromDatabaseObject($folder->folder);
}
return $this->_folders;
}
/**
* @param $id integer
*/
public function getFolderById($id) {
foreach ($this->getAllFoldersFromDatabase() as $folderFromDatabase) {
if ($folderFromDatabase->id == $id) {
return $this->getFolderFromDatabaseObject($folderFromDatabase->folder);
}
}
return null;
}
protected function getFolderFromDatabaseObject($foldername) {
$allFolders = $this->getAllFoldersFromDatabase();
if (!isset($this->_folders[$foldername])) {
$databaseFolder = null;
if (isset($allFolders[$foldername])) {
$databaseFolder = $allFolders[$foldername];
}
if (isset($databaseFolder->folderhandlerclassname)) {
$folderClass = $databaseFolder->folderhandlerclassname;
/**
* @var EventgalleryLibraryFolder $folderClass
* */
$this->_folders[$foldername] = new $folderClass($databaseFolder);
} else {
$this->_folders[$foldername] = null;
}
}
return $this->_folders[$foldername];
}
protected function getAllFoldersFromDatabase() {
if (NULL === $this->_allFolderDatabaseObject) {
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select('f.*');
$query->from('#__eventgallery_folder f');
$db->setQuery($query);
$result = $db->loadObjectList();
$this->_allFolderDatabaseObject = array();
/**
* @var EventgalleryLibraryFactoryFoldertype $folderTypeFactory
*/
$folderTypeFactory = EventgalleryLibraryFactoryFoldertype::getInstance();
foreach($result as $databaseFolder) {
$databaseFolder->folderhandlerclassname = $folderTypeFactory->getFolderTypeById($databaseFolder->foldertypeid)->getFolderHandlerClassname();
$this->_allFolderDatabaseObject[$databaseFolder->folder] = $databaseFolder;
}
}
return $this->_allFolderDatabaseObject;
}
public static function clear() {
/**
* @var EventgalleryLibraryFactoryFolder $folderFactory
*/
$folderFactory = self::getInstance();
$folderFactory->_folders = null;
$folderFactory->_allFolderDatabaseObject = null;
parent::clear();
}
}