%PDF- %PDF-
Direktori : /home/lightco1/upgrade.lightco.com.au/administrator/components/com_akeeba/View/Backup/ |
Current File : /home/lightco1/upgrade.lightco.com.au/administrator/components/com_akeeba/View/Backup/Html.php |
<?php /** * @package AkeebaBackup * @copyright Copyright (c)2006-2017 Nicholas K. Dionysopoulos / Akeeba Ltd * @license GNU General Public License version 3, or later */ namespace Akeeba\Backup\Admin\View\Backup; // Protect from unauthorized access defined('_JEXEC') or die(); use Akeeba\Backup\Admin\Helper\Status; use Akeeba\Backup\Admin\Model\Backup; use Akeeba\Backup\Admin\Model\ControlPanel; use Akeeba\Backup\Admin\View\ViewTraits\ProfileIdAndName; use Akeeba\Backup\Admin\View\ViewTraits\ProfileList; use Akeeba\Engine\Factory; use FOF30\Date\Date; use FOF30\View\DataView\Html as BaseView; use JFactory; use JHtml; use JLoader; use JText; use JUri; /** * View controller for the Backup Now page */ class Html extends BaseView { use ProfileList, ProfileIdAndName; /** * Do we have errors preventing the backup from starting? * * @var bool */ public $hasErrors = false; /** * Do we have warnings which may affect –but do not prevent– the backup from running? * * @var bool */ public $hasWarnings = false; /** * The HTML of the warnings cell * * @var string */ public $warningsCell = ''; /** * Backup description * * @var string */ public $description = ''; /** * Default backup description * * @var string */ public $defaultDescription = ''; /** * Backup comment * * @var string */ public $comment = ''; /** * JSON string of the backup domain name to titles associative array * * @var array */ public $domains = ''; /** * Maximum execution time in seconds * * @var int */ public $maxExecutionTime = 10; /** * Execution time bias, in percentage points (0-100) * * @var int */ public $runtimeBias = 75; /** * Should we use an IFRAME to run the AJAX? * * @var bool */ public $useIFRAME = false; /** * URL to return to after the backup is complete * * @var string */ public $returnURL = ''; /** * Is the output directory unwritable? * * @var bool */ public $unwriteableOutput = false; /** * Should I show the JPS password field? 0/1. * * @var int */ public $showJPSPassword = 0; /** * JPS password * * @var string */ public $jpsPassword = ''; /** * Should I show the ANGIE password field? 0/1. * * @var int */ public $showANGIEPassword = 0; /** * ANGIE password * * @var string */ public $ANGIEPassword = ''; /** * Should I autostart the backup? * * @var string */ public $autoStart = false; /** * Should I display desktop notifications? 0/1 * * @var int */ public $desktopNotifications = 0; /** * Should I try to automatically resume the backup in case of an error? 0/1 * * @var int */ public $autoResume = 0; /** * After how many seconds should I try to automatically resume the backup? * * @var int */ public $autoResumeTimeout = 10; /** * How many times in total should I try to automatically resume the backup? * * @var int */ public $autoResumeRetries = 3; /** * Should I prompt the user to run the Configuration Wizard? * * @var bool */ public $promptForConfigurationWizard = false; /** * Runs before displaying the backup page */ public function onBeforeMain() { // Load the view-specific Javascript $this->addJavascriptFile('media://com_akeeba/js/Backup.min.js'); // Preload Joomla! behaviours JLoader::import('joomla.utilities.date'); JHtml::_('formbehavior.chosen'); // Load the models /** @var Backup $model */ $model = $this->getModel(); /** @var ControlPanel $cpanelmodel */ $cpanelmodel = $this->container->factory->model('ControlPanel')->tmpInstance(); // Load the Status Helper $helper = Status::getInstance(); // Determine default description $default_description = $this->getDefaultDescription(); // Load data from the model state $backup_description = $model->getState('description', $default_description); $comment = $model->getState('comment', ''); $returnurl = $model->getState('returnurl'); // Only allow non-empty, internal URLs for the redirection if (empty($returnurl)) { $returnurl = ''; } if (!JUri::isInternal($returnurl)) { $returnurl = ''; } // Get the maximum execution time and bias $engineConfiguration = Factory::getConfiguration(); $maxexec = $engineConfiguration->get('akeeba.tuning.max_exec_time', 14) * 1000; $bias = $engineConfiguration->get('akeeba.tuning.run_time_bias', 75); // Check if the output directory is writable $warnings = Factory::getConfigurationChecks()->getDetailedStatus(); $unwritableOutput = array_key_exists('001', $warnings); // Pass on data $this->getProfileList(); $this->getProfileIdAndName(); $this->hasErrors = !$helper->status; $this->hasWarnings = $helper->hasQuirks(); $this->warningsCell = $helper->getQuirksCell(!$helper->status); $this->description = $backup_description; $this->defaultDescription = $default_description; $this->comment = $comment; $this->domains = json_encode($this->getDomains()); $this->maxExecutionTime = $maxexec; $this->runtimeBias = $bias; $this->useIFRAME = $engineConfiguration->get('akeeba.basic.useiframe', 0) == 1; $this->returnURL = $returnurl; $this->unwriteableOutput = $unwritableOutput; $this->autoStart = $model->getState('autostart'); $this->desktopNotifications = $this->container->params->get('desktop_notifications', '0') ? 1 : 0; $this->autoResume = $engineConfiguration->get('akeeba.advanced.autoresume', 1); $this->autoResumeTimeout = $engineConfiguration->get('akeeba.advanced.autoresume_timeout', 10); $this->autoResumeRetries = $engineConfiguration->get('akeeba.advanced.autoresume_maxretries', 3); $this->promptForConfigurationWizard = $engineConfiguration->get('akeeba.flag.confwiz', 0) == 0; if ($engineConfiguration->get('akeeba.advanced.archiver_engine', 'jpa') == 'jps') { $this->showJPSPassword = 1; $this->jpsPassword = $engineConfiguration->get('engine.archiver.jps.key', ''); } // Always show ANGIE password: we add that feature to the Core version as well $this->showANGIEPassword = 1; $this->ANGIEPassword = $engineConfiguration->get('engine.installer.angie.key', ''); // Push language strings to Javascript JText::script('COM_AKEEBA_BACKUP_TEXT_LASTRESPONSE'); JText::script('COM_AKEEBA_BACKUP_TEXT_BACKUPSTARTED'); JText::script('COM_AKEEBA_BACKUP_TEXT_BACKUPFINISHED'); JText::script('COM_AKEEBA_BACKUP_TEXT_BACKUPHALT'); JText::script('COM_AKEEBA_BACKUP_TEXT_BACKUPRESUME'); JText::script('COM_AKEEBA_BACKUP_TEXT_BACKUPHALT_DESC'); JText::script('COM_AKEEBA_BACKUP_TEXT_BACKUPFAILED'); JText::script('COM_AKEEBA_BACKUP_TEXT_BACKUPWARNING'); JText::script('COM_AKEEBA_BACKUP_TEXT_AVGWARNING'); } /** * Get the default description for this backup attempt * * @return string */ private function getDefaultDescription() { $tzDefault = $this->container->platform->getConfig()->get('offset'); $user = $this->container->platform->getUser(); $tz = $user->getParam('timezone', $tzDefault); $dateNow = new Date('now', $tz); $default_description = JText::_('COM_AKEEBA_BACKUP_DEFAULT_DESCRIPTION') . ' ' . $dateNow->format(JText::_('DATE_FORMAT_LC2'), true); return $default_description; } /** * Get a list of backup domain keys and titles * * @return array */ private function getDomains() { $engineConfiguration = Factory::getConfiguration(); $script = $engineConfiguration->get('akeeba.basic.backup_type', 'full'); $scripting = Factory::getEngineParamsProvider()->loadScripting(); $domains = array(); if (empty($scripting)) { return $domains; } foreach ($scripting['scripts'][ $script ]['chain'] as $domain) { $description = JText::_($scripting['domains'][ $domain ]['text']); $domain_key = $scripting['domains'][ $domain ]['domain']; $domains[] = array($domain_key, $description); } return $domains; } }