Your IP : 216.73.216.201


Current Path : /home/sunflowe/www2/j15/administrator/modules/mod_akadmin/
Upload File :
Current File : /home/sunflowe/www2/j15/administrator/modules/mod_akadmin/mod_akadmin.php

<?php
/**
 * @package AkeebaBackup
 * @subpackage BackupIconModule
 * @copyright Copyright (c)2009-2012 Nicholas K. Dionysopoulos
 * @license GNU General Public License version 3, or later
 * @since 2.2
 * @version $Id$
 */

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

// Check for PHP4
if(defined('PHP_VERSION')) {
	$version = PHP_VERSION;
} elseif(function_exists('phpversion')) {
	$version = phpversion();
} else {
	// No version info. I'll lie and hope for the best.
	$version = '5.0.0';
}

// Old PHP version detected. EJECT! EJECT! EJECT!
if(!version_compare($version, '5.2.7', '>=')) return;

// Make sure Akeeba Backup is installed
if(!file_exists(JPATH_ADMINISTRATOR.'/components/com_akeeba')) {
	return;
}

// Timezone fix; avoids errors printed out by PHP 5.3.3+ (thanks Yannick!)
if(function_exists('date_default_timezone_get') && function_exists('date_default_timezone_set') && !version_compare(JVERSION,'1.6','ge')) {
	if(function_exists('error_reporting')) {
		$oldLevel = error_reporting(0);
	}
	$serverTimezone = @date_default_timezone_get();
	if(empty($serverTimezone) || !is_string($serverTimezone)) $serverTimezone = 'UTC';
	if(function_exists('error_reporting')) {
		error_reporting($oldLevel);
	}
	@date_default_timezone_set( $serverTimezone);
}

/*
 * Hopefuly, if we are still here, the site is running on at least PHP5. This means that
 * including the Akeeba Backup factory class will not throw a White Screen of Death, locking
 * the administrator out of the back-end.
 */

// Make sure Akeeba Backup is installed, or quit
$akeeba_installed = @file_exists(JPATH_ADMINISTRATOR.'/components/com_akeeba/akeeba/factory.php');
if(!$akeeba_installed) return;

// Make sure Akeeba Backup is enabled
jimport('joomla.application.component.helper');
if (!JComponentHelper::isEnabled('com_akeeba', true))
{
	//JError::raiseError('E_JPNOTENABLED', JText('AKEEBA_NOT_ENABLED'));
	return;
}

// Joomla! 1.6 or later - check ACLs (and not display when the site is bricked,
// hopefully resulting in no stupid emails from users who think that somehow
// Akeeba Backup crashed their site). It also not displays the button to people
// who are not authorised to take backups - which makes perfect sense!
if(version_compare(JVERSION, '1.6.0', 'ge')) {
	$user = JFactory::getUser();
	if (!$user->authorise('akeeba.backup', 'com_akeeba')) {
		return;
	}
}

// Load custom CSS
$document =& JFactory::getDocument();
$document->addStyleSheet(JURI::base().'modules/mod_akadmin/css/mod_akadmin.css');

// Load the language files
$jlang =& JFactory::getLanguage();
$jlang->load('mod_akadmin', JPATH_ADMINISTRATOR, 'en-GB', true);
$jlang->load('mod_akadmin', JPATH_ADMINISTRATOR, $jlang->getDefault(), true);
$jlang->load('mod_akadmin', JPATH_ADMINISTRATOR, null, true);

// Initialize defaults
$image = "akeeba-48.png";
$label = JText::_('LBL_AKEEBA');

