File manager - Edit - /home/verseaumee/empowernetkenyajuly2026/akeebaactionlog.tar
Back
akeebaactionlog.php 0000604 00000026546 15251771211 0010400 0 ustar 00 <?php /** * @package akeebabackup * @copyright Copyright (c)2006-2019 Nicholas K. Dionysopoulos / Akeeba Ltd * @license GNU General Public License version 3, or later */ use Akeeba\Engine\Platform; use FOF30\Container\Container; defined('_JEXEC') or die(); // PHP version check if (!version_compare(PHP_VERSION, '5.6.0', '>=')) { return; } JLoader::import('joomla.application.plugin'); class plgSystemAkeebaactionlog extends JPlugin { /** @var Container */ private $container; /** * Constructor * * @param object $subject The object to observe * @param array $config An array that holds the plugin configuration * * @since 2.5 */ public function __construct(& $subject, $config) { /** * I know that this piece of code cannot possibly be executed since I have already returned BEFORE declaring * the class when eAccelerator is detected. However, eAccelerator is a GINORMOUS, STINKY PILE OF BULL CRAP. The * stupid thing will return above BUT it will also declare the class EVEN THOUGH according to how PHP works * this part of the code should be unreachable o_O Therefore I have to define this constant and exit the * constructor when we have already determined that this class MUST NOT be defined. Because screw you * eAccelerator, that's why. */ if (defined('AKEEBA_EACCELERATOR_IS_SO_BORKED_IT_DOES_NOT_EVEN_RETURN')) { return; } // Make sure Akeeba Backup is installed if (!file_exists(JPATH_ADMINISTRATOR . '/components/com_akeeba')) { return; } // Make sure Akeeba Backup is enabled JLoader::import('joomla.application.component.helper'); if ( !JComponentHelper::isEnabled('com_akeeba')) { return; } // Load FOF if (!defined('FOF30_INCLUDED') && !@include_once(JPATH_LIBRARIES . '/fof30/include.php')) { return; } $this->container = Container::getInstance('com_akeeba'); // No point in logging guest actions if ($this->container->platform->getUser()->guest) { return; } // If any of the above statement returned, our plugin is not attached to the subject, so it's basically disabled parent::__construct($subject, $config); } /** * Logs the creation of a new backup profile * * @param \Akeeba\Backup\Admin\Controller\Profiles $controller * @param array $data * @param int $id */ public function onComAkeebaControllerProfilesAfterApplySave($controller, $data, $id) { // If I have an ID in the request and it's the same of the model, I'm just editing a record if (isset($data['id']) && $data['id'] == $id) { return; } $profile_title = $data['description']; $this->container->platform->logUserAction($profile_title, 'COM_AKEEBA_LOGS_PROFILE_ADD', 'com_akeeba'); } /** * Logs deletion of a backup profile * * @param \Akeeba\Backup\Admin\Controller\Profiles $controller */ public function onComAkeebaControllerProfilesAfterRemove($controller) { $ids = $controller->input->get('cid', array(), 'array', 2); $profile_title = '# '.implode(', ', $ids); $this->container->platform->logUserAction($profile_title, 'COM_AKEEBA_LOGS_PROFILE_DELETE', 'com_akeeba'); } /** * Log configuration edit (apply) * * @param \Akeeba\Backup\Admin\Controller\Configuration $controller */ public function onComAkeebaControllerConfigurationAfterApply($controller) { $this->logConfigurationChange(); } /** * Log configuration edit (save and close) * * @param \Akeeba\Backup\Admin\Controller\Configuration $controller */ public function onComAkeebaControllerConfigurationAfterSave($controller) { $this->logConfigurationChange(); } /** * Log configuration edit (save and new) * * @param \Akeeba\Backup\Admin\Controller\Configuration $controller */ public function onComAkeebaControllerConfigurationAfterSavenew($controller) { $this->logConfigurationChange(); } /** * Log starting a new backup * * @param \Akeeba\Backup\Admin\Controller\Backup $controller */ public function onComAkeebaControllerBackupBeforeAjax($controller) { $ajaxTask = $this->container->input->get('ajax', '', 'cmd'); // Log only starting the backup if ($ajaxTask != 'start') { return; } $profile_id = $this->container->platform->getSessionVar('profile', -10, 'akeeba'); if ($profile_id < 1) { return; } $profile_id = '#'.$profile_id; $this->container->platform->logUserAction($profile_id, 'COM_AKEEBA_LOGS_BACKUP_RUN', 'com_akeeba'); } /** * Log downloading a backup using Joomla interface * * @param \Akeeba\Backup\Admin\Controller\Manage $controller */ public function onComAkeebaControllerManageBeforeDownload($controller) { $id = $this->container->input->getInt('id'); $part = $this->container->input->getInt('part', -1); // This should never happens, but better be safe if (!$id) { return; } $stat = Platform::getInstance()->get_statistics($id); $profile_name = Platform::getInstance()->get_profile_name($stat['profile_id']); $title = 'Profile: "'.$profile_name.'" ID: '.$id; if ($part > -1) { $title .= ' part: '.$part; } $this->container->platform->logUserAction($title, 'COM_AKEEBA_LOGS_MANAGE_DOWNLOAD', 'com_akeeba'); } /** * Logs deleting backup files * * @param \Akeeba\Backup\Admin\Controller\Manage $controller */ public function onComAkeebaControllerManageBeforeDeletefiles($controller) { $ids = $this->getIDsFromRequest(); foreach ($ids as $id) { $this->container->platform->logUserAction('ID: '.$id,'COM_AKEEBA_LOGS_MANAGE_DELETEFILES', 'com_akeeba'); } } /** * Logs deleting backup stat entry * * @param \Akeeba\Backup\Admin\Controller\Manage $controller */ public function onComAkeebaControllerManageBeforeRemove($controller) { $ids = $this->getIDsFromRequest(); foreach ($ids as $id) { $this->container->platform->logUserAction($id,'COM_AKEEBA_LOGS_MANAGE_DELETE', 'com_akeeba'); } } /** * Logs downloading remote archives to browser * * @param \Akeeba\Backup\Admin\Controller\RemoteFiles $controller */ public function onComAkeebaControllerRemoteFilesBeforeDlfromremote($controller) { $id = $this->container->input->getInt('id'); $part = $this->container->input->getInt('part', -1); // This should never happens, but better be safe if (!$id) { return; } $stat = Platform::getInstance()->get_statistics($id); $profile_name = Platform::getInstance()->get_profile_name($stat['profile_id']); $title = 'Profile: "'.$profile_name.'" ID: '.$id; if ($part > -1) { $title .= ' part: '.$part; } $this->container->platform->logUserAction($title, 'COM_AKEEBA_LOGS_REMOTEFILE_DOWNLOAD', 'com_akeeba'); } /** * Logs downloading remote archives back to the server * * @param \Akeeba\Backup\Admin\Controller\RemoteFiles $controller */ public function onComAkeebaControllerRemoteFilesBeforeDltoserver($controller) { $id = $this->container->input->getInt('id'); $part = $this->container->input->getInt('part', -1); $frag = $this->container->input->getInt('frag', -1); // Log only the first step if ($frag > -1 || $part > -1) { return; } // This should never happens, but better be safe if (!$id) { return; } $stat = Platform::getInstance()->get_statistics($id); $profile_name = Platform::getInstance()->get_profile_name($stat['profile_id']); $title = 'Profile: "'.$profile_name.'" ID: '.$id; $this->container->platform->logUserAction($title, 'COM_AKEEBA_LOGS_REMOTEFILE_FETCH', 'com_akeeba'); } /** * Logs downloading remote archives to browser * * @param \Akeeba\Backup\Admin\Controller\RemoteFiles $controller */ public function onComAkeebaControllerRemoteFilesBeforeDelete($controller) { $id = $this->container->input->getInt('id'); $part = $this->container->input->getInt('part', -1); // This should never happens, but better be safe if (!$id) { return; } $stat = Platform::getInstance()->get_statistics($id); $profile_name = Platform::getInstance()->get_profile_name($stat['profile_id']); $title = 'Profile: "'.$profile_name.'" ID: '.$id; if ($part > -1) { $title .= ' part: '.$part; } $this->container->platform->logUserAction($title, 'COM_AKEEBA_LOGS_REMOTEFILE_DELETE', 'com_akeeba'); } /** * Logs downloading remote archives to browser * * @param \Akeeba\Backup\Admin\Controller\Upload $controller */ public function onComAkeebaControllerUploadBeforeStart($controller) { $id = $this->container->input->getInt('id'); // This should never happens, but better be safe if (!$id) { return; } $stat = Platform::getInstance()->get_statistics($id); $profile_name = Platform::getInstance()->get_profile_name($stat['profile_id']); $title = 'Profile: "'.$profile_name.'" ID: '.$id; $this->container->platform->logUserAction($title, 'COM_AKEEBA_LOGS_UPLOADS_ADD', 'com_akeeba'); } /** * Log starting a site transfer wizard (connections valid, just before starting to actually transfer files) * * @param \Akeeba\Backup\Admin\Controller\Transfer $controller */ public function onComAkeebaControllerTransferBeforeUpload($controller) { $start = $this->container->input->getBool('start', false); if (!$start) { return; } $title = $this->container->platform->getSessionVar('transfer.url', '', 'akeeba'); if (!$title) { return; } $this->container->platform->logUserAction($title, 'COM_AKEEBA_LOGS_TRANSFER_RUN', 'com_akeeba'); } /** * Logs downloading a backup log * * @param \Akeeba\Backup\Admin\Controller\Log $controller */ public function onComAkeebaControllerLogBeforeDownload($controller) { $tag = $this->container->input->get('tag', null, 'cmd');; $this->container->platform->logUserAction($tag, 'COM_AKEEBA_LOGS_LOG_DOWNLOAD', 'com_akeeba'); } /** * Log importing a backup archive * * @param \Akeeba\Backup\Admin\Controller\Discover $controller */ public function onComAkeebaControllerDiscoverBeforeImport($controller) { $files = $this->container->input->get('files', array(), 'array'); foreach ($files as $file) { $this->container->platform->logUserAction($file, 'COM_AKEEBA_LOGS_DISCOVER_IMPORT', 'com_akeeba'); } } /** * Log importing a backup archive from S3 * * @param \Akeeba\Backup\Admin\Controller\Discover $controller */ public function onComAkeebaControllerS3ImportBeforeDltoserver($controller) { $file = $this->container->input->get('file', '', 'string'); // Log only the initial download step $part = $this->container->input->getInt('part', -1); $frag = $this->container->input->getInt('frag', -1); $step = $this->container->input->getInt('step', -1); if ($part > -1 || $frag > -1 || $step > -1) { return; } $this->container->platform->logUserAction($file, 'COM_AKEEBA_LOGS_S3IMPORT_IMPORT', 'com_akeeba'); } private function logConfigurationChange() { $profileName = $this->container->input->getString('profilename', null); $this->container->platform->logUserAction('"'.$profileName.'"', 'COM_AKEEBA_LOGS_CONFIGURATION_EDIT', 'com_akeeba'); } /** * Gets the list of IDs from the request data * * @return array */ private function getIDsFromRequest() { // Get the ID or list of IDs from the request or the configuration $cid = $this->container->input->get('cid', array(), 'array'); $id = $this->container->input->getInt('id', 0); $ids = array(); if (is_array($cid) && !empty($cid)) { $ids = $cid; } elseif (!empty($id)) { $ids = array($id); } return $ids; } } akeebaactionlog.xml 0000604 00000002215 15251771211 0010374 0 ustar 00 <?xml version="1.0" encoding="utf-8"?> <!-- ~ @package akeebabackup ~ @copyright Copyright (c)2006-2019 Nicholas K. Dionysopoulos / Akeeba Ltd ~ @license GNU General Public License version 3, or later --> <extension version="2.5.0" type="plugin" group="system" method="upgrade"> <name>PLG_SYSTEM_AKEEBAACTIONLOG</name> <author>Nicholas K. Dionysopoulos</author> <authorEmail>nicholas@dionysopoulos.me</authorEmail> <authorUrl>http://www.akeebabackup.com</authorUrl> <copyright>Copyright (c)2006-2019 Nicholas K. Dionysopoulos</copyright> <license>GNU General Public License version 3, or later</license> <creationDate>2019-03-18</creationDate> <version>6.4.2.1</version> <description>PLG_AKEEBAACTIONLOG_XML_DESCRIPTION</description> <files> <filename plugin="akeebaactionlog">akeebaactionlog.php</filename> <filename>.htaccess</filename> <filename>web.config</filename> </files> <languages folder="language"> <language tag="en-GB">en-GB/en-GB.plg_system_akeebaactionlog.ini</language> <language tag="en-GB">en-GB/en-GB.plg_system_akeebaactionlog.sys.ini</language> </languages> <scriptfile>script.php</scriptfile> </extension>