File "backup.php"

Full Path: /home/asmplong/www/ancien-site-2019/site/administrator/components/com_akeeba/controllers/backup.php
File size: 3.4 KB
MIME-type: text/x-php
Charset: utf-8

<?php
/**
 * @package AkeebaBackup
 * @copyright Copyright (c)2006-2011 Nicholas K. Dionysopoulos
 * @license GNU General Public License version 3, or later
 * @version $Id: backup.php 681 2011-06-01 08:50:04Z nikosdion $
 * @since 1.3
 */

// Protect from unauthorized access
defined('_JEXEC') or die('Restricted Access');

// Load framework base classes
jimport('joomla.application.component.controller');

/**
 * The Backup controller class
 *
 */
class AkeebaControllerBackup extends JController
{
	public function  __construct($config = array()) {
		parent::__construct($config);
		if(AKEEBA_JVERSION=='16')
		{
			// Access check, Joomla! 1.6 style.
			$user = JFactory::getUser();
			if (!$user->authorise('akeeba.backup', 'com_akeeba')) {
				$this->setRedirect('index.php?option=com_akeeba');
				return JError::raiseWarning(403, JText::_('JERROR_ALERTNOAUTHOR'));
				$this->redirect();
			}
		} else {
			// Custom ACL for Joomla! 1.5
			$aclModel = JModel::getInstance('Acl','AkeebaModel');
			if(!$aclModel->authorizeUser('backup')) {
				$this->setRedirect('index.php?option=com_akeeba');
				return JError::raiseWarning(403, JText::_('Access Forbidden'));
				$this->redirect();
			}
		}
	}

	/**
	 * Default task; shows the initial page where the user selects a profile
	 * and enters description and comment
	 *
	 */
	public function display()
	{
		$newProfile = JRequest::getInt('profileid', -10);
		if(is_numeric($newProfile) && ($newProfile > 0))
		{
			// CSRF prevention
			if(!JRequest::getVar(JUtility::getToken(), false, 'POST')) {
				JError::raiseError('403', JText::_(version_compare(JVERSION, '1.6.0', 'ge') ? 'JLIB_APPLICATION_ERROR_ACCESS_FORBIDDEN' : 'Request Forbidden'));
			}
			
			$session =& JFactory::getSession();
			$session->set('profile', $newProfile, 'akeeba');
		}

		// Deactivate the menus
		JRequest::setVar('hidemainmenu', 1);

		parent::display();
	}

	public function ajax()
	{
		$model = $this->getModel('Backup','AkeebaModel');

		$model->setState('profile',		JRequest::getInt('profileid', -10));
		$model->setState('ajax',		JRequest::getCmd('ajax', ''));
		$model->setState('description',	JRequest::getString('description','','default', null));
		$model->setState('comment',		JRequest::getString('comment','','default', 4));
		$model->setState('jpskey',		JRequest::getVar('jpskey',''));
		
		// System Restore Point backup state variables
		$model->setState('tag',			JRequest::getCmd('tag','backend'));
		$model->setState('type',		strtolower(JRequest::getCmd('type','')));
		$model->setState('name',		strtolower(JRequest::getCmd('name','')));
		$model->setState('group',		strtolower(JRequest::getCmd('group','')));
		$model->setState('customdirs',	JRequest::getVar('customdirs',array(),'default','array',2));
		$model->setState('customfiles',	JRequest::getVar('customfiles',array(),'default','array',2));
		$model->setState('extraprefixes',JRequest::getVar('extraprefixes',array(),'default','array',2));
		$model->setState('customtables',JRequest::getVar('customtables',array(),'default','array',2));
		$model->setState('langfiles',	JRequest::getVar('langfiles',array(),'default','array',2));
		$model->setState('xmlname',		JRequest::getString('xmlname',''));
		
		define('AKEEBA_BACKUP_ORIGIN', JRequest::getCmd('tag','backend'));
		
		$ret_array = $model->runBackup();

		@ob_end_clean();
		header('Content-type: text/plain');
		echo '###' . json_encode($ret_array) . '###';
		flush();
		JFactory::getApplication()->close();
	}
}