| Current Path : /home/megadansyp/www/components/com_eventgallery/library/Commands/ |
| Current File : /home/megadansyp/www/components/com_eventgallery/library/Commands/Sync.php |
<?php
namespace Joomla\Component\Eventgallery\Site\Library\Commands;
/**
* @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
*/
defined('_JEXEC') or die;
use Joomla\CMS\Factory;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;
if (version_compare(JVERSION, '4.0', '<' ) == 1) {
return;
}
class Sync extends \Joomla\Console\Command\AbstractCommand
{
protected static $defaultName = 'eventgallery:sync';
public function doExecute(InputInterface $input, OutputInterface $output): int
{
$symfonyStyle = new \Symfony\Component\Console\Style\SymfonyStyle($input, $output);
define('JPATH_COMPONENT_ADMINISTRATOR', JPATH_ADMINISTRATOR . '/components/com_eventgallery');
define('JPATH_COMPONENT_SITE', JPATH_SITE . '/components/com_eventgallery');
$language = Factory::getLanguage();
$language->load('com_eventgallery' , JPATH_COMPONENT_ADMINISTRATOR, $language->getTag(), true);
//JLoader::registerPrefix('Eventgallery', JPATH_COMPONENT_ADMINISTRATOR);
\JLoader::registerPrefix('Eventgallery', JPATH_COMPONENT_SITE);
$config = \Joomla\Component\Eventgallery\Site\Library\Configuration\Main::getInstance();
$use_htacces_to_protect_original_files = $config->getImage()->doUseHtaccessToProtectOriginalFiles();
require_once(JPATH_COMPONENT_ADMINISTRATOR.'/models/sync.php');
$syncModel = \JModelLegacy::getInstance('EventgalleryModelSync', '', array('ignore_request' => true));
$symfonyStyle->title("Adding new Folders");
/**
* @var EventgalleryLibraryManagerFolder $folderMgr
* @var EventgalleryLibraryFactoryFile $fileFactory
*/
$folderMgr = \EventgalleryLibraryManagerFolder::getInstance();
$fileFactory = \EventgalleryLibraryFactoryFile::getInstance();
$addResults = $folderMgr->addNewFolders();
foreach($addResults as $addResult) {
/**
* @var EventgalleryLibraryFolderAddresult $addResult
*/
if ($addResult->getError() != null) {
$symfonyStyle->error("ERROR: " . $addResult->getError() . "\n");
} else {
$symfonyStyle->write("Added: " . $addResult->getFolderName() . "\n");
}
}
$folders = $syncModel->getFolders();
$symfonyStyle->title("Synchronizing " . count($folders) . " folders");
foreach($folders as $folder) {
$result = $syncModel->syncFolder($folder->getFolderName(), null, $use_htacces_to_protect_original_files);
if (isset($result['files'])) {
$files = $result['files'];
$symfonyStyle->write("Sync $folder with " . count($files) . " files\n\n");
/**
* @var EventgalleryLibraryFile $file
*/
foreach ($files as $filename) {
$symfonyStyle->write(" (Memory usage: ".memory_get_usage().") $folder - $filename \n");
$file = $fileFactory->getFile($folder->getFolderName(), $filename);
$file->syncFile();
}
}
$symfonyStyle->write("\n\n");
}
$symfonyStyle->success("Sync finished.");
return 0;
}
protected function configure(): void
{
$this->setDescription('Sync filesystem with database');
$this->setHelp(
<<<EOF
Event Gallery - Sync
#######################
This script adds/removes/updates the data stored in the database for your local/S3 files. Usually you run this because you modified files without using the backoffice.
EOF
);
}
}