primo commit
This commit is contained in:
134
libraries/fof40/Cli/Joomla3.php
Normal file
134
libraries/fof40/Cli/Joomla3.php
Normal file
@ -0,0 +1,134 @@
|
||||
<?php
|
||||
/**
|
||||
* @package FOF
|
||||
* @copyright Copyright (c)2010-2022 Nicholas K. Dionysopoulos / Akeeba Ltd
|
||||
* @license GNU General Public License version 3, or later
|
||||
*/
|
||||
|
||||
// Do not put the JEXEC or die check on this file
|
||||
|
||||
use FOF40\Cli\Traits\CGIModeAware;
|
||||
use FOF40\Cli\Traits\CustomOptionsAware;
|
||||
use FOF40\Cli\Traits\JoomlaConfigAware;
|
||||
use FOF40\Cli\Traits\MemStatsAware;
|
||||
use FOF40\Cli\Traits\MessageAware;
|
||||
use FOF40\Cli\Traits\TimeAgoAware;
|
||||
use FOF40\Utils\CliSessionHandler;
|
||||
use Joomla\CMS\Application\CliApplication;
|
||||
use Joomla\CMS\Input\Cli;
|
||||
|
||||
// Load the legacy Joomla! include files (Joomla! 3 only)
|
||||
include_once JPATH_LIBRARIES . '/import.legacy.php';
|
||||
|
||||
// Load the CMS import file if it exists (newer Joomla! 3 versions and Joomla! 4)
|
||||
$cmsImportFilePath = JPATH_LIBRARIES . '/cms.php';
|
||||
|
||||
if (@file_exists($cmsImportFilePath))
|
||||
{
|
||||
@include_once $cmsImportFilePath;
|
||||
}
|
||||
|
||||
/**
|
||||
* Base class for a Joomla! command line application. Adapted from JCli / JApplicationCli
|
||||
*/
|
||||
abstract class FOFCliApplicationJoomla3 extends CliApplication
|
||||
{
|
||||
use CGIModeAware, CustomOptionsAware, JoomlaConfigAware, MemStatsAware, MessageAware, TimeAgoAware;
|
||||
|
||||
private $allowedToClose = false;
|
||||
|
||||
public static function getInstance($name = null)
|
||||
{
|
||||
// Load the Joomla global configuration in JFactory. This must happen BEFORE loading FOF.
|
||||
JFactory::getConfig(JPATH_CONFIGURATION . '/configuration.php');
|
||||
|
||||
// Load FOF
|
||||
if (!defined('FOF40_INCLUDED') && !@include_once(JPATH_LIBRARIES . '/fof40/include.php'))
|
||||
{
|
||||
throw new RuntimeException('Cannot load FOF', 500);
|
||||
}
|
||||
|
||||
// Create a CLI-specific session
|
||||
JFactory::$session = JSession::getInstance('none', [
|
||||
'expire' => 84400,
|
||||
], new CliSessionHandler());
|
||||
|
||||
$instance = parent::getInstance($name);
|
||||
|
||||
JFactory::$application = $instance;
|
||||
|
||||
return $instance;
|
||||
}
|
||||
|
||||
public function __construct(Cli $input = null, \Joomla\Registry\Registry $config = null, \JEventDispatcher $dispatcher = null)
|
||||
{
|
||||
// Some servers only provide a CGI executable. While not ideal for running CLI applications we can make do.
|
||||
$this->detectAndWorkAroundCGIMode();
|
||||
|
||||
// Initialize custom options handling which is a bit more straightforward than Input\Cli.
|
||||
$this->initialiseCustomOptions();
|
||||
|
||||
parent::__construct($input, $config, $dispatcher);
|
||||
|
||||
/**
|
||||
* Allow the application to close.
|
||||
*
|
||||
* This is required to allow CliApplication to execute under CGI mode. The checks performed in the parent
|
||||
* constructor will call close() if the application does not run pure CLI mode. However, some hosts only provide
|
||||
* the PHP CGI binary for executing CLI scripts. While wrong it will work in most cases. By default close() will
|
||||
* do nothing, thereby allowing the parent constructor to call it without a problem. Finally, we set this flag
|
||||
* to true to allow doExecute() to call close() and actually close the application properly. Yeehaw!
|
||||
*/
|
||||
$this->allowedToClose = true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Method to close the application.
|
||||
*
|
||||
* See the constructor for details on why it works the way it works.
|
||||
*
|
||||
* @param integer $code The exit code (optional; default is 0).
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
* @codeCoverageIgnore
|
||||
* @since 1.0
|
||||
*/
|
||||
public function close($code = 0)
|
||||
{
|
||||
// See the constructor for details
|
||||
if (!$this->allowedToClose)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
exit($code);
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the name of the current running application.
|
||||
*
|
||||
* @return string The name of the application.
|
||||
*
|
||||
* @since 4.0.0
|
||||
*/
|
||||
public function getName()
|
||||
{
|
||||
return get_class($this);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the menu object.
|
||||
*
|
||||
* @param string $name The application name for the menu
|
||||
* @param array $options An array of options to initialise the menu with
|
||||
*
|
||||
* @return \Joomla\CMS\Menu\AbstractMenu|null A AbstractMenu object or null if not set.
|
||||
*
|
||||
* @since 4.0.0
|
||||
*/
|
||||
public function getMenu($name = null, $options = [])
|
||||
{
|
||||
return null;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user