if( $params->get('enablewarning', 0) == 0 )
{
	// Process warnings
	$warning = false;

	// Load necessary files
	if(!version_compare( JVERSION, '1.6.0', 'ge' )) {
		define('AKEEBA_JVERSION','15');
	} else {
		define('AKEEBA_JVERSION','16');
	}
	if(!defined('AKEEBAENGINE')) {
		define('AKEEBAENGINE', 1); // Required for accessing Akeeba Engine's factory class
		define('AKEEBAPLATFORM', 'joomla15'); // So that platform-specific stuff can get done!
	}
	require_once JPATH_ADMINISTRATOR.'/components/com_akeeba/akeeba/factory.php';
	$registry =& AEFactory::getConfiguration();
	AEPlatform::getInstance()->load_configuration();
	
	// Get latest non-SRP backup ID
	$filters = array(
		array(
			'field'			=> 'tag',
			'operand'		=> '<>',
			'value'			=> 'restorepoint'
		)
	);
	$ordering = array(
		'by'		=> 'backupstart',
		'order'		=> 'DESC'
	);
	require_once JPATH_ADMINISTRATOR.'/components/com_akeeba/models/statistics.php';
	$model = new AkeebaModelStatistics();
	$list =& $model->getStatisticsListWithMeta(false, $filters, $ordering);
	
	if(!empty($list)) {
		$record = (object)array_shift($list);
	} else {
		$record = null;
	}
	
	// Process "failed backup" warnings, if specified
	if( $params->get('warnfailed', 0) == 0 )
	{
		if(!is_null($record))
		{
			$warning = (($record->status == 'fail') || ($record->status == 'run'));
		}
	}

	// Process "stale backup" warnings, if specified
	if(is_null($record))
	{
		$warning = true;
	}
	else
	{
		$maxperiod = $params->get('maxbackupperiod', 24);
		jimport('joomla.utilities.date');
		$lastBackupRaw = $record->backupstart;
		$lastBackupObject = new JDate($lastBackupRaw);
		$lastBackup = $lastBackupObject->toUnix(false);
		$maxBackup = time() - $maxperiod * 3600;
		if(!$warning) $warning = ($lastBackup < $maxBackup);
	}

	if($warning)
	{
		$image = 'akeeba-warning-48.png';
		$label = JText::_('LBL_BACKUPREQUIRED');
	}
}

// Load the Akeeba Backup configuration and check user access permission
if(!defined('AKEEBAENGINE'))
{
	define('AKEEBAENGINE', 1); // Required for accessing Akeeba Engine's factory class
	define('AKEEBAPLATFORM', 'joomla15'); // So that platform-specific stuff can get done!
}
require_once JPATH_ADMINISTRATOR.'/components/com_akeeba/akeeba/factory.php';
$registry =& AEFactory::getConfiguration();
$user =& JFactory::getUser();
$showModule = true;
unset($registry);

// Administrator access allowed
if( version_compare( JVERSION, '1.6.0', 'ge' ) )
{
	// Joomla! 1.6
	$extraclass = 'icon16';
}
else
{
	// Joomla! 1.5
	$gid = $user->gid;
	if( ($gid != 25) && ($gid != 24) )
	{
		$showModule = false;
	}

	$extraclass = 'icon15';
}

unset($user);

if($showModule):
	
if(version_compare(JVERSION, '1.6.0', 'ge')):?>
<div class="icon-wrapper" id="akadminicon">
	<div class="akcpanel">
		<div class="icon <?php echo $extraclass ?>">
			<a href="index.php?option=com_akeeba&view=backup">
				<img src="components/com_akeeba/assets/images/<?php echo $image ?>" />
				<span><?php echo $label; ?></span>
			</a>
		</div>
	</div>
</div>
<script lang="text/javascript">
	var akeebabackupIcon = $('akadminicon');
	try {
		var akeebabackupIconParent = $('akadminicon').getParent().getParent();
		if(akeebabackupIconParent.attributes.class.textContent == 'panel') {
			akeebabackupIconParent.setStyle('display','none');
		}
		$('cpanel').grab(akeebabackupIcon);
	} catch(e) {	
	}
</script>
<?php else: ?>
<div class="akcpanel">
	<div style="float:<?php echo ($lang->isRTL()) ? 'right' : 'left'; ?>;">
		<div class="icon <?php echo $extraclass ?>">
			<a href="index.php?option=com_akeeba&view=backup">
				<img src="components/com_akeeba/assets/images/<?php echo $image ?>" />
				<span><?php echo $label; ?></span>
			</a>
		</div>
	</div>
</div>
<?php endif; ?>
<?php endif; ?>