* @copyright Copyright (C) 2026 Moko Consulting. All rights reserved. * @license GNU General Public License version 3 or later; see LICENSE * * CLI backup script for cron/scheduled use. * * Usage: * php cli/mokosuitebackup.php --profile=1 --description="Scheduled backup" * * Must be run from the Joomla root directory. */ // Define Joomla constants const _JEXEC = 1; // Bootstrap Joomla if (file_exists(dirname(__DIR__, 4) . '/includes/defines.php')) { require_once dirname(__DIR__, 4) . '/includes/defines.php'; } if (!defined('JPATH_BASE')) { define('JPATH_BASE', dirname(__DIR__, 4)); } require_once JPATH_BASE . '/includes/framework.php'; use Joomla\CMS\Factory; use Joomla\Component\MokoSuiteBackup\Administrator\Engine\BackupEngine; // Parse CLI arguments $profileId = 1; $description = ''; foreach ($argv as $arg) { if (str_starts_with($arg, '--profile=')) { $profileId = (int) substr($arg, 10); } elseif (str_starts_with($arg, '--description=')) { $description = substr($arg, 14); } } if (empty($description)) { $description = 'CLI backup ' . date('Y-m-d H:i:s'); } // Boot the application $app = Factory::getApplication('administrator'); echo "MokoSuiteBackup CLI\n"; echo "Profile: {$profileId}\n"; echo "Description: {$description}\n"; echo "Starting backup...\n\n"; $engine = new BackupEngine(); $result = $engine->run($profileId, $description, 'cli'); if ($result['success']) { echo "SUCCESS: " . $result['message'] . "\n"; exit(0); } else { echo "FAILED: " . $result['message'] . "\n"; exit(1); }