3) { $dirParts = array_splice($dirParts, 0, -3); $myDir = implode(DIRECTORY_SEPARATOR, $dirParts); } if (@file_exists(__DIR__ . '/../../helpers/integration.php')) { require_once __DIR__ . '/../../helpers/integration.php'; } elseif (@file_exists('../../helpers/integration.php')) { require_once '../../helpers/integration.php'; } elseif (@file_exists($myDir . '/helpers/integration.php')) { require_once $myDir . '/helpers/integration.php'; } // Load the platform defines if (!defined('APATH_BASE')) { require_once __DIR__ . '/../defines.php'; } // Load the version file if (@file_exists(__DIR__ . '/../version.php')) { require_once __DIR__ . '/../version.php'; } // Add our app to the autoloader, if it's not already set $prefixes = Autoloader::getInstance()->getPrefixes(); if (!array_key_exists('Solo\\', $prefixes)) { Autoloader::getInstance()->addMap('Solo\\', APATH_BASE . '/Solo'); } // Include the Akeeba Engine factory if (!defined('AKEEBAENGINE')) { define('AKEEBAENGINE', 1); $factoryPath = __DIR__ . '/../Solo/engine/factory.php'; // Load the engine if (!file_exists($factoryPath)) { echo "ERROR!\n"; echo "Could not load the backup engine; file does not exist. Technical information:\n"; echo "Path to " . basename(__FILE__) . ": " . __DIR__ . "\n"; echo "Path to factory file: $factoryPath\n"; die("\n"); } else { try { require_once $factoryPath; } catch (\Exception $e) { echo "ERROR!\n"; echo "Backup engine returned an error. Technical information:\n"; echo "Error message:\n\n"; echo $e->getMessage() . "\n\n"; echo "Path to " . basename(__FILE__) . ":" . __DIR__ . "\n"; echo "Path to factory file: $factoryPath\n"; die("\n"); } } Platform::addPlatform('Solo', __DIR__ . '/../Solo/Platform/Solo'); Platform::getInstance()->load_version_defines(); Platform::getInstance()->apply_quirk_definitions(); } class CheckFailedApplication extends \Awf\Application\Cli { const secretKeyRelativePath = '/engine/secretkey.php'; public function __construct(\Awf\Container\Container $container = null) { parent::__construct($container); if (empty($this->container->basePath)) { $this->container->basePath = APATH_BASE . '/Solo'; } } public function initialise() { // Load the extra language files Text::loadLanguage(null, 'akeeba', '.com_akeeba.ini'); // Halt if the configuration does not exist yet $configPath = $this->getContainer()->appConfig->getDefaultPath(); if (!@file_exists($configPath)) { $this->out('Configuration not found; aborting'); $this->close(254); } // Load the configuration if it's present if (@file_exists($configPath)) { // Load the application's configuration $this->container->appConfig->loadConfiguration($configPath); // Load Akeeba Engine's settings encryption preferences $secretKeyFile = $this->getContainer()->basePath . static::secretKeyRelativePath; if (@file_exists($secretKeyFile)) { require_once $secretKeyFile; } // Load Akeeba Engine's configuration Platform::getInstance()->load_configuration(); } return $this; } /** * Language file processing callback. It converts _QQ_ to " and replaces the product name in the legacy INI files * imported from Akeeba Backup for Joomla!. * * @param string $filename The full path to the file being loaded * @param array $strings The key/value array of the translations * * @return boolean|array False to prevent loading the file, or array of processed language string, or true to * ignore this processing callback. */ public function processLanguageIniFile($filename, $strings) { foreach ($strings as $k => $v) { $v = str_replace('_QQ_', '"', $v); $v = str_replace('Akeeba Backup', 'Akeeba Solo', $v); $strings[$k] = $v; } return $strings; } /** * Method to run the application routines. Most likely you will want to instantiate a controller * and execute it, or perform some sort of task directly. * * @return void */ protected function doExecute() { $debugmessage = ''; if ($this->getContainer()->input->get('debug', -1, 'int') != -1) { if (!defined('AKEEBADEBUG')) { define('AKEEBADEBUG', 1); } $debugmessage = "*** DEBUG MODE ENABLED ***\n"; } $version = AKEEBA_VERSION; $date = AKEEBA_DATE; $start_backup = time(); $phpversion = PHP_VERSION; $phpenvironment = PHP_SAPI; if ($this->getContainer()->input->get('quiet', -1, 'int') == -1) { $year = gmdate('Y'); echo <<container); $result = $cpanelModel->notifyFailed(); echo implode("\n", $result['message']); $this->close(); } /** * Parses POSIX command line options and returns them as an associative array. Each array item contains * a single dimensional array of values. Arguments without a dash are silently ignored. * * @return array */ private function parseOptions() { global $argc, $argv; // Workaround for PHP-CGI if (!isset($argc) && !isset($argv)) { $query = ""; if (!empty($_GET)) { foreach ($_GET as $k => $v) { $query .= " $k"; if ($v != "") { $query .= "=$v"; } } } $query = ltrim($query); $argv = explode(' ', $query); $argc = count($argv); } $currentName = ""; $options = array(); for ($i = 1; $i < $argc; $i++) { $argument = $argv[$i]; if (strpos($argument, "-") === 0) { $argument = ltrim($argument, '-'); if (strstr($argument, '=')) { list($name, $value) = explode('=', $argument, 2); } else { $name = $argument; $value = null; } $currentName = $name; if (!isset($options[$currentName]) || ($options[$currentName] == null)) { $options[$currentName] = array(); } } else { $value = $argument; } if ((!is_null($value)) && (!is_null($currentName))) { if (strstr($value, '=')) { $parts = explode('=', $value, 2); $key = $parts[0]; $value = $parts[1]; } else { $key = null; } $values = $options[$currentName]; if (is_null($values)) { $values = array(); } if (is_null($key)) { array_push($values, $value); } else { $values[$key] = $value; } $options[$currentName] = $values; } } return $options; } } if (!isset($container)) { $container = new \Solo\Container(); } $app = new CheckFailedApplication($container); $app->initialise()->execute();