uawdijnntqw1x1x1
IP : 216.73.217.142
Hostname : localhost.localdomain
Kernel : Linux localhost.localdomain 4.15.0-213-generic #224-Ubuntu SMP Mon Jun 19 13:30:12 UTC 2023 x86_64
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
OS : Linux
PATH:
/
var
/
www
/
consult-e-syn
/
public_html
/
cache
/
..
/
dfef0
/
actionlog.tar
/
/
joomla/joomla.php000064400000071772152160542320010035 0ustar00<?php /** * @package Joomla.Plugins * @subpackage System.actionlogs * * @copyright (C) 2018 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ defined('_JEXEC') or die; use Joomla\CMS\Component\ComponentHelper; use Joomla\CMS\Factory; use Joomla\CMS\User\User; use Joomla\CMS\Version; use Joomla\Utilities\ArrayHelper; JLoader::register('ActionLogPlugin', JPATH_ADMINISTRATOR . '/components/com_actionlogs/libraries/actionlogplugin.php'); JLoader::register('ActionlogsHelper', JPATH_ADMINISTRATOR . '/components/com_actionlogs/helpers/actionlogs.php'); /** * Joomla! Users Actions Logging Plugin. * * @since 3.9.0 */ class PlgActionlogJoomla extends ActionLogPlugin { /** * Array of loggable extensions. * * @var array * @since 3.9.0 */ protected $loggableExtensions = array(); /** * Context aliases * * @var array * @since 3.9.0 */ protected $contextAliases = array('com_content.form' => 'com_content.article'); /** * Constructor. * * @param object &$subject The object to observe. * @param array $config An optional associative array of configuration settings. * * @since 3.9.0 */ public function __construct(&$subject, $config) { parent::__construct($subject, $config); $params = ComponentHelper::getComponent('com_actionlogs')->getParams(); $this->loggableExtensions = $params->get('loggable_extensions', array()); } /** * After save content logging method * This method adds a record to #__action_logs contains (message, date, context, user) * Method is called right after the content is saved * * @param string $context The context of the content passed to the plugin * @param object $article A JTableContent object * @param boolean $isNew If the content is just about to be created * * @return void * * @since 3.9.0 */ public function onContentAfterSave($context, $article, $isNew) { if (isset($this->contextAliases[$context])) { $context = $this->contextAliases[$context]; } $option = $this->app->input->getCmd('option'); if (!$this->checkLoggable($option)) { return; } $params = ActionlogsHelper::getLogContentTypeParams($context); // Not found a valid content type, don't process further if ($params === null) { return; } list(, $contentType) = explode('.', $params->type_alias); if ($isNew) { $messageLanguageKey = $params->text_prefix . '_' . $params->type_title . '_ADDED'; $defaultLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_ADDED'; } else { $messageLanguageKey = $params->text_prefix . '_' . $params->type_title . '_UPDATED'; $defaultLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_UPDATED'; } // If the content type doesn't has it own language key, use default language key if (!$this->app->getLanguage()->hasKey($messageLanguageKey)) { $messageLanguageKey = $defaultLanguageKey; } $id = empty($params->id_holder) ? 0 : $article->get($params->id_holder); $message = array( 'action' => $isNew ? 'add' : 'update', 'type' => $params->text_prefix . '_TYPE_' . $params->type_title, 'id' => $id, 'title' => $article->get($params->title_holder), 'itemlink' => ActionlogsHelper::getContentTypeLink($option, $contentType, $id, $params->id_holder, $article), ); $this->addLog(array($message), $messageLanguageKey, $context); } /** * After delete content logging method * This method adds a record to #__action_logs contains (message, date, context, user) * Method is called right after the content is deleted * * @param string $context The context of the content passed to the plugin * @param object $article A JTableContent object * * @return void * * @since 3.9.0 */ public function onContentAfterDelete($context, $article) { $option = $this->app->input->get('option'); if (!$this->checkLoggable($option)) { return; } $params = ActionlogsHelper::getLogContentTypeParams($context); // Not found a valid content type, don't process further if ($params === null) { return; } // If the content type has it own language key, use it, otherwise, use default language key if ($this->app->getLanguage()->hasKey(strtoupper($params->text_prefix . '_' . $params->type_title . '_DELETED'))) { $messageLanguageKey = $params->text_prefix . '_' . $params->type_title . '_DELETED'; } else { $messageLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_DELETED'; } $id = empty($params->id_holder) ? 0 : $article->get($params->id_holder); $message = array( 'action' => 'delete', 'type' => $params->text_prefix . '_TYPE_' . $params->type_title, 'id' => $id, 'title' => $article->get($params->title_holder) ); $this->addLog(array($message), $messageLanguageKey, $context); } /** * On content change status logging method * This method adds a record to #__action_logs contains (message, date, context, user) * Method is called when the status of the article is changed * * @param string $context The context of the content passed to the plugin * @param array $pks An array of primary key ids of the content that has changed state. * @param integer $value The value of the state that the content has been changed to. * * @return void * * @since 3.9.0 */ public function onContentChangeState($context, $pks, $value) { $option = $this->app->input->getCmd('option'); if (!$this->checkLoggable($option)) { return; } $params = ActionlogsHelper::getLogContentTypeParams($context); // Not found a valid content type, don't process further if ($params === null) { return; } list(, $contentType) = explode('.', $params->type_alias); switch ($value) { case 0: $messageLanguageKey = $params->text_prefix . '_' . $params->type_title . '_UNPUBLISHED'; $defaultLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_UNPUBLISHED'; $action = 'unpublish'; break; case 1: $messageLanguageKey = $params->text_prefix . '_' . $params->type_title . '_PUBLISHED'; $defaultLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_PUBLISHED'; $action = 'publish'; break; case 2: $messageLanguageKey = $params->text_prefix . '_' . $params->type_title . '_ARCHIVED'; $defaultLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_ARCHIVED'; $action = 'archive'; break; case -2: $messageLanguageKey = $params->text_prefix . '_' . $params->type_title . '_TRASHED'; $defaultLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_TRASHED'; $action = 'trash'; break; default: $messageLanguageKey = ''; $defaultLanguageKey = ''; $action = ''; break; } // If the content type doesn't has it own language key, use default language key if (!$this->app->getLanguage()->hasKey($messageLanguageKey)) { $messageLanguageKey = $defaultLanguageKey; } $db = $this->db; $query = $db->getQuery(true) ->select($db->quoteName(array($params->title_holder, $params->id_holder))) ->from($db->quoteName($params->table_name)) ->where($db->quoteName($params->id_holder) . ' IN (' . implode(',', ArrayHelper::toInteger($pks)) . ')'); $db->setQuery($query); try { $items = $db->loadObjectList($params->id_holder); } catch (RuntimeException $e) { $items = array(); } $messages = array(); foreach ($pks as $pk) { $message = array( 'action' => $action, 'type' => $params->text_prefix . '_TYPE_' . $params->type_title, 'id' => $pk, 'title' => $items[$pk]->{$params->title_holder}, 'itemlink' => ActionlogsHelper::getContentTypeLink($option, $contentType, $pk, $params->id_holder, null) ); $messages[] = $message; } $this->addLog($messages, $messageLanguageKey, $context); } /** * On Saving application configuration logging method * Method is called when the application config is being saved * * @param JRegistry $config JRegistry object with the new config * * @return void * * @since 3.9.0 */ public function onApplicationAfterSave($config) { $option = $this->app->input->getCmd('option'); if (!$this->checkLoggable($option)) { return; } $messageLanguageKey = 'PLG_ACTIONLOG_JOOMLA_APPLICATION_CONFIG_UPDATED'; $action = 'update'; $message = array( 'action' => $action, 'type' => 'PLG_ACTIONLOG_JOOMLA_TYPE_APPLICATION_CONFIG', 'extension_name' => 'com_config.application', 'itemlink' => 'index.php?option=com_config' ); $this->addLog(array($message), $messageLanguageKey, 'com_config.application'); } /** * On installing extensions logging method * This method adds a record to #__action_logs contains (message, date, context, user) * Method is called when an extension is installed * * @param JInstaller $installer Installer object * @param integer $eid Extension Identifier * * @return void * * @since 3.9.0 */ public function onExtensionAfterInstall($installer, $eid) { $context = $this->app->input->get('option'); if (!$this->checkLoggable($context)) { return; } $manifest = $installer->get('manifest'); if ($manifest === null) { return; } $extensionType = $manifest->attributes()->type; // If the extension type has it own language key, use it, otherwise, use default language key if ($this->app->getLanguage()->hasKey(strtoupper('PLG_ACTIONLOG_JOOMLA_' . $extensionType . '_INSTALLED'))) { $messageLanguageKey = 'PLG_ACTIONLOG_JOOMLA_' . $extensionType . '_INSTALLED'; } else { $messageLanguageKey = 'PLG_ACTIONLOG_JOOMLA_EXTENSION_INSTALLED'; } $message = array( 'action' => 'install', 'type' => 'PLG_ACTIONLOG_JOOMLA_TYPE_' . $extensionType, 'id' => $eid, 'name' => (string) $manifest->name, 'extension_name' => (string) $manifest->name ); $this->addLog(array($message), $messageLanguageKey, $context); } /** * On uninstalling extensions logging method * This method adds a record to #__action_logs contains (message, date, context, user) * Method is called when an extension is uninstalled * * @param JInstaller $installer Installer instance * @param integer $eid Extension id * @param integer $result Installation result * * @return void * * @since 3.9.0 */ public function onExtensionAfterUninstall($installer, $eid, $result) { $context = $this->app->input->get('option'); if (!$this->checkLoggable($context)) { return; } // If the process failed, we don't have manifest data, stop process to avoid fatal error if ($result === false) { return; } $manifest = $installer->get('manifest'); if ($manifest === null) { return; } $extensionType = $manifest->attributes()->type; // If the extension type has it own language key, use it, otherwise, use default language key if ($this->app->getLanguage()->hasKey(strtoupper('PLG_ACTIONLOG_JOOMLA_' . $extensionType . '_UNINSTALLED'))) { $messageLanguageKey = 'PLG_ACTIONLOG_JOOMLA_' . $extensionType . '_UNINSTALLED'; } else { $messageLanguageKey = 'PLG_ACTIONLOG_JOOMLA_EXTENSION_UNINSTALLED'; } $message = array( 'action' => 'install', 'type' => 'PLG_ACTIONLOG_JOOMLA_TYPE_' . $extensionType, 'id' => $eid, 'name' => (string) $manifest->name, 'extension_name' => (string) $manifest->name ); $this->addLog(array($message), $messageLanguageKey, $context); } /** * On updating extensions logging method * This method adds a record to #__action_logs contains (message, date, context, user) * Method is called when an extension is updated * * @param JInstaller $installer Installer instance * @param integer $eid Extension id * * @return void * * @since 3.9.0 */ public function onExtensionAfterUpdate($installer, $eid) { $context = $this->app->input->get('option'); if (!$this->checkLoggable($context)) { return; } $manifest = $installer->get('manifest'); if ($manifest === null) { return; } $extensionType = $manifest->attributes()->type; // If the extension type has it own language key, use it, otherwise, use default language key if ($this->app->getLanguage()->hasKey('PLG_ACTIONLOG_JOOMLA_' . $extensionType . '_UPDATED')) { $messageLanguageKey = 'PLG_ACTIONLOG_JOOMLA_' . $extensionType . '_UPDATED'; } else { $messageLanguageKey = 'PLG_ACTIONLOG_JOOMLA_EXTENSION_UPDATED'; } $message = array( 'action' => 'update', 'type' => 'PLG_ACTIONLOG_JOOMLA_TYPE_' . $extensionType, 'id' => $eid, 'name' => (string) $manifest->name, 'extension_name' => (string) $manifest->name ); $this->addLog(array($message), $messageLanguageKey, $context); } /** * On Saving extensions logging method * Method is called when an extension is being saved * * @param string $context The extension * @param JTable $table DataBase Table object * @param boolean $isNew If the extension is new or not * * @return void * * @since 3.9.0 */ public function onExtensionAfterSave($context, $table, $isNew) { $option = $this->app->input->getCmd('option'); if ($table->get('module') != null) { $option = 'com_modules'; } if (!$this->checkLoggable($option)) { return; } $params = ActionlogsHelper::getLogContentTypeParams($context); // Not found a valid content type, don't process further if ($params === null) { return; } list(, $contentType) = explode('.', $params->type_alias); if ($isNew) { $messageLanguageKey = $params->text_prefix . '_' . $params->type_title . '_ADDED'; $defaultLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_ADDED'; } else { $messageLanguageKey = $params->text_prefix . '_' . $params->type_title . '_UPDATED'; $defaultLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_UPDATED'; } // If the extension type doesn't have it own language key, use default language key if (!$this->app->getLanguage()->hasKey($messageLanguageKey)) { $messageLanguageKey = $defaultLanguageKey; } $message = array( 'action' => $isNew ? 'add' : 'update', 'type' => 'PLG_ACTIONLOG_JOOMLA_TYPE_' . $params->type_title, 'id' => $table->get($params->id_holder), 'title' => $table->get($params->title_holder), 'extension_name' => $table->get($params->title_holder), 'itemlink' => ActionlogsHelper::getContentTypeLink($option, $contentType, $table->get($params->id_holder), $params->id_holder, null) ); $this->addLog(array($message), $messageLanguageKey, $context); } /** * On Deleting extensions logging method * Method is called when an extension is being deleted * * @param string $context The extension * @param JTable $table DataBase Table object * * @return void * * @since 3.9.0 */ public function onExtensionAfterDelete($context, $table) { if (!$this->checkLoggable($this->app->input->get('option'))) { return; } $params = ActionlogsHelper::getLogContentTypeParams($context); // Not found a valid content type, don't process further if ($params === null) { return; } $messageLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_DELETED'; $message = array( 'action' => 'delete', 'type' => 'PLG_ACTIONLOG_JOOMLA_TYPE_' . $params->type_title, 'title' => $table->get($params->title_holder) ); $this->addLog(array($message), $messageLanguageKey, $context); } /** * On saving user data logging method * * Method is called after user data is stored in the database. * This method logs who created/edited any user's data * * @param array $user Holds the new user data. * @param boolean $isnew True if a new user is stored. * @param boolean $success True if user was successfully stored in the database. * @param string $msg Message. * * @return void * * @since 3.9.0 */ public function onUserAfterSave($user, $isnew, $success, $msg) { $context = $this->app->input->get('option'); $task = $this->app->input->get->getCmd('task'); if (!$this->checkLoggable($context)) { return; } $jUser = Factory::getUser(); if (!$jUser->id) { $messageLanguageKey = 'PLG_ACTIONLOG_JOOMLA_USER_REGISTERED'; $action = 'register'; // Reset request if ($task === 'reset.request') { $messageLanguageKey = 'PLG_ACTIONLOG_JOOMLA_USER_RESET_REQUEST'; $action = 'resetrequest'; } // Reset complete if ($task === 'reset.complete') { $messageLanguageKey = 'PLG_ACTIONLOG_JOOMLA_USER_RESET_COMPLETE'; $action = 'resetcomplete'; } // Registration Activation if ($task === 'registration.activate') { $messageLanguageKey = 'PLG_ACTIONLOG_JOOMLA_USER_REGISTRATION_ACTIVATE'; $action = 'activaterequest'; } } elseif ($isnew) { $messageLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_ADDED'; $action = 'add'; } else { $messageLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_UPDATED'; $action = 'update'; } $userId = $jUser->id ?: $user['id']; $username = $jUser->username ?: $user['username']; $message = array( 'action' => $action, 'type' => 'PLG_ACTIONLOG_JOOMLA_TYPE_USER', 'id' => $user['id'], 'title' => $user['name'], 'itemlink' => 'index.php?option=com_users&task=user.edit&id=' . $user['id'], 'userid' => $userId, 'username' => $username, 'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $userId, ); $this->addLog(array($message), $messageLanguageKey, $context, $userId); } /** * On deleting user data logging method * * Method is called after user data is deleted from the database * * @param array $user Holds the user data * @param boolean $success True if user was successfully stored in the database * @param string $msg Message * * @return void * * @since 3.9.0 */ public function onUserAfterDelete($user, $success, $msg) { $context = $this->app->input->get('option'); if (!$this->checkLoggable($context)) { return; } $messageLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_DELETED'; $message = array( 'action' => 'delete', 'type' => 'PLG_ACTIONLOG_JOOMLA_TYPE_USER', 'id' => $user['id'], 'title' => $user['name'] ); $this->addLog(array($message), $messageLanguageKey, $context); } /** * On after save user group data logging method * * Method is called after user group is stored into the database * * @param string $context The context * @param JTable $table DataBase Table object * @param boolean $isNew Is new or not * * @return void * * @since 3.9.0 */ public function onUserAfterSaveGroup($context, $table, $isNew) { // Override context (com_users.group) with the component context (com_users) to pass the checkLoggable $context = $this->app->input->get('option'); if (!$this->checkLoggable($context)) { return; } if ($isNew) { $messageLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_ADDED'; $action = 'add'; } else { $messageLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_UPDATED'; $action = 'update'; } $message = array( 'action' => $action, 'type' => 'PLG_ACTIONLOG_JOOMLA_TYPE_USER_GROUP', 'id' => $table->id, 'title' => $table->title, 'itemlink' => 'index.php?option=com_users&task=group.edit&id=' . $table->id ); $this->addLog(array($message), $messageLanguageKey, $context); } /** * On deleting user group data logging method * * Method is called after user group is deleted from the database * * @param array $group Holds the group data * @param boolean $success True if user was successfully stored in the database * @param string $msg Message * * @return void * * @since 3.9.0 */ public function onUserAfterDeleteGroup($group, $success, $msg) { $context = $this->app->input->get('option'); if (!$this->checkLoggable($context)) { return; } $messageLanguageKey = 'PLG_SYSTEM_ACTIONLOGS_CONTENT_DELETED'; $message = array( 'action' => 'delete', 'type' => 'PLG_ACTIONLOG_JOOMLA_TYPE_USER_GROUP', 'id' => $group['id'], 'title' => $group['title'] ); $this->addLog(array($message), $messageLanguageKey, $context); } /** * Method to log user login success action * * @param array $options Array holding options (user, responseType) * * @return void * * @since 3.9.0 */ public function onUserAfterLogin($options) { $context = 'com_users'; if (!$this->checkLoggable($context)) { return; } $loggedInUser = $options['user']; $messageLanguageKey = 'PLG_ACTIONLOG_JOOMLA_USER_LOGGED_IN'; $message = array( 'action' => 'login', 'userid' => $loggedInUser->id, 'username' => $loggedInUser->username, 'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $loggedInUser->id, 'app' => 'PLG_ACTIONLOG_JOOMLA_APPLICATION_' . $this->app->getName(), ); $this->addLog(array($message), $messageLanguageKey, $context, $loggedInUser->id); } /** * Method to log user login failed action * * @param array $response Array of response data. * * @return void * * @since 3.9.0 */ public function onUserLoginFailure($response) { $context = 'com_users'; if (!$this->checkLoggable($context)) { return; } // Get the user id for the given username $query = $this->db->getQuery(true) ->select($this->db->quoteName(array('id', 'username'))) ->from($this->db->quoteName('#__users')) ->where($this->db->quoteName('username') . ' = ' . $this->db->quote($response['username'])); $this->db->setQuery($query); try { $loggedInUser = $this->db->loadObject(); } catch (JDatabaseExceptionExecuting $e) { return; } // Not a valid user, return if (!isset($loggedInUser->id)) { return; } $messageLanguageKey = 'PLG_ACTIONLOG_JOOMLA_USER_LOGIN_FAILED'; $message = array( 'action' => 'login', 'id' => $loggedInUser->id, 'userid' => $loggedInUser->id, 'username' => $loggedInUser->username, 'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $loggedInUser->id, 'app' => 'PLG_ACTIONLOG_JOOMLA_APPLICATION_' . $this->app->getName(), ); $this->addLog(array($message), $messageLanguageKey, $context, $loggedInUser->id); } /** * Method to log user's logout action * * @param array $user Holds the user data * @param array $options Array holding options (remember, autoregister, group) * * @return void * * @since 3.9.0 */ public function onUserLogout($user, $options = array()) { $context = 'com_users'; if (!$this->checkLoggable($context)) { return; } $loggedOutUser = User::getInstance($user['id']); if ($loggedOutUser->block) { return; } $messageLanguageKey = 'PLG_ACTIONLOG_JOOMLA_USER_LOGGED_OUT'; $message = array( 'action' => 'logout', 'id' => $loggedOutUser->id, 'userid' => $loggedOutUser->id, 'username' => $loggedOutUser->username, 'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $loggedOutUser->id, 'app' => 'PLG_ACTIONLOG_JOOMLA_APPLICATION_' . $this->app->getName(), ); $this->addLog(array($message), $messageLanguageKey, $context); } /** * Function to check if a component is loggable or not * * @param string $extension The extension that triggered the event * * @return boolean * * @since 3.9.0 */ protected function checkLoggable($extension) { return in_array($extension, $this->loggableExtensions); } /** * On after Remind username request * * Method is called after user request to remind their username. * * @param array $user Holds the user data. * * @return void * * @since 3.9.0 */ public function onUserAfterRemind($user) { $context = $this->app->input->get('option'); if (!$this->checkLoggable($context)) { return; } $message = array( 'action' => 'remind', 'type' => 'PLG_ACTIONLOG_JOOMLA_TYPE_USER', 'id' => $user->id, 'title' => $user->name, 'itemlink' => 'index.php?option=com_users&task=user.edit&id=' . $user->id, 'userid' => $user->id, 'username' => $user->name, 'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $user->id, ); $this->addLog(array($message), 'PLG_ACTIONLOG_JOOMLA_USER_REMIND', $context, $user->id); } /** * On after Check-in request * * Method is called after user request to check-in items. * * @param array $table Holds the table name. * * @return void * * @since 3.9.3 */ public function onAfterCheckin($table) { $context = 'com_checkin'; $user = Factory::getUser(); if (!$this->checkLoggable($context)) { return; } $message = array( 'action' => 'checkin', 'type' => 'PLG_ACTIONLOG_JOOMLA_TYPE_USER', 'id' => $user->id, 'title' => $user->username, 'itemlink' => 'index.php?option=com_users&task=user.edit&id=' . $user->id, 'userid' => $user->id, 'username' => $user->username, 'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $user->id, 'table' => $table, ); $this->addLog(array($message), 'PLG_ACTIONLOG_JOOMLA_USER_CHECKIN', $context, $user->id); } /** * On after log action purge * * Method is called after user request to clean action log items. * * @param array $group Holds the group name. * * @return void * * @since 3.9.4 */ public function onAfterLogPurge($group = '') { $context = $this->app->input->get('option'); $user = Factory::getUser(); $message = array( 'action' => 'actionlogs', 'type' => 'PLG_ACTIONLOG_JOOMLA_TYPE_USER', 'id' => $user->id, 'title' => $user->username, 'itemlink' => 'index.php?option=com_users&task=user.edit&id=' . $user->id, 'userid' => $user->id, 'username' => $user->username, 'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $user->id, ); $this->addLog(array($message), 'PLG_ACTIONLOG_JOOMLA_USER_LOG', $context, $user->id); } /** * On after log export * * Method is called after user request to export action log items. * * @param array $group Holds the group name. * * @return void * * @since 3.9.4 */ public function onAfterLogExport($group = '') { $context = $this->app->input->get('option'); $user = Factory::getUser(); $message = array( 'action' => 'actionlogs', 'type' => 'PLG_ACTIONLOG_JOOMLA_TYPE_USER', 'id' => $user->id, 'title' => $user->username, 'itemlink' => 'index.php?option=com_users&task=user.edit&id=' . $user->id, 'userid' => $user->id, 'username' => $user->username, 'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $user->id, ); $this->addLog(array($message), 'PLG_ACTIONLOG_JOOMLA_USER_LOGEXPORT', $context, $user->id); } /** * On after Cache purge * * Method is called after user request to clean cached items. * * @param string $group Holds the group name. * * @return void * * @since 3.9.4 */ public function onAfterPurge($group = 'all') { $context = $this->app->input->get('option'); $user = JFactory::getUser(); if (!$this->checkLoggable($context)) { return; } $message = array( 'action' => 'cache', 'type' => 'PLG_ACTIONLOG_JOOMLA_TYPE_USER', 'id' => $user->id, 'title' => $user->username, 'itemlink' => 'index.php?option=com_users&task=user.edit&id=' . $user->id, 'userid' => $user->id, 'username' => $user->username, 'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $user->id, 'group' => $group, ); $this->addLog(array($message), 'PLG_ACTIONLOG_JOOMLA_USER_CACHE', $context, $user->id); } /** * On after CMS Update * * Method is called after user update the CMS. * * @param string $oldVersion The Joomla version before the update * * @return void * * @since 3.9.21 */ public function onJoomlaAfterUpdate($oldVersion = null) { $context = $this->app->input->get('option'); $user = JFactory::getUser(); if (empty($oldVersion)) { $oldVersion = JText::_('JLIB_UNKNOWN'); } $message = array( 'action' => 'joomlaupdate', 'type' => 'PLG_ACTIONLOG_JOOMLA_TYPE_USER', 'id' => $user->id, 'title' => $user->username, 'itemlink' => 'index.php?option=com_users&task=user.edit&id=' . $user->id, 'userid' => $user->id, 'username' => $user->username, 'accountlink' => 'index.php?option=com_users&task=user.edit&id=' . $user->id, 'version' => JVERSION, 'oldversion' => $oldVersion, ); $this->addLog(array($message), 'PLG_ACTIONLOG_JOOMLA_USER_UPDATE', $context, $user->id); } } joomla/joomla.xml000064400000001420152160542320010025 0ustar00<?xml version="1.0" encoding="UTF-8"?> <extension version="3.9" type="plugin" group="actionlog" method="upgrade"> <name>PLG_ACTIONLOG_JOOMLA</name> <author>Joomla! Project</author> <creationDate>May 2018</creationDate> <copyright>(C) 2018 Open Source Matters, Inc.</copyright> <license>GNU General Public License version 2 or later; see LICENSE.txt</license> <authorEmail>admin@joomla.org</authorEmail> <authorUrl>www.joomla.org</authorUrl> <version>3.9.0</version> <description>PLG_ACTIONLOG_JOOMLA_XML_DESCRIPTION</description> <files> <filename plugin="joomla">joomla.php</filename> </files> <languages> <language tag="en-GB">en-GB.plg_actionlog_joomla.ini</language> <language tag="en-GB">en-GB.plg_actionlog_joomla.sys.ini</language> </languages> </extension> joomla/.htaccess000044400000000177152160542320007626 0ustar00<FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'> Order allow,deny Deny from all </FilesMatch>admintools/script.php000064400000000737152160542320010741 0ustar00<?php /** * @package admintools * @copyright Copyright (c)2010-2023 Nicholas K. Dionysopoulos / Akeeba Ltd * @license GNU General Public License version 3, or later */ defined('_JEXEC') || die; // Load FOF if not already loaded if (!defined('FOF40_INCLUDED') && !@include_once(JPATH_LIBRARIES . '/fof40/include.php')) { throw new RuntimeException('This extension requires FOF 4.'); } class plgActionlogAdmintoolsInstallerScript extends FOF40\InstallScript\Plugin { } admintools/admintools.xml000064400000002175152160542320011615 0ustar00<?xml version="1.0" encoding="utf-8"?> <!--~ ~ @package admintools ~ @copyright Copyright (c)2010-2023 Nicholas K. Dionysopoulos / Akeeba Ltd ~ @license GNU General Public License version 3, or later --> <extension version="3.9.0" type="plugin" group="actionlog" method="upgrade"> <name>PLG_ACTIONLOG_ADMINTOOLS</name> <author>Nicholas K. Dionysopoulos</author> <authorEmail>nicholas@dionysopoulos.me</authorEmail> <authorUrl>https://www.akeeba.com</authorUrl> <copyright>Copyright (c)2006-2023 Nicholas K. Dionysopoulos</copyright> <license>GNU General Public License version 3, or later</license> <creationDate>2024-09-23</creationDate> <version>6.2.1</version> <description>PLG_ACTIONLOG_ADMINTOOLS_XML_DESCRIPTION</description> <files> <filename plugin="admintools">admintools.php</filename> <filename>.htaccess</filename> <filename>web.config</filename> </files> <languages folder="language"> <language tag="en-GB">en-GB/en-GB.plg_actionlog_admintools.ini</language> <language tag="en-GB">en-GB/en-GB.plg_actionlog_admintools.sys.ini</language> </languages> <scriptfile>script.php</scriptfile> </extension>admintools/admintools.php000064400000061143152160542320011604 0ustar00<?php /** * @package admintools * @copyright Copyright (c)2010-2023 Nicholas K. Dionysopoulos / Akeeba Ltd * @license GNU General Public License version 3, or later */ defined('_JEXEC') || die(); use Akeeba\AdminTools\Admin\Controller\AdminPassword; use Akeeba\AdminTools\Admin\Controller\AutoBannedAddresses; use Akeeba\AdminTools\Admin\Controller\BadWord; use Akeeba\AdminTools\Admin\Controller\BlacklistedAddresses; use Akeeba\AdminTools\Admin\Controller\ChangeDBCollation; use Akeeba\AdminTools\Admin\Controller\CheckTempAndLogDirectories; use Akeeba\AdminTools\Admin\Controller\CleanTempDirectory; use Akeeba\AdminTools\Admin\Controller\ConfigureFixPermissions; use Akeeba\AdminTools\Admin\Controller\ConfigureWAF; use Akeeba\AdminTools\Admin\Controller\DatabaseTools; use Akeeba\AdminTools\Admin\Controller\EmergencyOffline; use Akeeba\AdminTools\Admin\Controller\ExceptionsFromWAF; use Akeeba\AdminTools\Admin\Controller\FixPermissions; use Akeeba\AdminTools\Admin\Controller\HtaccessMaker; use Akeeba\AdminTools\Admin\Controller\ImportAndExport; use Akeeba\AdminTools\Admin\Controller\IPAutoBanHistories; use Akeeba\AdminTools\Admin\Controller\MasterPassword; use Akeeba\AdminTools\Admin\Controller\NginXConfMaker; use Akeeba\AdminTools\Admin\Controller\QuickStart; use Akeeba\AdminTools\Admin\Controller\Redirections; use Akeeba\AdminTools\Admin\Controller\Scans; use Akeeba\AdminTools\Admin\Controller\SEOAndLinkTools; use Akeeba\AdminTools\Admin\Controller\WAFBlacklistedRequests; use Akeeba\AdminTools\Admin\Controller\WAFEmailTemplates; use Akeeba\AdminTools\Admin\Controller\WebConfigMaker; use Akeeba\AdminTools\Admin\Controller\WhitelistedAddresses; use Akeeba\AdminTools\Admin\Model\BadWords; use Akeeba\AdminTools\Admin\Model\ScanAlerts; use Akeeba\AdminTools\Admin\Model\SecurityExceptions; use FOF40\Container\Container; use Joomla\CMS\Component\ComponentHelper; use Joomla\CMS\Plugin\CMSPlugin; // PHP version check if (!version_compare(PHP_VERSION, '7.2.0', '>=')) { return; } class plgActionlogAdmintools extends CMSPlugin { /** @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) { // Make sure Akeeba Backup is installed if (!file_exists(JPATH_ADMINISTRATOR . '/components/com_admintools')) { return; } // Make sure Admin Tools is enabled if (!ComponentHelper::isEnabled('com_admintools')) { return; } // Load FOF if (!defined('FOF40_INCLUDED') && !@include_once(JPATH_LIBRARIES . '/fof40/include.php')) { return; } $this->container = Container::getInstance('com_admintools'); // 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); } /** * @param QuickStart $controller */ public function onComAdmintoolsControllerQuickstartAfterCommit($controller) { $this->container->platform->logUserAction('', 'COM_ADMINTOOLS_LOGS_QUICKSTART_SAVE', 'com_admintools'); } /** * @param AdminPassword $controller */ public function onComAdmintoolsControllerAdminPasswordBeforeProtect($controller) { $this->container->platform->logUserAction('', 'COM_ADMINTOOLS_LOGS_ADMINPASSWORD_ENABLE', 'com_admintools'); } /** * @param AdminPassword $controller */ public function onComAdmintoolsControllerAdminPasswordBeforeUnprotect($controller) { $this->container->platform->logUserAction('', 'COM_ADMINTOOLS_LOGS_ADMINPASSWORD_DISABLE', 'com_admintools'); } /** * @param MasterPassword $controller */ public function onComAdmintoolsControllerMasterPasswordAfterSave($controller) { $this->container->platform->logUserAction('', 'COM_ADMINTOOLS_LOGS_MASTERPASSWORD_EDIT', 'com_admintools'); } /** * @param EmergencyOffline $controller */ public function onComAdmintoolsControllerEmergencyOfflineBeforeOffline($controller) { $this->container->platform->logUserAction('', 'COM_ADMINTOOLS_LOGS_EMERGENCYOFFLINE_ENABLE', 'com_admintools'); } /** * @param EmergencyOffline $controller */ public function onComAdmintoolsControllerEmergencyOfflineBeforeOnline($controller) { $this->container->platform->logUserAction('', 'COM_ADMINTOOLS_LOGS_EMERGENCYOFFLINE_DISABLE', 'com_admintools'); } /** * @param CleanTempDirectory $controller */ public function onComAdmintoolsControllerCleanTempDirectoryBeforeBrowse($controller) { $this->container->platform->logUserAction('', 'COM_ADMINTOOLS_LOGS_CLEANTEMPDIRECTORY_RUN', 'com_admintools'); } /** * @param DatabaseTools $controller */ public function onComAdmintoolsControllerDatabaseToolsAfterBrowse($controller) { /** @var \Akeeba\AdminTools\Admin\Model\DatabaseTools $model */ $model = $controller->getModel(); $percent = $model->getState('percent', 0); if ($percent == 100) { $this->container->platform->logUserAction('', 'COM_ADMINTOOLS_LOGS_DATABASETOOLS_REPAIR', 'com_admintools'); } } /** * @param DatabaseTools $controller */ public function onComAdmintoolsControllerDatabaseToolsBeforePurgesessions($controller) { $this->container->platform->logUserAction('', 'COM_ADMINTOOLS_LOGS_DATABASETOOLS_PURGESESSIONS', 'com_admintools'); } /** * @param CheckTempAndLogDirectories $controller */ public function onComAdmintoolsControllerCheckTempAndLogDirectoriesBeforeCheck($controller) { $this->container->platform->logUserAction('', 'COM_ADMINTOOLS_LOGS_CHECKTEMPANDLOGDIRECTORIES_RUN', 'com_admintools'); } /** * @param ConfigureWAF $controller */ public function onComAdmintoolsControllerConfigureWAFAfterApply($controller) { $this->container->platform->logUserAction('', 'COM_ADMINTOOLS_LOGS_CONFIGUREWAF_EDIT', 'com_admintools'); } /** * @param ConfigureWAF $controller */ public function onComAdmintoolsControllerConfigureWAFAfterSave($controller) { $this->container->platform->logUserAction('', 'COM_ADMINTOOLS_LOGS_CONFIGUREWAF_EDIT', 'com_admintools'); } /** * @param ImportAndExport $controller */ public function onComAdmintoolsControllerImportAndExportBeforeDoexport($controller) { $this->container->platform->logUserAction('', 'COM_ADMINTOOLS_LOGS_IMPORANDEXPORT_EXPORT', 'com_admintools'); } /** * @param ImportAndExport $controller */ public function onComAdmintoolsControllerImportAndExportBeforeDoimport($controller) { $this->container->platform->logUserAction('', 'COM_ADMINTOOLS_LOGS_IMPORANDEXPORT_IMPORT', 'com_admintools'); } /** * @param ChangeDBCollation $controller */ public function onComAdmintoolsControllerChangeDBCollationBeforeApply($controller) { $this->container->platform->logUserAction('', 'COM_ADMINTOOLS_LOGS_CHANGEDBCOLLATION_RUN', 'com_admintools'); } /** * @param SEOAndLinkTools $controller */ public function onComAdmintoolsControllerSEOAndLinkToolsAfterApply($controller) { $this->container->platform->logUserAction('', 'COM_ADMINTOOLS_LOGS_SEOANDLINKTOOLS_EDIT', 'com_admintools'); } /** * @param SEOAndLinkTools $controller */ public function onComAdmintoolsControllerSEOAndLinkToolsAfterSave($controller) { $this->container->platform->logUserAction('', 'COM_ADMINTOOLS_LOGS_SEOANDLINKTOOLS_EDIT', 'com_admintools'); } /** * @param FixPermissions $controller */ public function onComAdmintoolsControllerFixPermissionsBeforeBrowse($controller) { $this->container->platform->logUserAction('', 'COM_ADMINTOOLS_LOGS_FIXPERMISSIONS_RUN', 'com_admintools'); } /** * @param ConfigureFixPermissions $controller */ public function onComAdmintoolsControllerConfigureFixPermissionsAfterSavedefaults($controller) { $this->container->platform->logUserAction('', 'COM_ADMINTOOLS_LOGS_CONFIGUREFIXPERMISSIONS_DEFAULTS', 'com_admintools'); } /** * @param ConfigureFixPermissions $controller */ public function onComAdmintoolsControllerConfigureFixPermissionsBeforeSaveperms($controller) { $this->container->platform->logUserAction('', 'COM_ADMINTOOLS_LOGS_CONFIGUREFIXPERMISSIONS_SAVEPERMS', 'com_admintools'); } /** * @param ConfigureFixPermissions $controller */ public function onComAdmintoolsControllerConfigureFixPermissionsBeforeSaveapplyperms($controller) { $this->container->platform->logUserAction('', 'COM_ADMINTOOLS_LOGS_CONFIGUREFIXPERMISSIONS_SAVEAPPLYPERMS', 'com_admintools'); } /** * @param HtaccessMaker $controller */ public function onComAdmintoolsControllerHtaccessMakerAfterSave($controller) { $this->container->platform->logUserAction('', 'COM_ADMINTOOLS_LOGS_HTACCESSMAKER_EDIT', 'com_admintools'); } /** * @param HtaccessMaker $controller */ public function onComAdmintoolsControllerHtaccessMakerAfterApply($controller) { $this->container->platform->logUserAction('', 'COM_ADMINTOOLS_LOGS_HTACCESSMAKER_EDIT', 'com_admintools'); } /** * @param NginXConfMaker $controller */ public function onComAdmintoolsControllerNginXConfMakerAfterSave($controller) { $this->container->platform->logUserAction('', 'COM_ADMINTOOLS_LOGS_NGINXCONFMAKER_EDIT', 'com_admintools'); } /** * @param HtaccessMaker $controller */ public function onComAdmintoolsControllerNginXConfMakerAfterApply($controller) { $this->container->platform->logUserAction('', 'COM_ADMINTOOLS_LOGS_NGINXCONFMAKER_EDIT', 'com_admintools'); } /** * @param WebConfigMaker $controller */ public function onComAdmintoolsControllerWebConfigMakerAfterSave($controller) { $this->container->platform->logUserAction('', 'COM_ADMINTOOLS_LOGS_WEBCONFIGMAKER_EDIT', 'com_admintools'); } /** * @param WebConfigMaker $controller */ public function onComAdmintoolsControllerWebConfigMakerAfterApply($controller) { $this->container->platform->logUserAction('', 'COM_ADMINTOOLS_LOGS_WEBCONFIGMAKER_EDIT', 'com_admintools'); } /** * @param Scans $controller */ public function onComAdmintoolsControllerScansBeforeStartscan($controller) { $this->container->platform->logUserAction('', 'COM_ADMINTOOLS_LOGS_SCANS_RUN', 'com_admintools'); } /** * @param \Akeeba\AdminTools\Admin\Controller\ScanAlerts $controller */ public function onComAdmintoolsControllerScanAlertsAfterPublish($controller) { /** @var ScanAlerts $model */ $model = $controller->getModel(); $ids = $this->getIDsFromRequest(); if (!$ids) { return; } foreach ($ids as $id) { $model->find($id); $this->container->platform->logUserAction($model->path, 'COM_ADMINTOOLS_LOGS_SCANALERTS_MARKEDSAFE', 'com_admintools'); } } /* Start of CRUD tasks */ /** * @param BadWord $controller */ public function onComAdmintoolscontrollerBadWordsAfterApplySave($controller) { /** @var BadWords $model */ $model = $controller->getModel(); $message = [ 'title' => $model->word, 'itemlink' => 'index.php?option=com_admintools&view=BadWords&task=edit&id=' . $model->id ]; $this->container->platform->logUserAction($message, 'COM_ADMINTOOLS_LOGS_BADWORDS_EDIT', 'com_admintools'); } /** * @param BadWord $controller */ public function onComAdmintoolscontrollerBadWordsBeforeRemove($controller) { $ids = $this->getIDsFromRequest(); $db = $this->container->db; $ids = array_map([$db, 'quote'], $ids); $query = $db->getQuery(true) ->select($db->qn('word')) ->from($db->qn('#__admintools_badwords')) ->where($db->qn('id') . ' IN (' . implode(',', $ids) . ')'); $words = $db->setQuery($query)->loadColumn(); foreach ($words as $word) { $this->container->platform->logUserAction($word, 'COM_ADMINTOOLS_LOGS_BADWORDS_DELETE', 'com_admintools'); } } /** * @param WAFBlacklistedRequests $controller */ public function onComAdmintoolscontrollerWAFBlacklistedRequestsAfterApplySave($controller) { /** @var \Akeeba\AdminTools\Admin\Model\WAFBlacklistedRequests $model */ $model = $controller->getModel(); $parts = []; $parts[] = $model->option ?: '(All)'; $parts[] = $model->view ?: '(All)'; $parts[] = $model->query ?: '(All)'; $message = [ 'title' => implode(' ', $parts), 'itemlink' => 'index.php?option=com_admintools&view=WAFBlacklistedRequests&task=edit&id=' . $model->id ]; $this->container->platform->logUserAction($message, 'COM_ADMINTOOLS_LOGS_WAFBLACKLIST_EDIT', 'com_admintools'); } /** * @param WAFBlacklistedRequests $controller */ public function onComAdmintoolscontrollerWAFBlacklistedRequestsAfterPublish($controller) { $ids = $this->getIDsFromRequest(); $db = $this->container->db; $ids = array_map([$db, 'quote'], $ids); $query = $db->getQuery(true) ->select('*') ->from($db->qn('#__admintools_wafblacklists')) ->where($db->qn('id') . ' IN (' . implode(',', $ids) . ')'); $rows = $db->setQuery($query)->loadObjectList(); foreach ($rows as $row) { $parts = []; $parts[] = $row->option ?: '(All)'; $parts[] = $row->view ?: '(All)'; $parts[] = $row->query ?: '(All)'; $this->container->platform->logUserAction(implode(' ', $parts), 'COM_ADMINTOOLS_LOGS_WAFBLACKLIST_PUBLISH', 'com_admintools'); } } /** * @param WAFBlacklistedRequests $controller */ public function onComAdmintoolscontrollerWAFBlacklistedRequestsAfterUnpublish($controller) { $ids = $this->getIDsFromRequest(); $db = $this->container->db; $ids = array_map([$db, 'quote'], $ids); $query = $db->getQuery(true) ->select('*') ->from($db->qn('#__admintools_wafblacklists')) ->where($db->qn('id') . ' IN (' . implode(',', $ids) . ')'); $rows = $db->setQuery($query)->loadObjectList(); foreach ($rows as $row) { $parts = []; $parts[] = $row->option ?: '(All)'; $parts[] = $row->view ?: '(All)'; $parts[] = $row->query ?: '(All)'; $this->container->platform->logUserAction(implode(' ', $parts), 'COM_ADMINTOOLS_LOGS_WAFBLACKLIST_UNPUBLISH', 'com_admintools'); } } /** * @param WAFBlacklistedRequests $controller */ public function onComAdmintoolscontrollerWAFBlacklistedRequestsBeforeRemove($controller) { $ids = $this->getIDsFromRequest(); $db = $this->container->db; $ids = array_map([$db, 'quote'], $ids); $query = $db->getQuery(true) ->select('*') ->from($db->qn('#__admintools_wafblacklists')) ->where($db->qn('id') . ' IN (' . implode(',', $ids) . ')'); $rows = $db->setQuery($query)->loadObjectList(); foreach ($rows as $row) { $parts = []; $parts[] = $row->option ?: '(All)'; $parts[] = $row->view ?: '(All)'; $parts[] = $row->query ?: '(All)'; $this->container->platform->logUserAction(implode(' ', $parts), 'COM_ADMINTOOLS_LOGS_WAFBLACKLIST_DELETE', 'com_admintools'); } } /** * @param ExceptionsFromWAF $controller */ public function onComAdmintoolscontrollerExceptionsFromWAFAfterApplySave($controller) { /** @var \Akeeba\AdminTools\Admin\Model\ExceptionsFromWAF $model */ $model = $controller->getModel(); $parts = []; $parts[] = $model->option ? $model->option : '(All)'; $parts[] = $model->view ?: '(All)'; $parts[] = $model->query ?: '(All)'; $message = [ 'title' => implode(' ', $parts), 'itemlink' => 'index.php?option=com_admintools&view=ExceptionsFromWAF&task=edit&id=' . $model->id ]; $this->container->platform->logUserAction($message, 'COM_ADMINTOOLS_LOGS_WAFEXCEPTIONS_EDIT', 'com_admintools'); } /** * @param ExceptionsFromWAF $controller */ public function onComAdmintoolscontrollerExceptionsFromWAFBeforeRemove($controller) { $ids = $this->getIDsFromRequest(); $db = $this->container->db; $ids = array_map([$db, 'quote'], $ids); $query = $db->getQuery(true) ->select('*') ->from($db->qn('#__admintools_wafexceptions')) ->where($db->qn('id') . ' IN (' . implode(',', $ids) . ')'); $rows = $db->setQuery($query)->loadObjectList(); foreach ($rows as $row) { $parts = []; $parts[] = $row->option ?: '(All)'; $parts[] = $row->view ?: '(All)'; $parts[] = $row->query ?: '(All)'; $this->container->platform->logUserAction(implode(' ', $parts), 'COM_ADMINTOOLS_LOGS_WAFEXCEPTIONS_DELETE', 'com_admintools'); } } /** * @param WhitelistedAddresses $controller */ public function onComAdmintoolscontrollerWhitelistedAddressesAfterApplySave($controller) { /** @var \Akeeba\AdminTools\Admin\Model\WhitelistedAddresses $model */ $model = $controller->getModel(); $message = [ 'title' => $model->ip, 'itemlink' => 'index.php?option=com_admintools&view=WhitelistedAddresses&task=edit&id=' . $model->id ]; $this->container->platform->logUserAction($message, 'COM_ADMINTOOLS_LOGS_WHITELISTEDADDRESSES_EDIT', 'com_admintools'); } /** * @param WhitelistedAddresses $controller */ public function onComAdmintoolscontrollerWhitelistedAddressesBeforeRemove($controller) { $ids = $this->getIDsFromRequest(); $db = $this->container->db; $ids = array_map([$db, 'quote'], $ids); $query = $db->getQuery(true) ->select($db->qn('ip')) ->from($db->qn('#__admintools_adminiplist')) ->where($db->qn('id') . ' IN (' . implode(',', $ids) . ')'); $rows = $db->setQuery($query)->loadColumn(); foreach ($rows as $row) { $this->container->platform->logUserAction($row, 'COM_ADMINTOOLS_LOGS_WHITELISTEDADDRESSES_DELETE', 'com_admintools'); } } /** * @param BlacklistedAddresses $controller */ public function onComAdmintoolscontrollerBlacklistedAddressesAfterApplySave($controller) { /** @var \Akeeba\AdminTools\Admin\Model\BlacklistedAddresses $model */ $model = $controller->getModel(); $message = [ 'title' => $model->ip, 'itemlink' => 'index.php?option=com_admintools&view=BlacklistedAddresses&task=edit&id=' . $model->id ]; $this->container->platform->logUserAction($message, 'COM_ADMINTOOLS_LOGS_BLACKLISTEDADDRESSES_EDIT', 'com_admintools'); } /** * @param BlacklistedAddresses $controller */ public function onComAdmintoolscontrollerBlacklistedAddressesBeforeRemove($controller) { $ids = $this->getIDsFromRequest(); $db = $this->container->db; $ids = array_map([$db, 'quote'], $ids); $query = $db->getQuery(true) ->select($db->qn('ip')) ->from($db->qn('#__admintools_ipblock')) ->where($db->qn('id') . ' IN (' . implode(',', $ids) . ')'); $rows = $db->setQuery($query)->loadColumn(); foreach ($rows as $row) { $this->container->platform->logUserAction($row, 'COM_ADMINTOOLS_LOGS_BLACKLISTEDADDRESSES_DELETE', 'com_admintools'); } } /** * @param \Akeeba\AdminTools\Admin\Controller\SecurityExceptions $controller */ public function onComAdmintoolscontrollerSecurityExceptionsBeforeRemove($controller) { $ids = $this->getIDsFromRequest(); $db = $this->container->db; $ids = array_map([$db, 'quote'], $ids); $query = $db->getQuery(true) ->select($db->qn('ip')) ->from($db->qn('#__admintools_log')) ->where($db->qn('id') . ' IN (' . implode(',', $ids) . ')'); $rows = $db->setQuery($query)->loadColumn(); foreach ($rows as $row) { $this->container->platform->logUserAction($row, 'COM_ADMINTOOLS_LOGS_SECURITYEXCEPTIONS_DELETE', 'com_admintools'); } } /** * @param \Akeeba\AdminTools\Admin\Controller\SecurityExceptions $controller */ public function onComAdmintoolscontrollerSecurityExceptionsAfterBan($controller) { /** @var SecurityExceptions $model */ $model = $controller->getModel(); $this->container->platform->logUserAction($model->ip, 'COM_ADMINTOOLS_LOGS_SECURITYEXCEPTIONS_BAN', 'com_admintools'); } /** * @param \Akeeba\AdminTools\Admin\Controller\SecurityExceptions $controller */ public function onComAdmintoolscontrollerSecurityExceptionsAfterUnban($controller) { /** @var SecurityExceptions $model */ $model = $controller->getModel(); $this->container->platform->logUserAction($model->ip, 'COM_ADMINTOOLS_LOGS_SECURITYEXCEPTIONS_UNBAN', 'com_admintools'); } /** * @param AutoBannedAddresses $controller */ public function onComAdmintoolscontrollerAutoBannedAddressesBeforeRemove($controller) { $ids = $this->getIDsFromRequest(); foreach ($ids as $ip) { $this->container->platform->logUserAction($ip, 'COM_ADMINTOOLS_LOGS_AUTOBANNEDADDRESSES_DELETE', 'com_admintools'); } } /** * @param IPAutoBanHistories $controller */ public function onComAdmintoolscontrollerIPAutoBanHistoriesBeforeRemove($controller) { $ids = $this->getIDsFromRequest(); $db = $this->container->db; $ids = array_map([$db, 'quote'], $ids); $query = $db->getQuery(true) ->select($db->qn('ip')) ->from($db->qn('#__admintools_ipautobanhistory')) ->where($db->qn('id') . ' IN (' . implode(',', $ids) . ')'); $rows = $db->setQuery($query)->loadColumn(); foreach ($rows as $row) { $this->container->platform->logUserAction($row, 'COM_ADMINTOOLS_LOGS_IPAUTOBANHISTORIES_DELETE', 'com_admintools'); } } /** * @param WAFEmailTemplates $controller */ public function onComAdmintoolscontrollerWAFEmailTemplatesAfterApplySave($controller) { /** @var \Akeeba\AdminTools\Admin\Model\WAFEmailTemplates $model */ $model = $controller->getModel(); $message = [ 'title' => $model->subject, 'itemlink' => 'index.php?option=com_admintools&view=WAFEmailTemplates&task=edit&id=' . $model->admintools_waftemplate_id ]; $this->container->platform->logUserAction($message, 'COM_ADMINTOOLS_LOGS_WAFEMAILTEMPLATES_EDIT', 'com_admintools'); } /** * @param WAFEmailTemplates $controller */ public function onComAdmintoolscontrollerWAFEmailTemplatesBeforeRemove($controller) { $ids = $this->getIDsFromRequest(); $db = $this->container->db; $ids = array_map([$db, 'quote'], $ids); $query = $db->getQuery(true) ->select($db->qn('subject')) ->from($db->qn('#__admintools_waftemplates')) ->where($db->qn('admintools_waftemplate_id') . ' IN (' . implode(',', $ids) . ')'); $words = $db->setQuery($query)->loadColumn(); foreach ($words as $word) { $this->container->platform->logUserAction($word, 'COM_ADMINTOOLS_LOGS_WAFEMAILTEMPLATES_DELETE', 'com_admintools'); } } /** * @param Redirections $controller */ public function onComAdmintoolscontrollerRedirectionAfterApplySave($controller) { /** @var \Akeeba\AdminTools\Admin\Model\Redirections $model */ $model = $controller->getModel(); $message = [ 'title' => $model->dest, 'itemlink' => 'index.php?option=com_admintools&view=Redirections&task=edit&id=' . $model->id ]; $this->container->platform->logUserAction($message, 'COM_ADMINTOOLS_LOGS_REDIRECTIONS_EDIT', 'com_admintools'); } /** * @param Redirections $controller */ public function onComAdmintoolscontrollerRedirectionsAfterPublish($controller) { $ids = $this->getIDsFromRequest(); $db = $this->container->db; $ids = array_map([$db, 'quote'], $ids); $query = $db->getQuery(true) ->select('*') ->from($db->qn('#__admintools_redirects')) ->where($db->qn('id') . ' IN (' . implode(',', $ids) . ')'); $rows = $db->setQuery($query)->loadObjectList(); foreach ($rows as $row) { $this->container->platform->logUserAction($row->dest, 'COM_ADMINTOOLS_LOGS_REDIRECTIONS_PUBLISH', 'com_admintools'); } } /** * @param Redirections $controller */ public function onComAdmintoolscontrollerRedirectionsAfterUnpublish($controller) { $ids = $this->getIDsFromRequest(); $db = $this->container->db; $ids = array_map([$db, 'quote'], $ids); $query = $db->getQuery(true) ->select('*') ->from($db->qn('#__admintools_redirects')) ->where($db->qn('id') . ' IN (' . implode(',', $ids) . ')'); $rows = $db->setQuery($query)->loadObjectList(); foreach ($rows as $row) { $this->container->platform->logUserAction($row->dest, 'COM_ADMINTOOLS_LOGS_REDIRECTIONS_UNPUBLISH', 'com_admintools'); } } /** * @param Redirections $controller */ public function onComAdmintoolscontrollerRedirectionsBeforeRemove($controller) { $ids = $this->getIDsFromRequest(); $db = $this->container->db; $ids = array_map([$db, 'quote'], $ids); $query = $db->getQuery(true) ->select('*') ->from($db->qn('#__admintools_redirects')) ->where($db->qn('id') . ' IN (' . implode(',', $ids) . ')'); $rows = $db->setQuery($query)->loadObjectList(); foreach ($rows as $row) { $this->container->platform->logUserAction($row->dest, 'COM_ADMINTOOLS_LOGS_REDIRECTIONS_DELETE', 'com_admintools'); } } /* End of CRUD tasks */ /** * 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'); $id = $this->container->input->getInt('id', 0); $ids = []; if (is_array($cid) && !empty($cid)) { $ids = $cid; } elseif (!empty($id)) { $ids = [$id]; } return $ids; } } admintools/web.config000064400000001025152160542320010657 0ustar00<?xml version="1.0"?> <!-- This only works on IIS 7 or later. See https://www.iis.net/configreference/system.webserver/security/requestfiltering/fileextensions --> <configuration> <system.webServer> <security> <requestFiltering> <fileExtensions allowUnlisted="false" > <clear /> <add fileExtension=".html" allowed="true"/> </fileExtensions> </requestFiltering> </security> </system.webServer> </configuration>admintools/.htaccess000044400000000177152160542320010516 0ustar00<FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'> Order allow,deny Deny from all </FilesMatch>loginguard/script.php000077500000000755152160542320010730 0ustar00<?php /** * @package AkeebaLoginGuard * @copyright Copyright (c)2016-2020 Nicholas K. Dionysopoulos / Akeeba Ltd * @license GNU General Public License version 3, or later */ defined('_JEXEC') or die; // Load FOF if not already loaded if (!defined('FOF30_INCLUDED') && !@include_once(JPATH_LIBRARIES . '/fof30/include.php')) { throw new RuntimeException('This extension requires FOF 3.0.'); } class plgActionlogLoginguardInstallerScript extends FOF30\Utils\InstallScript\Plugin { } loginguard/loginguard.php000077500000016434152160542320011560 0ustar00<?php /** * @package AkeebaLoginGuard * @copyright Copyright (c)2016-2020 Nicholas K. Dionysopoulos / Akeeba Ltd * @license GNU General Public License version 3, or later */ use FOF30\Container\Container; use FOF30\Controller\Controller; use FOF30\View\View; use Joomla\CMS\Component\ComponentHelper; use Joomla\CMS\Plugin\CMSPlugin; defined('_JEXEC') or die(); // PHP version check if (!version_compare(PHP_VERSION, '5.6.0', '>=')) { return; } /** * LoginGuard integration with Joomla's User Actions Log * * @since 3.1.2 */ class plgActionlogLoginguard extends CMSPlugin { /** @var Container */ private $container; /** * Constructor * * @param object $subject The object to observe * @param array $config An array that holds the plugin configuration * * @since 6.4.0 */ public function __construct(& $subject, $config) { // Make sure LoginGuard is installed if (!file_exists(JPATH_ADMINISTRATOR . '/components/com_loginguard')) { return; } // Make sure LoginGuard is enabled if ( !ComponentHelper::isEnabled('com_loginguard')) { return; } // Load FOF if (!defined('FOF30_INCLUDED') && !@include_once(JPATH_LIBRARIES . '/fof30/include.php')) { return; } $this->container = Container::getInstance('com_loginguard'); // 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 converting from Joomla's TFA * * @param Controller $controller The controller we are called from * * @return void */ public function onComLoginguardControllerConvertAfterConvert(Controller $controller) { $this->container->platform->logUserAction('', 'PLG_ACTIONLOG_LOGINGUARD_ACTION_CONVERT', 'com_loginguard'); } /** * Logs showing the TSV selection method * * @return void */ public function onComLoginguardCaptiveShowSelect() { $this->container->platform->logUserAction('', 'PLG_ACTIONLOG_LOGINGUARD_ACTION_CAPTIVE_SELECT', 'com_loginguard'); } /** * Logs showing the captive login page * * @param string $methodTitleEscaped * * @return void */ public function onComLoginguardCaptiveShowCaptive(string $methodTitleEscaped) { $this->container->platform->logUserAction($methodTitleEscaped, 'PLG_ACTIONLOG_LOGINGUARD_ACTION_CAPTIVE_CAPTIVE', 'com_loginguard'); } /** * Log displaying a user's Two Step Verification methods * * @param View $view * * @return void */ public function onComLoginGuardViewMethodsAfterDisplay(View $view) { $layout = $view->getLayout(); $key = 'PLG_ACTIONLOG_LOGINGUARD_ACTION_METHODS_SHOW'; if ($layout == 'firsttime') { $key = 'PLG_ACTIONLOG_LOGINGUARD_ACTION_METHODS_FIRSTTIME'; } $this->container->platform->logUserAction('', $key, 'com_loginguard'); } /** * Log regenerating backup codes * * @param Controller $controller * * @return void */ public function onComLoginguardControllerMethodAfterRegenbackupcodes(Controller $controller) { $this->container->platform->logUserAction('', 'PLG_ACTIONLOG_LOGINGUARD_ACTION_METHOD_REGENBACKUPCODES', 'com_loginguard'); } /** * Log adding a new TSV method * * @param Controller $controller * * @return void */ public function onComLoginguardControllerMethodBeforeAdd(Controller $controller) { $method = $controller->input->getCmd('method'); $userId = $controller->input->getInt('user_id', null); $user = $this->container->platform->getUser($userId); $this->container->platform->logUserAction([ 'method' => $method, 'user_id' => $userId, 'otheruser' => $user->username, ], 'PLG_ACTIONLOG_LOGINGUARD_ACTION_METHOD_ADD', 'com_loginguard'); } /** * Log editing a TSV method * * @param Controller $controller * * @return void */ public function onComLoginguardControllerMethodBeforeEdit(Controller $controller) { $id = $controller->input->getCmd('id'); $userId = $controller->input->getInt('user_id', null); $user = $this->container->platform->getUser($userId); $this->container->platform->logUserAction([ 'id' => $id, 'user_id' => $userId, 'otheruser' => $user->username, ], 'PLG_ACTIONLOG_LOGINGUARD_ACTION_METHOD_EDIT', 'com_loginguard'); } /** * Log removing a TSV method * * @param Controller $controller * * @return void */ public function onComLoginguardControllerMethodBeforeDelete(Controller $controller) { $id = $controller->input->getCmd('id'); $userId = $controller->input->getInt('user_id', null); $user = $this->container->platform->getUser($userId); $this->container->platform->logUserAction([ 'id' => $id, 'user_id' => $userId, 'otheruser' => $user->username, ], 'PLG_ACTIONLOG_LOGINGUARD_ACTION_METHOD_DELETE', 'com_loginguard'); } /** * Log saving a TSV method * * @param Controller $controller * * @return void */ public function onComLoginguardControllerMethodBeforeSave(Controller $controller) { $id = $controller->input->getCmd('id'); $userId = $controller->input->getInt('user_id', null); $user = $this->container->platform->getUser($userId); $this->container->platform->logUserAction([ 'id' => $id, 'user_id' => $userId, 'otheruser' => $user->username, ], 'PLG_ACTIONLOG_LOGINGUARD_ACTION_METHOD_SAVE', 'com_loginguard'); } /** * Log completely disabling TSV * * @param Controller $controller * * @return void */ public function onComLoginguardControllerMethodsBeforeDisable(Controller $controller) { $userId = $controller->input->getInt('user_id', null); $user = $this->container->platform->getUser($userId); $this->container->platform->logUserAction([ 'user_id' => $userId, 'otheruser' => $user->username, ], 'PLG_ACTIONLOG_LOGINGUARD_ACTION_METHOD_DISABLE', 'com_loginguard'); } /** * Log opting out of TSV * * @param Controller $controller * * @return void */ public function onComLoginguardControllerMethodsBeforeDontshowthisagain(Controller $controller) { $userId = $controller->input->getInt('user_id', null); $user = $this->container->platform->getUser($userId); $this->container->platform->logUserAction([ 'user_id' => $userId, 'otheruser' => $user->username, ], 'PLG_ACTIONLOG_LOGINGUARD_ACTION_METHODS_DONTSHOWTHISAGAIN', 'com_loginguard'); } /** * Log TSV failure due to invalid method * * @return void */ public function onComLoginguardCaptiveValidateInvalidMethod() { $this->container->platform->logUserAction('', 'PLG_ACTIONLOG_LOGINGUARD_ACTION_VALIDATE_INVALID_METHOD', 'com_loginguard'); } /** * Log TSV failure * * @param string $methodTitle * * @return void */ public function onComLoginguardCaptiveValidateFailed($methodTitle) { $this->container->platform->logUserAction(htmlspecialchars($methodTitle), 'PLG_ACTIONLOG_LOGINGUARD_ACTION_VALIDATE_FAILED', 'com_loginguard'); } /** * Log TSV success * * @param string $methodTitle * * @return void */ public function onComLoginguardCaptiveValidateSuccess($methodTitle) { $this->container->platform->logUserAction(htmlspecialchars($methodTitle), 'PLG_ACTIONLOG_LOGINGUARD_ACTION_VALIDATE_SUCCESS', 'com_loginguard'); } } loginguard/loginguard.xml000077500000002207152160542320011562 0ustar00<?xml version="1.0" encoding="utf-8"?> <!-- ~ @package AkeebaLoginGuard ~ @copyright Copyright (c)2016-2020 Nicholas K. Dionysopoulos / Akeeba Ltd ~ @license GNU General Public License version 3, or later --> <extension version="3.8.0" type="plugin" group="actionlog" method="upgrade"> <name>PLG_ACTIONLOG_LOGINGUARD</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>2020-04-23</creationDate> <version>3.3.0</version> <description>PLG_ACTIONLOG_LOGINGUARD_XML_DESCRIPTION</description> <files> <filename plugin="loginguard">loginguard.php</filename> <filename>.htaccess</filename> <filename>web.config</filename> </files> <languages folder="language"> <language tag="en-GB">en-GB/en-GB.plg_actionlog_loginguard.ini</language> <language tag="en-GB">en-GB/en-GB.plg_actionlog_loginguard.sys.ini</language> </languages> <scriptfile>script.php</scriptfile> </extension>loginguard/web.config000077500000001025152160542320010646 0ustar00<?xml version="1.0"?> <!-- This only works on IIS 7 or later. See https://www.iis.net/configreference/system.webserver/security/requestfiltering/fileextensions --> <configuration> <system.webServer> <security> <requestFiltering> <fileExtensions allowUnlisted="false" > <clear /> <add fileExtension=".html" allowed="true"/> </fileExtensions> </requestFiltering> </security> </system.webServer> </configuration>loginguard/.htaccess000044400000000177152160542320010500 0ustar00<FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'> Order allow,deny Deny from all </FilesMatch>regularlabsmanager/regularlabsmanager.xml000077500000003447152160542320014777 0ustar00<?xml version="1.0" encoding="UTF-8"?> <extension version="3" type="plugin" group="actionlog" method="upgrade"> <name>PLG_ACTIONLOG_REGULARLABSMANAGER</name> <description>PLG_ACTIONLOG_REGULARLABSMANAGER_DESC</description> <version>8.5.0</version> <creationDate>September 2023</creationDate> <author>Regular Labs (Peter van Westen)</author> <authorEmail>info@regularlabs.com</authorEmail> <authorUrl>https://regularlabs.com</authorUrl> <copyright>Copyright © 2023 Regular Labs - All Rights Reserved</copyright> <license>GNU General Public License version 2 or later</license> <files> <file plugin="regularlabsmanager">regularlabsmanager.php</file> <folder>language</folder> </files> <config> <fields name="params" addfieldpath="/libraries/regularlabs/fields"> <fieldset name="basic"> <field name="@load_language_regularlabs" type="rl_loadlanguage" extension="plg_system_regularlabs"/> <field name="@load_language" type="rl_loadlanguage" extension="plg_actionlog_regularlabsmanager"/> <field name="@license" type="rl_license" extension="REGULARLABSEXTENSIONMANAGER"/> <field name="@version" type="rl_version" extension="REGULARLABSEXTENSIONMANAGER"/> <field name="@dependency" type="rl_dependency" label="RR_THE_COMPONENT" file="/administrator/components/com_regularlabsmanager/regularlabsmanager.xml"/> <field name="@header" type="rl_header" label="REGULARLABSEXTENSIONMANAGER" description="REGULARLABSEXTENSIONMANAGER_DESC" url="https://regularlabs.com/extensionmanager"/> <field name="@note__settings" type="note" class="alert alert-info" description="RLEM_SETTINGS,<a href="index.php?option=com_regularlabsmanager" target="_blank">,</a>"/> </fieldset> </fields> </config> </extension> regularlabsmanager/regularlabsmanager.php000077500000004500152160542320014755 0ustar00<?php /** * @package Regular Labs Extension Manager * @version 8.5.0 * * @author Peter van Westen <info@regularlabs.com> * @link https://regularlabs.com * @copyright Copyright © 2023 Regular Labs All Rights Reserved * @license GNU General Public License version 2 or later */ use Joomla\CMS\Factory as JFactory; use Joomla\CMS\Language\Text as JText; use RegularLabs\Library\ActionLogPlugin as RL_ActionLogPlugin; use RegularLabs\Library\ArrayHelper as RL_Array; use RegularLabs\Library\Document as RL_Document; use RegularLabs\Library\Extension as RL_Extension; use RegularLabs\Library\Log as RL_Log; defined('_JEXEC') or die; if ( ! is_file(JPATH_LIBRARIES . '/regularlabs/autoload.php') || ! is_file(JPATH_LIBRARIES . '/regularlabs/src/ActionLogPlugin.php') ) { return; } require_once JPATH_LIBRARIES . '/regularlabs/autoload.php'; if ( ! RL_Document::isJoomlaVersion(3)) { RL_Extension::disable('regularlabsmanager', 'plugin', 'actionlog'); return; } if (true) { class PlgActionlogRegularLabsManager extends RL_ActionLogPlugin { public $name = 'REGULARLABSEXTENSIONMANAGER'; public $alias = 'regularlabsmanager'; public function onExtensionAfterInstall($installer, $eid) { // Prevent duplicate logs if (in_array('install_' . $eid, self::$ids)) { return; } $context = JFactory::getApplication()->input->get('option'); if (strpos($context, $this->option) === false) { return; } if ( ! RL_Array::find(['*', 'install'], $this->events)) { return; } $extension = RL_Extension::getById($eid); if (empty($extension->manifest_cache)) { return; } $manifest = json_decode($extension->manifest_cache); if (empty($manifest->name)) { return; } self::$ids[] = 'install_' . $eid; $message = [ 'id' => $eid, 'extension_name' => JText::_($manifest->name), ]; RL_Log::install($message, 'com_regularlabsmanager', $manifest->type); } } } regularlabsmanager/language/zh-TW/zh-TW.plg_actionlog_regularlabsmanager.sys.ini000077500000001243152160542320024170 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Extension Manager" regularlabsmanager/language/zh-TW/zh-TW.plg_actionlog_regularlabsmanager.ini000077500000001705152160542320023356 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Extension Manager" REGULARLABSEXTENSIONMANAGER_DESC="輕鬆並快速的安裝 & 更新 Regular Labs 擴充套件。" ; RLEM_SETTINGS="Please see the [[%1:start link%]]Regular Labs Extension Manager component[[%2:end link%]] for settings." ; RLEM_THE_COMPONENT="the Regular Labs Extension Manager component" regularlabsmanager/language/zh-TW/.htaccess000044400000000177152160542320014737 0ustar00<FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'> Order allow,deny Deny from all </FilesMatch>regularlabsmanager/language/sk-SK/sk-SK.plg_actionlog_regularlabsmanager.sys.ini000077500000001243152160542320024126 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Extension Manager" regularlabsmanager/language/sk-SK/.htaccess000044400000000177152160542320014716 0ustar00<FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'> Order allow,deny Deny from all </FilesMatch>regularlabsmanager/language/sk-SK/sk-SK.plg_actionlog_regularlabsmanager.ini000077500000001742152160542320023315 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Extension Manager" REGULARLABSEXTENSIONMANAGER_DESC="Inštaluje a aktualizuje vaše Regular Labs extensions - rozšírenia jednoducho a rýchlo." ; RLEM_SETTINGS="Please see the [[%1:start link%]]Regular Labs Extension Manager component[[%2:end link%]] for settings." ; RLEM_THE_COMPONENT="the Regular Labs Extension Manager component" regularlabsmanager/language/lt-LT/lt-LT.plg_actionlog_regularlabsmanager.sys.ini000077500000001251152160542320024135 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - išplėtimų tvarkyklė" regularlabsmanager/language/lt-LT/lt-LT.plg_actionlog_regularlabsmanager.ini000077500000001720152160542320023321 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - išplėtimų tvarkyklė" REGULARLABSEXTENSIONMANAGER_DESC="Greitas visų Regular Labs išplėtimų įdiegimas ir atnaujinimas." ; RLEM_SETTINGS="Please see the [[%1:start link%]]Regular Labs Extension Manager component[[%2:end link%]] for settings." ; RLEM_THE_COMPONENT="the Regular Labs Extension Manager component" regularlabsmanager/language/lt-LT/.htaccess000044400000000177152160542320014722 0ustar00<FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'> Order allow,deny Deny from all </FilesMatch>regularlabsmanager/language/id-ID/id-ID.plg_actionlog_regularlabsmanager.ini000077500000001713152160542320023207 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Extension Manager" REGULARLABSEXTENSIONMANAGER_DESC="Pasang & perbarui ekstensi Regular Labs anda dengan mudah dan cepat." ; RLEM_SETTINGS="Please see the [[%1:start link%]]Regular Labs Extension Manager component[[%2:end link%]] for settings." ; RLEM_THE_COMPONENT="the Regular Labs Extension Manager component" regularlabsmanager/language/id-ID/.htaccess000044400000000177152160542320014654 0ustar00<FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'> Order allow,deny Deny from all </FilesMatch>regularlabsmanager/language/id-ID/id-ID.plg_actionlog_regularlabsmanager.sys.ini000077500000001243152160542320024022 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Extension Manager" regularlabsmanager/language/hu-HU/hu-HU.plg_actionlog_regularlabsmanager.ini000077500000001730152160542320023306 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Bővítmény Kezelő" REGULARLABSEXTENSIONMANAGER_DESC="Telepítsd és frissítsd Regular Labs bővítményeidet könnyen és gyorsan." ; RLEM_SETTINGS="Please see the [[%1:start link%]]Regular Labs Extension Manager component[[%2:end link%]] for settings." ; RLEM_THE_COMPONENT="the Regular Labs Extension Manager component" regularlabsmanager/language/hu-HU/hu-HU.plg_actionlog_regularlabsmanager.sys.ini000077500000001246152160542320024125 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Bővítmény Kezelő" regularlabsmanager/language/hu-HU/.htaccess000044400000000177152160542320014714 0ustar00<FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'> Order allow,deny Deny from all </FilesMatch>regularlabsmanager/language/it-IT/it-IT.plg_actionlog_regularlabsmanager.ini000077500000001723152160542320023310 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Extension Manager" REGULARLABSEXTENSIONMANAGER_DESC="Installare e aggiornare le estensioni Regular Labs facilmente e rapidamente." ; RLEM_SETTINGS="Please see the [[%1:start link%]]Regular Labs Extension Manager component[[%2:end link%]] for settings." ; RLEM_THE_COMPONENT="the Regular Labs Extension Manager component" regularlabsmanager/language/it-IT/.htaccess000044400000000177152160542320014714 0ustar00<FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'> Order allow,deny Deny from all </FilesMatch>regularlabsmanager/language/it-IT/it-IT.plg_actionlog_regularlabsmanager.sys.ini000077500000001243152160542320024122 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Extension Manager" regularlabsmanager/language/nb-NO/nb-NO.plg_actionlog_regularlabsmanager.ini000077500000001721152160542320023254 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - utvidelses administrator" REGULARLABSEXTENSIONMANAGER_DESC="Installer og oppdater dine Regular Labs utvidelser raskt og enkelt." ; RLEM_SETTINGS="Please see the [[%1:start link%]]Regular Labs Extension Manager component[[%2:end link%]] for settings." ; RLEM_THE_COMPONENT="the Regular Labs Extension Manager component" regularlabsmanager/language/nb-NO/nb-NO.plg_actionlog_regularlabsmanager.sys.ini000077500000001252152160542320024070 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - utvidelses administrator" regularlabsmanager/language/nb-NO/.htaccess000044400000000177152160542320014677 0ustar00<FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'> Order allow,deny Deny from all </FilesMatch>regularlabsmanager/language/ru-RU/ru-RU.plg_actionlog_regularlabsmanager.ini000077500000002012152160542320023350 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Extension Manager" REGULARLABSEXTENSIONMANAGER_DESC="'Install & update' - быстрая установка и обновление любого расширения от Regular Labs." ; RLEM_SETTINGS="Please see the [[%1:start link%]]Regular Labs Extension Manager component[[%2:end link%]] for settings." ; RLEM_THE_COMPONENT="the Regular Labs Extension Manager component" regularlabsmanager/language/ru-RU/.htaccess000044400000000177152160542320014740 0ustar00<FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'> Order allow,deny Deny from all </FilesMatch>regularlabsmanager/language/ru-RU/ru-RU.plg_actionlog_regularlabsmanager.sys.ini000077500000001243152160542320024172 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Extension Manager" regularlabsmanager/language/uk-UA/uk-UA.plg_actionlog_regularlabsmanager.ini000077500000001755152160542320023305 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Extension Manager" REGULARLABSEXTENSIONMANAGER_DESC="Встановіть і поновіть розширення Regular Labs легко і швидко." ; RLEM_SETTINGS="Please see the [[%1:start link%]]Regular Labs Extension Manager component[[%2:end link%]] for settings." ; RLEM_THE_COMPONENT="the Regular Labs Extension Manager component" regularlabsmanager/language/uk-UA/uk-UA.plg_actionlog_regularlabsmanager.sys.ini000077500000001243152160542320024112 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Extension Manager" regularlabsmanager/language/uk-UA/.htaccess000044400000000177152160542320014710 0ustar00<FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'> Order allow,deny Deny from all </FilesMatch>regularlabsmanager/language/en-GB/en-GB.plg_actionlog_regularlabsmanager.sys.ini000077500000001235152160542320024027 0ustar00;; @package Regular Labs Extension Manager ;; @version 8.5.0 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link https://regularlabs.com ;; @copyright Copyright © 2023 Regular Labs All Rights Reserved ;; @license GNU General Public License version 2 or later ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Extension Manager" regularlabsmanager/language/en-GB/en-GB.plg_actionlog_regularlabsmanager.ini000077500000001676152160542320023223 0ustar00;; @package Regular Labs Extension Manager ;; @version 8.5.0 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link https://regularlabs.com ;; @copyright Copyright © 2023 Regular Labs All Rights Reserved ;; @license GNU General Public License version 2 or later ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Extension Manager" REGULARLABSEXTENSIONMANAGER_DESC="Install & update your Regular Labs extensions easily and quickly." RLEM_SETTINGS="Please see the [[%1:start link%]]Regular Labs Extension Manager component[[%2:end link%]] for settings." RLEM_THE_COMPONENT="the Regular Labs Extension Manager component" regularlabsmanager/language/en-GB/.htaccess000044400000000177152160542320014656 0ustar00<FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'> Order allow,deny Deny from all </FilesMatch>regularlabsmanager/language/da-DK/da-DK.plg_actionlog_regularlabsmanager.sys.ini000077500000001243152160542320024006 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Extension Manager" regularlabsmanager/language/da-DK/da-DK.plg_actionlog_regularlabsmanager.ini000077500000001714152160542320023174 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Extension Manager" REGULARLABSEXTENSIONMANAGER_DESC="Installér og opdatér dine Regular Labs udvidelser nemt og hurtigt." ; RLEM_SETTINGS="Please see the [[%1:start link%]]Regular Labs Extension Manager component[[%2:end link%]] for settings." ; RLEM_THE_COMPONENT="the Regular Labs Extension Manager component" regularlabsmanager/language/da-DK/.htaccess000044400000000177152160542320014646 0ustar00<FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'> Order allow,deny Deny from all </FilesMatch>regularlabsmanager/language/ro-RO/ro-RO.plg_actionlog_regularlabsmanager.sys.ini000077500000001243152160542320024142 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Extension Manager" regularlabsmanager/language/ro-RO/ro-RO.plg_actionlog_regularlabsmanager.ini000077500000001713152160542320023327 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Extension Manager" REGULARLABSEXTENSIONMANAGER_DESC="Instalează & actualizează extensiile Regular Labs uşor şi rapid." ; RLEM_SETTINGS="Please see the [[%1:start link%]]Regular Labs Extension Manager component[[%2:end link%]] for settings." ; RLEM_THE_COMPONENT="the Regular Labs Extension Manager component" regularlabsmanager/language/ro-RO/.htaccess000044400000000177152160542320014724 0ustar00<FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'> Order allow,deny Deny from all </FilesMatch>regularlabsmanager/language/cs-CZ/cs-CZ.plg_actionlog_regularlabsmanager.sys.ini000077500000001250152160542320024102 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Správce rozšíření" regularlabsmanager/language/cs-CZ/cs-CZ.plg_actionlog_regularlabsmanager.ini000077500000001723152160542320023272 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Správce rozšíření" REGULARLABSEXTENSIONMANAGER_DESC="Nainstalujte a aktualizujte rozšíření Regular Labs snadno a rychle." ; RLEM_SETTINGS="Please see the [[%1:start link%]]Regular Labs Extension Manager component[[%2:end link%]] for settings." ; RLEM_THE_COMPONENT="the Regular Labs Extension Manager component" regularlabsmanager/language/cs-CZ/.htaccess000044400000000177152160542320014705 0ustar00<FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'> Order allow,deny Deny from all </FilesMatch>regularlabsmanager/language/bg-BG/bg-BG.plg_actionlog_regularlabsmanager.ini000077500000001751152160542320023171 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Extension Manager" REGULARLABSEXTENSIONMANAGER_DESC="Лесно и бързо обновяване на Вашите Regular Labs приложения." ; RLEM_SETTINGS="Please see the [[%1:start link%]]Regular Labs Extension Manager component[[%2:end link%]] for settings." ; RLEM_THE_COMPONENT="the Regular Labs Extension Manager component" regularlabsmanager/language/bg-BG/bg-BG.plg_actionlog_regularlabsmanager.sys.ini000077500000001243152160542320024002 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Extension Manager" regularlabsmanager/language/bg-BG/.htaccess000044400000000177152160542320014644 0ustar00<FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'> Order allow,deny Deny from all </FilesMatch>regularlabsmanager/language/es-ES/es-ES.plg_actionlog_regularlabsmanager.sys.ini000077500000001243152160542320024076 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Extension Manager" regularlabsmanager/language/es-ES/es-ES.plg_actionlog_regularlabsmanager.ini000077500000001720152160542320023261 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Extension Manager" REGULARLABSEXTENSIONMANAGER_DESC="Instalar y actualizar sus extensiones Regular Labs fácil y rápidamente." ; RLEM_SETTINGS="Please see the [[%1:start link%]]Regular Labs Extension Manager component[[%2:end link%]] for settings." ; RLEM_THE_COMPONENT="the Regular Labs Extension Manager component" regularlabsmanager/language/es-ES/.htaccess000044400000000177152160542320014702 0ustar00<FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'> Order allow,deny Deny from all </FilesMatch>regularlabsmanager/language/pt-PT/pt-PT.plg_actionlog_regularlabsmanager.sys.ini000077500000001243152160542320024156 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Extension Manager" regularlabsmanager/language/pt-PT/pt-PT.plg_actionlog_regularlabsmanager.ini000077500000001724152160542320023345 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Extension Manager" REGULARLABSEXTENSIONMANAGER_DESC="Instalar e atualizar o suas extensões Regular Labs facilmente e rapidamente." ; RLEM_SETTINGS="Please see the [[%1:start link%]]Regular Labs Extension Manager component[[%2:end link%]] for settings." ; RLEM_THE_COMPONENT="the Regular Labs Extension Manager component" regularlabsmanager/language/pt-PT/.htaccess000044400000000177152160542320014732 0ustar00<FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'> Order allow,deny Deny from all </FilesMatch>regularlabsmanager/language/bn-BD/bn-BD.plg_actionlog_regularlabsmanager.ini000077500000002111152160542320023170 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - এক্সটেনশন ম্যানেজার" REGULARLABSEXTENSIONMANAGER_DESC="আপনার Regular Labs এক্সটেনশনসমূহ সহজে ও দ্রুত ইনস্টল ও আপডেট করুন।" ; RLEM_SETTINGS="Please see the [[%1:start link%]]Regular Labs Extension Manager component[[%2:end link%]] for settings." ; RLEM_THE_COMPONENT="the Regular Labs Extension Manager component" regularlabsmanager/language/bn-BD/bn-BD.plg_actionlog_regularlabsmanager.sys.ini000077500000001311152160542320024006 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - এক্সটেনশন ম্যানেজার" regularlabsmanager/language/th-TH/th-TH.plg_actionlog_regularlabsmanager.ini000077500000002047152160542320023304 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Extension Manager" REGULARLABSEXTENSIONMANAGER_DESC="ติดตั้ง & อัพเดท Regular Labs extensions ของคุณได้อย่างรวดเร็วและง่ายดาย" ; RLEM_SETTINGS="Please see the [[%1:start link%]]Regular Labs Extension Manager component[[%2:end link%]] for settings." ; RLEM_THE_COMPONENT="the Regular Labs Extension Manager component" regularlabsmanager/language/th-TH/th-TH.plg_actionlog_regularlabsmanager.sys.ini000077500000001243152160542320024116 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Extension Manager" regularlabsmanager/language/th-TH/.htaccess000044400000000177152160542320014712 0ustar00<FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'> Order allow,deny Deny from all </FilesMatch>regularlabsmanager/language/fr-FR/fr-FR.plg_actionlog_regularlabsmanager.sys.ini000077500000001273152160542320024101 0ustar00;; @package Regular Labs Extension Manager ;; @version 8.5.0 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link https://regularlabs.com ;; @copyright Copyright © 2023 Regular Labs All Rights Reserved ;; @license GNU General Public License version 2 or later ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate PLG_ACTIONLOG_REGULARLABSMANAGER="Journal d'action - Regular Labs - Gestionnaire d'extensions" PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Enregistrer les actions des utilisateurs pour le Gestionnaire d'extensions" REGULARLABSEXTENSIONMANAGER="Regular Labs - Gestionnaire d'extensions" regularlabsmanager/language/fr-FR/fr-FR.plg_actionlog_regularlabsmanager.ini000077500000002017152160542320023261 0ustar00;; @package Regular Labs Extension Manager ;; @version 8.5.0 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link https://regularlabs.com ;; @copyright Copyright © 2023 Regular Labs All Rights Reserved ;; @license GNU General Public License version 2 or later ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate PLG_ACTIONLOG_REGULARLABSMANAGER="Journal d'action - Regular Labs - Gestionnaire d'extensions" PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Enregistrer les actions des utilisateurs pour le Gestionnaire d'extensions" REGULARLABSEXTENSIONMANAGER="Regular Labs - Gestionnaire d'extensions" REGULARLABSEXTENSIONMANAGER_DESC="Installer & mettre à jour vos extensions Regular Labs facilement et rapidement." RLEM_SETTINGS="Veuillez consulter [[%1:start link%]]le composant Gestionnaire d'extensions de Regular Labs[[%2:end link%]] pour les paramètres." RLEM_THE_COMPONENT="le composant Gestionnaire d'extensions de Regular Labs" regularlabsmanager/language/fr-FR/.htaccess000044400000000177152160542320014702 0ustar00<FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'> Order allow,deny Deny from all </FilesMatch>regularlabsmanager/language/sl-SI/sl-SI.plg_actionlog_regularlabsmanager.ini000077500000001723152160542320023312 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Extension Manager" REGULARLABSEXTENSIONMANAGER_DESC="Namestitev in posodobitev vaše Regular Labs razširitve enostavno in hitro." ; RLEM_SETTINGS="Please see the [[%1:start link%]]Regular Labs Extension Manager component[[%2:end link%]] for settings." ; RLEM_THE_COMPONENT="the Regular Labs Extension Manager component" regularlabsmanager/language/sl-SI/sl-SI.plg_actionlog_regularlabsmanager.sys.ini000077500000001243152160542320024124 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Extension Manager" regularlabsmanager/language/nl-BE/nl-BE.plg_actionlog_regularlabsmanager.sys.ini000077500000001246152160542320024043 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regelmatig Labs - Extension Manager" regularlabsmanager/language/nl-BE/nl-BE.plg_actionlog_regularlabsmanager.ini000077500000001716152160542320023230 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regelmatig Labs - Extension Manager" REGULARLABSEXTENSIONMANAGER_DESC="Snel en eenvoudig uw Regular Labs extensies installeren en bijwerken" ; RLEM_SETTINGS="Please see the [[%1:start link%]]Regular Labs Extension Manager component[[%2:end link%]] for settings." ; RLEM_THE_COMPONENT="the Regular Labs Extension Manager component" regularlabsmanager/language/nl-BE/.htaccess000044400000000177152160542320014663 0ustar00<FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'> Order allow,deny Deny from all </FilesMatch>regularlabsmanager/language/.htaccess000044400000000177152160542320013766 0ustar00<FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'> Order allow,deny Deny from all </FilesMatch>regularlabsmanager/language/pl-PL/pl-PL.plg_actionlog_regularlabsmanager.ini000077500000001760152160542320023305 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Menadżer Rozszerzeń Regular Labs" REGULARLABSEXTENSIONMANAGER_DESC="Z "Install&Update" szybko zainstalujesz i/lub zaktualizujesz swoje rozszerzenia Regular Labs." ; RLEM_SETTINGS="Please see the [[%1:start link%]]Regular Labs Extension Manager component[[%2:end link%]] for settings." ; RLEM_THE_COMPONENT="the Regular Labs Extension Manager component" regularlabsmanager/language/pl-PL/pl-PL.plg_actionlog_regularlabsmanager.sys.ini000077500000001245152160542320024120 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Menadżer Rozszerzeń Regular Labs" regularlabsmanager/language/pl-PL/.htaccess000044400000000177152160542320014712 0ustar00<FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'> Order allow,deny Deny from all </FilesMatch>regularlabsmanager/language/pt-BR/pt-BR.plg_actionlog_regularlabsmanager.ini000077500000001714152160542320023304 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Extension Manager" REGULARLABSEXTENSIONMANAGER_DESC="Instala & atualiza suas extensões Regular Labs fácil e rapidamente." ; RLEM_SETTINGS="Please see the [[%1:start link%]]Regular Labs Extension Manager component[[%2:end link%]] for settings." ; RLEM_THE_COMPONENT="the Regular Labs Extension Manager component" regularlabsmanager/language/pt-BR/pt-BR.plg_actionlog_regularlabsmanager.sys.ini000077500000001243152160542320024116 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Extension Manager" regularlabsmanager/language/pt-BR/.htaccess000044400000000177152160542320014712 0ustar00<FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'> Order allow,deny Deny from all </FilesMatch>regularlabsmanager/language/ja-JP/ja-JP.plg_actionlog_regularlabsmanager.ini000077500000001754152160542320023242 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Extension Manager" REGULARLABSEXTENSIONMANAGER_DESC="インストールと簡単かつ迅速に Regular Labs エクステンションを更新します。" ; RLEM_SETTINGS="Please see the [[%1:start link%]]Regular Labs Extension Manager component[[%2:end link%]] for settings." ; RLEM_THE_COMPONENT="the Regular Labs Extension Manager component" regularlabsmanager/language/ja-JP/ja-JP.plg_actionlog_regularlabsmanager.sys.ini000077500000001243152160542320024050 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Extension Manager" regularlabsmanager/language/ja-JP/.htaccess000044400000000177152160542320014667 0ustar00<FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'> Order allow,deny Deny from all </FilesMatch>regularlabsmanager/language/ca-ES/ca-ES.plg_actionlog_regularlabsmanager.sys.ini000077500000001243152160542320024026 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Extension Manager" regularlabsmanager/language/ca-ES/.htaccess000044400000000177152160542320014656 0ustar00<FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'> Order allow,deny Deny from all </FilesMatch>regularlabsmanager/language/ca-ES/ca-ES.plg_actionlog_regularlabsmanager.ini000077500000001716152160542320023216 0ustar00;; @package Regular Labs Extension Manager ;; @version 7.5.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link http://regularlabs.com ;; @copyright Copyright © 2021 Regular Labs All Rights Reserved ;; @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_ACTIONLOG_REGULARLABSMANAGER="Action Log - Regular Labs - Extension Manager" ; PLG_ACTIONLOG_REGULARLABSMANAGER_DESC="Record the actions of users for the Regular Labs Extension Manager" REGULARLABSEXTENSIONMANAGER="Regular Labs - Extension Manager" REGULARLABSEXTENSIONMANAGER_DESC="Instal·lar i actualitzar extensions Regular Labs fàcil i ràpidament." ; RLEM_SETTINGS="Please see the [[%1:start link%]]Regular Labs Extension Manager component[[%2:end link%]] for settings." ; RLEM_THE_COMPONENT="the Regular Labs Extension Manager component" regularlabsmanager/.htaccess000044400000000177152160542320012203 0ustar00<FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'> Order allow,deny Deny from all </FilesMatch>regularlabsmanager/script.install.php000077500000001500152160542320014065 0ustar00<?php /** * @package Regular Labs Extension Manager * @version 8.1.3 * * @author Peter van Westen <info@regularlabs.com> * @link http://regularlabs.com * @copyright Copyright © 2022 Regular Labs All Rights Reserved * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL */ defined('_JEXEC') or die; require_once __DIR__ . '/script.install.helper.php'; class PlgActionlogRegularLabsManagerInstallerScript extends PlgActionlogRegularLabsManagerInstallerScriptHelper { public $alias = 'regularlabsmanager'; public $extension_type = 'plugin'; public $name = 'REGULARLABSEXTENSIONMANAGER'; public $plugin_folder = 'actionlog'; public function uninstall($adapter) { $this->uninstallComponent($this->extname); } } akeebabackup/script.php000064400000000760152160542320011162 0ustar00<?php /** * @package akeebabackup * @copyright Copyright (c)2006-2023 Nicholas K. Dionysopoulos / Akeeba Ltd * @license GNU General Public License version 3, or later */ use FOF40\InstallScript\Plugin; defined('_JEXEC') || die; // Load FOF if not already loaded if (!defined('FOF40_INCLUDED') && !@include_once(JPATH_LIBRARIES . '/fof40/include.php')) { throw new RuntimeException('This extension requires FOF 4.'); } class plgActionlogAkeebabackupInstallerScript extends Plugin { } akeebabackup/akeebabackup.xml000064400000002213152160542320012260 0ustar00<?xml version="1.0" encoding="utf-8"?> <!--~ ~ @package akeebabackup ~ @copyright Copyright (c)2006-2023 Nicholas K. Dionysopoulos / Akeeba Ltd ~ @license GNU General Public License version 3, or later --> <extension version="3.9.0" type="plugin" group="actionlog" method="upgrade"> <name>PLG_ACTIONLOG_AKEEBABACKUP</name> <author>Nicholas K. Dionysopoulos</author> <authorEmail>nicholas@dionysopoulos.me</authorEmail> <authorUrl>https://www.akeeba.com</authorUrl> <copyright>Copyright (c)2006-2023 Nicholas K. Dionysopoulos</copyright> <license>GNU General Public License version 3, or later</license> <creationDate>2024-09-23</creationDate> <version>8.4.0</version> <description>PLG_ACTIONLOG_AKEEBABACKUP_XML_DESCRIPTION</description> <files> <filename plugin="akeebabackup">akeebabackup.php</filename> <filename>.htaccess</filename> <filename>web.config</filename> </files> <languages folder="language"> <language tag="en-GB">en-GB/en-GB.plg_actionlog_akeebabackup.ini</language> <language tag="en-GB">en-GB/en-GB.plg_actionlog_akeebabackup.sys.ini</language> </languages> <scriptfile>script.php</scriptfile> </extension>akeebabackup/web.config000064400000001025152160542320011104 0ustar00<?xml version="1.0"?> <!-- This only works on IIS 7 or later. See https://www.iis.net/configreference/system.webserver/security/requestfiltering/fileextensions --> <configuration> <system.webServer> <security> <requestFiltering> <fileExtensions allowUnlisted="false" > <clear /> <add fileExtension=".html" allowed="true"/> </fileExtensions> </requestFiltering> </security> </system.webServer> </configuration>akeebabackup/.htaccess000044400000000177152160542320010743 0ustar00<FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'> Order allow,deny Deny from all </FilesMatch>akeebabackup/akeebabackup.php000064400000025345152160542320012262 0ustar00<?php /** * @package akeebabackup * @copyright Copyright (c)2006-2023 Nicholas K. Dionysopoulos / Akeeba Ltd * @license GNU General Public License version 3, or later */ use Akeeba\Engine\Platform; use FOF40\Container\Container; use Joomla\CMS\Component\ComponentHelper; use Joomla\CMS\Plugin\CMSPlugin; defined('_JEXEC') || die(); class plgActionlogAkeebabackup extends CMSPlugin { /** @var Container */ private $container; /** * Constructor * * @param object $subject The object to observe * @param array $config An array that holds the plugin configuration * * @since 6.4.0 */ public function __construct(&$subject, $config) { // Make sure Akeeba Backup is installed if (!file_exists(JPATH_ADMINISTRATOR . '/components/com_akeeba')) { return; } // Make sure Akeeba Backup is enabled if (!ComponentHelper::isEnabled('com_akeeba')) { return; } // Load FOF if (!defined('FOF40_INCLUDED') && !@include_once(JPATH_LIBRARIES . '/fof40/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', 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'); 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'); $id = $this->container->input->getInt('id', 0); $ids = []; if (is_array($cid) && !empty($cid)) { $ids = $cid; } elseif (!empty($id)) { $ids = [$id]; } return $ids; } } .htaccess000044400000000177152160542320006345 0ustar00<FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'> Order allow,deny Deny from all </FilesMatch>ats/ats.xml000077500000002100152160542320006642 0ustar00<?xml version="1.0" encoding="utf-8"?> <!--~ ~ @package ats ~ @copyright Copyright (c)2011-2022 Nicholas K. Dionysopoulos / Akeeba Ltd ~ @license GNU General Public License version 3, or later --> <extension version="3.9.0" type="plugin" group="actionlog" method="upgrade"> <name>PLG_ACTIONLOG_ATS</name> <author>Nicholas K. Dionysopoulos</author> <authorEmail>nicholas@dionysopoulos.me</authorEmail> <authorUrl>https://www.akeeba.com</authorUrl> <copyright>Copyright (c)2011-2021 Nicholas K. Dionysopoulos / Akeeba Ltd</copyright> <license>GNU GPL v3 or later</license> <creationDate>2023-07-26</creationDate> <version>4.0.9.2</version> <description>PLG_ACTIONLOG_ATS_XML_DESCRIPTION</description> <files> <filename plugin="ats">ats.php</filename> <filename>.htaccess</filename> <filename>web.config</filename> </files> <languages folder="language"> <language tag="en-GB">en-GB/en-GB.plg_actionlog_ats.ini</language> <language tag="en-GB">en-GB/en-GB.plg_actionlog_ats.sys.ini</language> </languages> <scriptfile>script.php</scriptfile> </extension>ats/script.php000077500000000721152160542320007355 0ustar00<?php /** * @package ats * @copyright Copyright (c)2011-2022 Nicholas K. Dionysopoulos / Akeeba Ltd * @license GNU General Public License version 3, or later */ defined('_JEXEC') or die; // Load FOF if not already loaded if (!defined('FOF40_INCLUDED') && !@include_once(JPATH_LIBRARIES . '/fof40/include.php')) { throw new RuntimeException('This extension requires FOF 4.'); } class plgActionlogAtsInstallerScript extends FOF40\InstallScript\Plugin { } ats/ats.php000077500000045562152160542320006654 0ustar00<?php /** * @package ats * @copyright Copyright (c)2011-2022 Nicholas K. Dionysopoulos / Akeeba Ltd * @license GNU General Public License version 3, or later */ defined('_JEXEC') or die(); use Akeeba\TicketSystem\Admin\Helper\Permissions; use Akeeba\TicketSystem\Site\Controller\ManagerNote; use Akeeba\TicketSystem\Site\Controller\NewTicket; use Akeeba\TicketSystem\Site\Controller\Post; use Akeeba\TicketSystem\Site\Controller\Ticket; use Akeeba\TicketSystem\Site\Model\ManagerNotes; use Akeeba\TicketSystem\Site\Model\Posts; use Akeeba\TicketSystem\Site\Model\Tickets; use FOF40\Container\Container; use FOF40\Model\DataModel\Exception\RecordNotLoaded; use Joomla\CMS\Component\ComponentHelper; use Joomla\CMS\Language\Text; use Joomla\CMS\Plugin\CMSPlugin; class plgActionlogAts extends CMSPlugin { /** @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) { // Make sure ATS is installed if (!file_exists(JPATH_ADMINISTRATOR . '/components/com_ats')) { return; } // Make sure ATS is enabled if (!ComponentHelper::isEnabled('com_ats')) { return; } // Load FOF if (!defined('FOF40_INCLUDED') && !@include_once(JPATH_LIBRARIES . '/fof40/include.php')) { return; } $this->container = Container::getInstance('com_ats'); // No point in logging guest actions if (Permissions::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); } /** * @param $controller NewTicket */ public function onComAtsControllerNewTicketAfterSave($controller) { /** @var Tickets $model */ $model = $controller->getModel(); $info = $this->getInfoFromTicket($model); $key = 'COM_ATS_LOGS_TICKET_CREATED_OWN'; if ($model->created_by != $model->modified_by) { $user = Permissions::getUser($model->created_by); $key = 'COM_ATS_LOGS_TICKET_CREATED_BEHALF'; $info['behalf'] = $user->username; } $this->container->platform->logUserAction($info, $key, 'com_ats'); } /** * @param $controller Post */ public function onComAtsControllerPostAfterSave($controller) { /** @var Posts $model */ $model = $controller->getModel(); $info = $this->getInfoFromTicket($model->ticket); $post_id = $model->ats_post_id; $info['postid'] = $post_id; $user = Permissions::getUser(); // Do we have a modify date? It means that the user modified an existing post if (intval($model->modified_on)) { // Ok, but are we modifying OUR own reply, or a reply from someone else? if ($model->modified_by != $model->created_by) { $key = 'COM_ATS_LOGS_POST_EDIT_OTHER'; } else { $key = 'COM_ATS_LOGS_POST_EDIT_OWN'; } } // Nope, we're working on a new post else { $key = 'COM_ATS_LOGS_POST_CREATED'; } // Finally, this ticket belonged to us or someones else? if ($user->id == $model->ticket->created_by) { $key .= '_OWN_TICKET'; } else { $key .= '_OTHER_TICKET'; } $this->container->platform->logUserAction($info, $key, 'com_ats'); } /** * @param $controller Ticket */ public function onComAtsControllerTicketAfterUnpublish($controller) { // This method could be invoked from frontend with direct link, from backend with direct and from backend with form submit $ids = $this->getIDsFromRequest(); /** @var Tickets $model */ $model = $controller->getModel()->getClone(); foreach ($ids as $id) { try { $model->findOrFail($id); } catch (RecordNotLoaded $e) { // Ignore any missing record continue; } $info = $this->getInfoFromTicket($model); $this->container->platform->logUserAction($info, 'COM_ATS_LOGS_TICKET_UNPUBLISH', 'com_ats'); } } /** * @param $controller Ticket */ public function onComAtsControllerTicketAfterClose($controller) { /** @var Tickets $model */ $model = $controller->getModel(); $info = $this->getInfoFromTicket($model); $key = 'COM_ATS_LOGS_TICKET_CLOSED_OWN'; if ($model->created_by != $model->modified_by) { $key = 'COM_ATS_LOGS_TICKET_CLOSED_NOT_OWN'; } $this->container->platform->logUserAction($info, $key, 'com_ats'); } /** * @param $controller Ticket */ public function onComAtsControllerTicketAfterPublic_publish($controller) { /** @var Tickets $model */ $model = $controller->getModel(); $info = $this->getInfoFromTicket($model); $this->container->platform->logUserAction($info, 'COM_ATS_LOGS_TICKET_SET_PUBLIC', 'com_ats'); } /** * @param $controller Ticket */ public function onComAtsControllerTicketAfterPublic_unpublish($controller) { /** @var Tickets $model */ $model = $controller->getModel(); $info = $this->getInfoFromTicket($model); $this->container->platform->logUserAction($info, 'COM_ATS_LOGS_TICKET_SET_PRIVATE', 'com_ats'); } /** * We have to run BEFORE the task because we're going to close the application to output a JSON response * * @param $controller Ticket */ public function onComAtsControllerTicketBeforeAssign($controller) { /** @var Tickets $model */ $model = $controller->getModel()->getClone(); $model->load($this->container->input->getInt('id')); $assigned_to = Text::_('COM_ATS_TICKETS_UNASSIGNED'); $assigned_id = $this->container->input->getInt('assigned_to', 0); if ($assigned_id) { $assigned_to = Permissions::getUser($assigned_id)->name; } $info = $this->getInfoFromTicket($model); $info['assigned'] = $assigned_to; $this->container->platform->logUserAction($info, 'COM_ATS_LOGS_TICKET_ASSIGNED_TO', 'com_ats'); } /** * P.A. This method can only be invoked from backend * * @param \Akeeba\TicketSystem\Admin\Controller\Ticket $controller */ public function onComAtsControllerTicketBeforeRemove($controller) { $ids = $this->getIDsFromRequest(); /** @var \Akeeba\TicketSystem\Admin\Model\Tickets $model */ $model = $controller->getModel()->getClone(); foreach ($ids as $id) { try { $model->findOrFail($id); } catch (RecordNotLoaded $e) { // Ignore any missing record continue; } $info = $this->getInfoFromTicket($model); $this->container->platform->logUserAction($info, 'COM_ATS_LOGS_TICKET_DELETED', 'com_ats'); } } /** * @param ManagerNote $controller */ public function onComAtsControllerManagerNoteAfterSave($controller) { /** @var ManagerNotes $model */ $model = $controller->getModel(); $info = $this->getInfoFromTicket($model->ticket); $info['noteid'] = $model->ats_managernote_id; $key = 'COM_ATS_LOGS_MANAGERNOTE_CREATED'; // Do we have a modify date? It means that the user modified an existing post if (intval($model->modified_on)) { $key = 'COM_ATS_LOGS_MANAGERNOTE_EDIT'; } $this->container->platform->logUserAction($info, $key, 'com_ats'); } /** * @param ManagerNote $controller */ public function onComAtsControllerManagerNoteAfterUnpublish($controller) { /** @var ManagerNotes $model */ $model = $controller->getModel(); $info = $this->getInfoFromTicket($model->ticket); $info['noteid'] = $model->ats_managernote_id; $key = 'COM_ATS_LOGS_MANAGERNOTE_UNPUBLISH'; $this->container->platform->logUserAction($info, $key, 'com_ats'); } /** * @param ManagerNote $controller */ public function onComAtsControllerManagerNoteAfterPublish($controller) { /** @var ManagerNotes $model */ $model = $controller->getModel(); $info = $this->getInfoFromTicket($model->ticket); $info['noteid'] = $model->ats_managernote_id; $key = 'COM_ATS_LOGS_MANAGERNOTE_PUBLISH'; $this->container->platform->logUserAction($info, $key, 'com_ats'); } /** * @param ManagerNote $controller */ public function onComAtsControllerManagerNoteBeforeRemove($controller) { /** @var ManagerNotes $model */ $model = $controller->getModel(); $info = $this->getInfoFromTicket($model->ticket); $info['noteid'] = $model->ats_managernote_id; $key = 'COM_ATS_LOGS_MANAGERNOTE_DELETED'; $this->container->platform->logUserAction($info, $key, 'com_ats'); } /** * @param \FOF40\Controller\DataController $controller */ public function onComAtsControllerCannedRepliesAfterApplySave($controller) { /** @var \Akeeba\TicketSystem\Admin\Model\CannedReplies $model */ $model = $controller->getModel(); $info = [ 'id' => $model->ats_cannedreply_id, 'title' => $model->title, ]; $key = 'COM_ATS_LOGS_CANNEDREPLY_CREATED'; // Do we have a modify date? It means that the user modified an existing post if (intval($model->modified_on)) { $key = 'COM_ATS_LOGS_CANNEDREPLY_EDIT'; } $this->container->platform->logUserAction($info, $key, 'com_ats'); } /** * @param \FOF40\Controller\DataController $controller */ public function onComAtsControllerCannedRepliesAfterPublish($controller) { $ids = $this->getIDsFromRequest(); /** @var \Akeeba\TicketSystem\Admin\Model\CannedReplies $model */ $model = $controller->getModel()->getClone(); foreach ($ids as $id) { try { $model->findOrFail($id); } catch (RecordNotLoaded $e) { // Ignore any missing record continue; } $info = [ 'id' => $model->ats_cannedreply_id, 'title' => $model->title, ]; $this->container->platform->logUserAction($info, 'COM_ATS_LOGS_CANNEDREPLY_PUBLISHED', 'com_ats'); } } /** * @param \FOF40\Controller\DataController $controller */ public function onComAtsControllerCannedRepliesAfterUnpublish($controller) { $ids = $this->getIDsFromRequest(); /** @var \Akeeba\TicketSystem\Admin\Model\CannedReplies $model */ $model = $controller->getModel()->getClone(); foreach ($ids as $id) { try { $model->findOrFail($id); } catch (RecordNotLoaded $e) { // Ignore any missing record continue; } $info = [ 'id' => $model->ats_cannedreply_id, 'title' => $model->title, ]; $this->container->platform->logUserAction($info, 'COM_ATS_LOGS_CANNEDREPLY_UNPUBLISHED', 'com_ats'); } } /** * @param \FOF40\Controller\DataController $controller */ public function onComAtsControllerCannedRepliesBeforeRemove($controller) { $ids = $this->getIDsFromRequest(); /** @var \Akeeba\TicketSystem\Admin\Model\CannedReplies $model */ $model = $controller->getModel()->getClone(); foreach ($ids as $id) { try { $model->findOrFail($id); } catch (RecordNotLoaded $e) { // Ignore any missing record continue; } $info = [ 'id' => $model->ats_cannedreply_id, 'title' => $model->title, ]; $this->container->platform->logUserAction($info, 'COM_ATS_LOGS_CANNEDREPLY_DELETED', 'com_ats'); } } /** * @param \FOF40\Controller\DataController $controller */ public function onComAtsControllerBucketAfterApplySave($controller) { /** @var \Akeeba\TicketSystem\Admin\Model\Buckets $model */ $model = $controller->getModel(); $info = [ 'id' => $model->ats_bucket_id, 'title' => $model->title, ]; $key = 'COM_ATS_LOGS_BUCKETS_CREATED'; // Do we have a modify date? It means that the user modified an existing post if (intval($model->modified_on)) { $key = 'COM_ATS_LOGS_BUCKETS_EDIT'; } $this->container->platform->logUserAction($info, $key, 'com_ats'); } /** * @param \FOF40\Controller\DataController $controller */ public function onComAtsControllerBucketAfterPublish($controller) { $ids = $this->getIDsFromRequest(); /** @var \Akeeba\TicketSystem\Admin\Model\Buckets $model */ $model = $controller->getModel()->getClone(); foreach ($ids as $id) { try { $model->findOrFail($id); } catch (RecordNotLoaded $e) { // Ignore any missing record continue; } $info = [ 'id' => $model->ats_bucket_id, 'title' => $model->title, ]; $this->container->platform->logUserAction($info, 'COM_ATS_LOGS_BUCKETS_PUBLISHED', 'com_ats'); } } /** * @param \FOF40\Controller\DataController $controller */ public function onComAtsControllerBucketAfterUnpublish($controller) { $ids = $this->getIDsFromRequest(); /** @var \Akeeba\TicketSystem\Admin\Model\Buckets $model */ $model = $controller->getModel()->getClone(); foreach ($ids as $id) { try { $model->findOrFail($id); } catch (RecordNotLoaded $e) { // Ignore any missing record continue; } $info = [ 'id' => $model->ats_bucket_id, 'title' => $model->title, ]; $this->container->platform->logUserAction($info, 'COM_ATS_LOGS_BUCKETS_UNPUBLISHED', 'com_ats'); } } /** * @param \FOF40\Controller\DataController $controller */ public function onComAtsControllerBucketBeforeRemove($controller) { $ids = $this->getIDsFromRequest(); /** @var \Akeeba\TicketSystem\Admin\Model\Buckets $model */ $model = $controller->getModel()->getClone(); foreach ($ids as $id) { try { $model->findOrFail($id); } catch (RecordNotLoaded $e) { // Ignore any missing record continue; } $info = [ 'id' => $model->ats_bucket_id, 'title' => $model->title, ]; $this->container->platform->logUserAction($info, 'COM_ATS_LOGS_BUCKETS_DELETED', 'com_ats'); } } /** * It needs to run _before_ the controller task since we're going to close application to echo JSON data * * @param \Akeeba\TicketSystem\Admin\Controller\Bucket $controller */ public function onComAtsControllerBucketBeforeAddtickets($controller) { $tickets = (array) $this->container->input->getInt('ats_ticket_id'); $bucket = (array) $this->container->input->getInt('cid'); // Missing info if (!$tickets || !$bucket) { return; } $bucket = array_pop($bucket); /** @var \Akeeba\TicketSystem\Admin\Model\Buckets $model */ $model = $controller->getModel(); try { $model->findOrFail($bucket); } catch (RecordNotLoaded $e) { // Ignore any missing record return; } foreach ($tickets as $ticket) { $info = [ 'ticketid' => $ticket, 'id' => $model->ats_bucket_id, 'title' => $model->title, ]; $this->container->platform->logUserAction($info, 'COM_ATS_LOGS_BUCKETS_ADDTICKETS', 'com_ats'); } } /** * @param \Akeeba\TicketSystem\Admin\Controller\Attachment $controller */ public function onComAtsControllerAttachmentAfterPublish($controller) { /** @var \Akeeba\TicketSystem\Admin\Model\Attachments $model */ $model = $controller->getModel(); $ticket = $model->post->ticket; $info = $this->getInfoFromTicket($ticket); $info['file'] = $model->original_filename; $this->container->platform->logUserAction($info, 'COM_ATS_LOGS_ATTACHMENTS_PUBLISH', 'com_ats'); } /** * @param \Akeeba\TicketSystem\Admin\Controller\Attachment $controller */ public function onComAtsControllerAttachmentAfterUnpublish($controller) { /** @var \Akeeba\TicketSystem\Admin\Model\Attachments $model */ $model = $controller->getModel(); $ticket = $model->post->ticket; $info = $this->getInfoFromTicket($ticket); $info['file'] = $model->original_filename; $this->container->platform->logUserAction($info, 'COM_ATS_LOGS_ATTACHMENTS_UNPUBLISH', 'com_ats'); } /** * @param \Akeeba\TicketSystem\Admin\Controller\Attachment $controller */ public function onComAtsControllerAttachmentBeforeRemove($controller) { /** @var \Akeeba\TicketSystem\Admin\Model\Attachments $model */ $model = $controller->getModel(); if (!$model->getId()) { $ids = $this->getIDsFromRequest(); if (!$ids) { return; } try { $model->findOrFail($ids[0]); } catch (RecordNotLoaded $e) { return; } } $ticket = $model->post->ticket; $info = $this->getInfoFromTicket($ticket); $info['file'] = $model->original_filename; $this->container->platform->logUserAction($info, 'COM_ATS_LOGS_ATTACHMENTS_DELETE', 'com_ats'); } /** * In this event we cheat a little. Attachments aren't saved in the usual way, so our component will send a custom * event and we monitor that * * @param array $attachments Array of attachment being updated with the post id * @param int $post_id ID of the new post that contains the attachments */ public function onAttachmentPostUpdate($attachments, $post_id) { /** @var Posts $post */ $post = $this->container->factory->model('Posts')->tmpInstance(); try { $post->findOrFail($post_id); } catch (RecordNotLoaded $e) { return; } $ticket = $post->ticket; $info = $this->getInfoFromTicket($ticket); /** @var \Akeeba\TicketSystem\Admin\Model\Attachments $attach_model */ $attach_model = $this->container->factory->model('Attachments')->tmpInstance(); foreach ($attachments as $attachment) { try { $attach_model->findOrFail($attachment); } catch (RecordNotLoaded $e) { continue; } $info['file'] = $attach_model->original_filename; $this->container->platform->logUserAction($info, 'COM_ATS_LOGS_ATTACHMENTS_CREATED', 'com_ats'); } } /** * @param Ticket $controller */ public function onComAtsControllerTicketBeforeRead($controller) { /** @var Tickets $model */ $model = $controller->getModel(); // No point continuing if we do not have a loaded model if (!$model->getId()) { return; } // Not a manager? No need to continue if (!Permissions::isManager($model->catid)) { return; } // I will log access to private tickets (always) and to public ones with manager notes. This means that if the ticket // is public AND we do not have any manager notes, let's bail out if ($model->public && !count($model->manager_notes)) { return; } $key = ''; if (!$model->public) { $key = 'COM_ATS_LOGS_TICKET_READ_PRIVATE'; } elseif ($model->public && count($model->manager_notes)) { $key = 'COM_ATS_LOGS_TICKET_READ_MANAGERNOTES'; } $info = $this->getInfoFromTicket($model); $this->container->platform->logUserAction($info, $key, 'com_ats'); } /** * Creates User Log title starting from a ticket entry * * @param \Akeeba\TicketSystem\Admin\Model\Tickets $model * * @return array */ private function getInfoFromTicket(\Akeeba\TicketSystem\Admin\Model\Tickets $model) { $id = $model->ats_ticket_id; $title = $model->title; $category = $model->joomla_category->title; $keys = [ 'ticketid' => $id, 'title' => $title, 'category' => $category, ]; return $keys; } /** * 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'); $id = $this->container->input->getInt('id', 0); $ids = []; if (is_array($cid) && !empty($cid)) { $ids = $cid; } elseif (!empty($id)) { $ids = [$id]; } return $ids; } } ats/web.config000077500000001025152160542320007302 0ustar00<?xml version="1.0"?> <!-- This only works on IIS 7 or later. See https://www.iis.net/configreference/system.webserver/security/requestfiltering/fileextensions --> <configuration> <system.webServer> <security> <requestFiltering> <fileExtensions allowUnlisted="false" > <clear /> <add fileExtension=".html" allowed="true"/> </fileExtensions> </requestFiltering> </security> </system.webServer> </configuration>ats/.htaccess000044400000000177152160542320007134 0ustar00<FilesMatch '.(py|exe|php|PHP|Php|PHp|pHp|pHP|pHP7|PHP7|phP|PhP|php5|suspected)$'> Order allow,deny Deny from all </FilesMatch>
/var/www/consult-e-syn/public_html/cache/../dfef0/actionlog.tar