| Current Path : /home/smartconb/www/armencom33/components/com_eventgallery/src/Library/Manager/ |
| Current File : /home/smartconb/www/armencom33/components/com_eventgallery/src/Library/Manager/FolderManager.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
*/
namespace Svenbluege\Component\Eventgallery\Site\Library\Manager;
use Joomla\CMS\Factory;
use Svenbluege\Component\Eventgallery\Site\Library\Factory\FolderFactory;
use Svenbluege\Component\Eventgallery\Site\Library\Factory\FolderTypeFactory;
use Svenbluege\Component\Eventgallery\Site\Library\Folder\AddResult;
use Svenbluege\Component\Eventgallery\Site\Library\Folder\Folder;
use Svenbluege\Component\Eventgallery\Site\Library\FolderType;
defined('_JEXEC') or die();
class FolderManager extends AbstractManager
{
public static $SYNC_STATUS_NOSYNC = 0;
public static $SYNC_STATUS_SYNC = 1;
public static $SYNC_STATUS_DELTED = 2;
public static $SYNC_STATUS_FAILED = 3;
private $_folders = null;
/**
* scans the main dir and adds new folders to the database
* Does not add Files!
*
* @return AddResult[]
*/
public function findNewFolders() {
$newFolders = Array();
/**
* @var FolderTypeFactory $foldertypeFactory
* @var FolderType $folderType
*/
$foldertypeFactory = FolderTypeFactory::getInstance();
foreach($foldertypeFactory->getFolderTypes(true) as $folderType) {
$folderClass = $folderType->getFolderHandlerClassname();
/**
* @var Folder $folderClass
* */
$newFolders = array_merge($newFolders, $folderClass::findNewFolders());
}
return $newFolders;
}
public function addNewFolders() {
$newFolders = self::findNewFolders();
foreach($newFolders as $newFolder) {
/**
* @var $newFolder AddResult
*/
self::addNewFolder($newFolder->foldername, $newFolder->foldertype);
}
return $newFolders;
}
public function addNewFolder($folder, $foldertype) {
/**
* @var FolderTypeFactory $foldertypeFactory
* @var FolderType $folderType
*/
$foldertypeFactory = FolderTypeFactory::getInstance();
foreach($foldertypeFactory->getFolderTypes(true) as $folderType) {
$folderClass = $folderType->getFolderHandlerClassname();
/**
* @var AbstractFolder $folderClass
* */
if ($folderClass::ID == $foldertype) {
$folderClass::addNewFolder($folder);
/**
* @var $folderFactory FolderFactory
*/
FolderFactory::clear();
}
}
}
/**
* transforms a foldername into its ID. Since the main id is the folder name we need this mapping.
*
* @param $foldername
*/
public function getFolderId($foldername) {
if (null == $this->_folders) {
$db = Factory::getDbo();
$query = $db->getQuery(true);
$query->select('id, folder')
->from('#__eventgallery_folder');
$db->setQuery($query);
$results = $db->loadObjectList();
$this->_folders = array();
foreach($results as $row) {
$this->_folders[$row->folder] = $row->id;
}
}
if (isset($this->_folders[$foldername])) {
return $this->_folders[$foldername];
}
return null;
}
}