%PDF- %PDF-
Direktori : /home1/lightco1/www/lightingrepublic.com.au/plugins/jmonitoring/akeebabackup/ |
Current File : //home1/lightco1/www/lightingrepublic.com.au/plugins/jmonitoring/akeebabackup/akeebabackup.php |
<?php /* * Akeeba Backup JMonitoring integration * Copyright (C) 2012-2013 Nicholas K. Dionysopoulos / AkeebaBackup.com * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ // no direct access defined('_JEXEC') or die(); // Basic check #1 - is PHP5 installed? 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; // Basic check #2 - is Akeeba Backup installed? JLoader::import('joomla.filesystem.file'); if( !JFile::exists(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_akeeba'.DS.'version.php') ) return; // Basic check #3: Make sure Akeeba Backup is enabled JLoader::import('joomla.application.component.helper'); if (!JComponentHelper::isEnabled('com_akeeba', true)) { //JError::raiseError('E_JPNOTENABLED', JText('MOD_AKADMIN_AKEEBA_NOT_ENABLED')); return; } // Load FOF if(!defined('FOF_INCLUDED') || !class_exists('FOFLess', true)) { include_once JPATH_SITE.'/libraries/fof/include.php'; } // Do we really, REALLY have Akeeba Engine? if(!defined('AKEEBAENGINE')) { define('AKEEBAENGINE', 1); // Required for accessing Akeeba Engine's factory class } @include_once JPATH_ADMINISTRATOR.'/components/com_akeeba/akeeba/factory.php'; if(!class_exists('AEFactory', false)) { return; } //accès à la classe JMonitoring require_once(JPATH_ROOT.DS.'administrator'.DS.'components'.DS.'com_jmonitoringslave'.DS.'jmonitoringpluginmonitoring'.DS.'jmonitoringpluginmonitoring.php'); class plgJmonitoringAkeebabackup extends JMonitoringPluginMonitoring { function onMonitoringCall($oldValuesSerialized = null) { // Plugin setup $this->setName("AkeebaBackup"); //on donne une nom (unique) au plugin $this->setDescription("Checks the status of your Akeeba Backup backups"); //on donne une description au plugin // Load language strings $jlang = JFactory::getLanguage(); $jlang->load('com_akeeba', JPATH_ADMINISTRATOR, 'en-GB', true); $jlang->load('com_akeeba'.'.override', JPATH_ADMINISTRATOR, 'en-GB', true); // Load Akeeba Backup's configuration require_once JPATH_ADMINISTRATOR.'/components/com_akeeba/akeeba/factory.php'; $aeconfig = 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(!is_null($record)) { JLoader::import('joomla.utilities.date'); $jOn = new JDate($record->backupstart); // Warn on failed backups if($record->status == 'fail') { $this->createJMonitoringAlert(2, "The latest backup which started on ".$jOn->toSql(false)." has failed"); } // Warn on still running backups if($record->status == 'run') { $this->createJMonitoringAlert(1, "The latest backup which started on ".$jOn->toSql(false)." is still running"); } // Warn on out of date backups if(version_compare(JVERSION, '3.0', 'ge')) { $maxperiod = $this->params->get('maxbackupperiod', 24); } else { $maxperiod = $this->params->getValue('maxbackupperiod', 24); } if($maxperiod > 0) { $lastBackupRaw = $record->backupstart; $lastBackupObject = new JDate($lastBackupRaw); $lastBackup = $lastBackupObject->toUnix(false); $maxBackup = time() - $maxperiod * 3600; if($lastBackup < $maxBackup) { $this->createJMonitoringAlert(1, "The backup is out of date"); } } // Set up some values switch($record->status) { case 'run': $status = JText::_('STATS_LABEL_STATUS_PENDING'); break; case 'fail': $status = JText::_('STATS_LABEL_STATUS_FAIL'); break; case 'complete': $status = JText::_('STATS_LABEL_STATUS_OK'); break; } switch($record->origin) { case 'frontend': $origin = JText::_('STATS_LABEL_ORIGIN_FRONTEND'); break; case 'backend': $origin = JText::_('STATS_LABEL_ORIGIN_BACKEND'); break; case 'cli': $origin = JText::_('STATS_LABEL_ORIGIN_CLI'); break; default: $origin = '–'; break; } $backupStatus = $record->status; $this->createJMonitoringValue('Akeeba Backup – Status', $status); $this->createJMonitoringValue('Akeeba Backup – Origin', $origin); $this->createJMonitoringValue('Akeeba Backup – Start', $jOn->format(JText::_('DATE_FORMAT_LC2'), true)); } return $this; } }