Файловый менеджер - Редактировать - /var/www/consult-e-syn/public_html/components/com_akeeba/Controller/Backup.php
Назад
<?php /** * @package akeebabackup * @copyright Copyright (c)2006-2023 Nicholas K. Dionysopoulos / Akeeba Ltd * @license GNU General Public License version 3, or later */ namespace Akeeba\Backup\Site\Controller; // Protect from unauthorized access defined('_JEXEC') || die(); use Akeeba\Backup\Site\Controller\Mixin\ActivateProfile; use Akeeba\Backup\Site\Controller\Mixin\CustomRedirection; use Akeeba\Backup\Site\Controller\Mixin\FrontEndPermissions; use Akeeba\Engine\Factory; use FOF40\Container\Container; use FOF40\Controller\Controller; use FOF40\Controller\Mixin\PredefinedTaskList; use FOF40\Date\Date; use Joomla\CMS\Component\ComponentHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\Router\Route; use Joomla\CMS\Uri\Uri; if (!defined('AKEEBA_BACKUP_ORIGIN')) { define('AKEEBA_BACKUP_ORIGIN', 'frontend'); } /** * Controller for the front-end backup feature. * * The Traits used by this class offer most of the features you don't see, especially those pertaining to security: * PredefinedTaskList Only allows certain tasks to be called. * FrontEndPermissions Validates the secret word before running a task through checkPermissions. * ActivateProfile Finds the profile specified in the URL and loads it through setProfile. * CustomRedirection Provides customRedirect for HTTP redirects without dealing with CMS inconsistencies. */ class Backup extends Controller { use PredefinedTaskList; use FrontEndPermissions; use ActivateProfile; use CustomRedirection; /** @var bool */ private $noFlush = false; /** * Overridden constructor * * @param Container $container The application container * @param array $config The configuration array */ public function __construct(Container $container, array $config) { parent::__construct($container, $config); $this->setPredefinedTaskList(['main', 'step']); $this->noFlush = ComponentHelper::getParams('com_akeeba')->get('no_flush', 0) == 1; } /** * Start a front-end legacy backup * * @return void */ public function main() { $this->checkPermissions(); $this->setProfile(); if (class_exists('Joomla\CMS\Component\ComponentHelper') && \Joomla\CMS\Component\ComponentHelper::isEnabled('com_akeebabackup')) { @ob_end_clean(); echo '500 ERROR -- Please finish upgrading to Akeeba Backup 9 and uninstall Akeeba Backup 8 per the instructions shown on your site\'s backend, Components, Akeeba Backup'; if (!$this->noFlush) { flush(); } $this->container->platform->closeApplication(); } // Get the backup ID $backupId = $this->input->get('backupid', null, 'cmd'); if (empty($backupId)) { $backupId = null; } /** @var \Akeeba\Backup\Site\Model\Backup $model */ $model = $this->container->factory->model('Backup')->tmpInstance(); $dateNow = new Date(); $model->setState('tag', AKEEBA_BACKUP_ORIGIN); $model->setState('backupid', $backupId); $model->setState('description', $model->getDefaultDescription() . ' (Frontend)'); $model->setState('comment', ''); $array = $model->startBackup(); $backupId = $model->getState('backupid', null, 'cmd'); $this->processEngineReturnArray($array, $backupId); } /** * Step through a front-end legacy backup * * @return void */ public function step() { // Setup $this->checkPermissions(); $this->setProfile(); // Get the backup ID $backupId = $this->input->get('backupid', null, 'cmd'); if (empty($backupId)) { $backupId = null; } /** @var \Akeeba\Backup\Site\Model\Backup $model */ $model = $this->container->factory->model('Backup')->tmpInstance(); $model->setState('tag', AKEEBA_BACKUP_ORIGIN); $model->setState('backupid', $backupId); $array = $model->stepBackup(); $backupId = $model->getState('backupid', null, 'cmd'); $this->processEngineReturnArray($array, $backupId); } /** * Used by the tasks to process Akeeba Engine's return array. Depending on the result and the component options we * may throw text output or send an HTTP redirection header. * * @param array $array The return array to process * @param string $backupId The backup ID (used to step the backup process) */ private function processEngineReturnArray($array, $backupId) { if ($array['Error'] != '') { @ob_end_clean(); echo '500 ERROR -- ' . $array['Error']; if (!$this->noFlush) { flush(); } $this->container->platform->closeApplication(); } if ($array['HasRun'] == 1) { // All done Factory::nuke(); Factory::getFactoryStorage()->reset(); @ob_end_clean(); header('Content-type: text/plain'); header('Connection: close'); echo '200 OK'; if (!$this->noFlush) { flush(); } $this->container->platform->closeApplication(); } $noredirect = $this->input->get('noredirect', 0, 'int'); if ($noredirect != 0) { @ob_end_clean(); header('Content-type: text/plain'); header('Connection: close'); echo "301 More work required -- BACKUPID ###$backupId###"; if (!$this->noFlush) { flush(); } $this->container->platform->closeApplication(); } $curUri = Uri::getInstance(); $ssl = $curUri->isSSL() ? 1 : 0; $tempURL = Route::_('index.php?option=com_akeeba', false, $ssl); $uri = new Uri($tempURL); $uri->delVar('key'); $uri->setVar('view', 'Backup'); $uri->setVar('task', 'step'); $uri->setVar('profile', $this->input->get('profile', 1, 'int')); if (!empty($backupId)) { $uri->setVar('backupid', $backupId); } // Maybe we have a multilingual site? $language = $this->container->platform->getLanguage(); $languageTag = $language->getTag(); $uri->setVar('lang', $languageTag); $key = $this->input->get('key', '', 'none', 2); $redirectionUrl = $uri->toString() . '&key=' . urlencode($key); $this->customRedirect($redirectionUrl); } }
| ver. 1.4 |
Github
|
.
| PHP 7.4.16 | Генерация страницы: 0 |
proxy
|
phpinfo
|
Настройка