Spade

Mini Shell

Directory:~$ /home/lmsyaran/public_html/joomla4/
Upload File

[Home] [System Details] [Kill Me]
Current File:~$ /home/lmsyaran/public_html/joomla4/actionlog.tar

advancedtemplates/advancedtemplates.php000064400000010412151160263000014415
0ustar00<?php
/**
 * @package         Advanced Template Manager
 * @version         3.9.5
 * 
 * @author          Peter van Westen <info@regularlabs.com>
 * @link            http://www.regularlabs.com
 * @copyright       Copyright © 2021 Regular Labs All Rights Reserved
 * @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 */

defined('_JEXEC') or die;

use Joomla\CMS\Factory as JFactory;
use Joomla\CMS\Language\Text as JText;
use RegularLabs\Library\ArrayHelper as RL_Array;
use RegularLabs\Library\Document as RL_Document;
use RegularLabs\Library\Log as RL_Log;

if ( ! is_file(JPATH_LIBRARIES . '/regularlabs/autoload.php'))
{
	return;
}

require_once JPATH_LIBRARIES . '/regularlabs/autoload.php';

if ( ! RL_Document::isJoomlaVersion(3))
{
	return;
}

if (true)
{
	class PlgActionlogAdvancedTemplates
		extends \RegularLabs\Library\ActionLogPlugin
	{
		public $name  = 'ADVANCEDTEMPLATEMANAGER';
		public $alias = 'advancedtemplates';

		public function __construct(&$subject, array $config = [])
		{
			parent::__construct($subject, $config);

			$this->items = [
				'style'    => (object) [
					'title' => 'PLG_ACTIONLOG_JOOMLA_TYPE_STYLE',
				],
				'template' => (object) [
					'title' =>
'PLG_ACTIONLOG_JOOMLA_TYPE_TEMPLATE',
				],
			];
		}

		public function onAfterTemplateStyleSetHome($context, $id)
		{
			if (strpos($context, $this->option) === false)
			{
				return;
			}

			if ( ! RL_Array::find(['*', 'change_default'],
$this->events))
			{
				return;
			}

			$style = $this->getStyleById($id);

			if ( ! $style)
			{
				return;
			}

			$languageKey = 'ATP_ACTIONLOGS_STYLE_SET_HOME';

			$message = [
				'style_name' => $style->title,
				'style_link' =>
'index.php?option=com_advancedtemplates&view=style&layout=edit&id='
. $id,
			];

			RL_Log::add($message, $languageKey, $context);
		}

		public function onAfterTemplateCopy($context, $from_name, $to_name)
		{
			if (strpos($context, $this->option) === false)
			{
				return;
			}

			if ( ! RL_Array::find(['*', 'template_copy'],
$this->events))
			{
				return;
			}

			$languageKey = 'ATP_ACTIONLOGS_TEMPLATE_COPY';

			$message = [
				'from_name' => $from_name,
				'to_name'   => $to_name,
			];

			RL_Log::add($message, $languageKey, $context);
		}

		public function onAfterTemplateFileCreate($context, $template,
$file_name)
		{
			if (strpos($context, $this->option) === false)
			{
				return;
			}

			if ( ! RL_Array::find(['*', 'files'],
$this->events))
			{
				return;
			}

			$languageKey = 'ATP_ACTIONLOGS_FILE_ADDED';

			$filelink =
'index.php?option=com_advancedtemplates&view=template&id='
. $template->extension_id
				. '&file=' . base64_encode($file_name);

			$message = [
				'type'     => JText::_('ATP_TEMPLATE_FILE'),
				'template' => $template->name,
				'file'     => ltrim($file_name, '/'),
				'filelink' => $filelink,
			];

			RL_Log::add($message, $languageKey, $context);
		}

		public function onAfterTemplateFileUpdate($context, $template,
$file_name)
		{
			if (strpos($context, $this->option) === false)
			{
				return;
			}

			if ( ! RL_Array::find(['*', 'files'],
$this->events))
			{
				return;
			}

			$languageKey = 'ATP_ACTIONLOGS_FILE_UPDATED';

			$filelink =
'index.php?option=com_advancedtemplates&view=template&id='
. $template->extension_id
				. '&file=' . base64_encode($file_name);

			$message = [
				'type'     => JText::_('ATP_TEMPLATE_FILE'),
				'template' => $template->name,
				'file'     => ltrim($file_name, '/'),
				'filelink' => $filelink,
			];

			RL_Log::add($message, $languageKey, $context);
		}

		public function onAfterTemplateFileDelete($context, $template,
$file_name)
		{
			if (strpos($context, $this->option) === false)
			{
				return;
			}

			if ( ! RL_Array::find(['*', 'files'],
$this->events))
			{
				return;
			}

			$languageKey = 'ATP_ACTIONLOGS_FILE_DELETED';

			$message = [
				'type'     => JText::_('ATP_TEMPLATE_FILE'),
				'template' => $template->name,
				'file'     => ltrim($file_name, '/'),
			];

			RL_Log::add($message, $languageKey, $context);
		}

		private function getStyleById($id)
		{
			$db = JFactory::getDbo();

			$query = $db->getQuery(true)
				->select('*')
				->from($db->quoteName('#__template_styles'))
				->where($db->quoteName('id') . ' = ' . (int)
$id);
			$db->setQuery($query);

			return $db->loadObject();
		}
	}
}
advancedtemplates/advancedtemplates.xml000064400000004153151160263000014433
0ustar00<?xml version="1.0" encoding="UTF-8"?>
<extension version="3.9" type="plugin"
group="actionlog" method="upgrade">
	<name>PLG_ACTIONLOG_ADVANCEDTEMPLATES</name>
	<description>PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC</description>
	<version>3.9.5</version>
	<creationDate>February 2021</creationDate>
	<author>Regular Labs (Peter van Westen)</author>
	<authorEmail>info@regularlabs.com</authorEmail>
	<authorUrl>https://www.regularlabs.com</authorUrl>
	<copyright>Copyright © 2018 Regular Labs - All Rights
Reserved</copyright>
	<license>http://www.gnu.org/licenses/gpl-2.0.html
GNU/GPL</license>

	<scriptfile>script.install.php</scriptfile>

	<updateservers>
		<server type="extension" priority="1"
name="Regular Labs - Advanced Template Manager">
			https://download.regularlabs.com/updates.xml?e=advancedtemplatemanager&amp;type=.xml
		</server>
	</updateservers>

	<files>
		<filename
plugin="advancedtemplates">advancedtemplates.php</filename>
		<filename>script.install.helper.php</filename>
		<folder>language</folder>
	</files>

	<config>
		<fields name="params"
addfieldpath="/libraries/regularlabs/fields">
			<fieldset name="basic">
				<field name="@loadlanguage_regularlabs"
type="rl_loadlanguage"
extension="plg_system_regularlabs" />
				<field name="@loadlanguage"
type="rl_loadlanguage"
extension="plg_actionlog_advancedtemplates" />
				<field name="@license" type="rl_license"
extension="ADVANCEDTEMPLATEMANAGER" />
				<field name="@version" type="rl_version"
extension="ADVANCEDTEMPLATEMANAGER" />
				<field name="@dependency" type="rl_dependency"
					   label="RR_THE_COMPONENT"
					  
file="/administrator/components/com_advancedtemplates/advancedtemplates.php"
/>
				<field name="@header" type="rl_header"
					   label="ADVANCEDTEMPLATEMANAGER"
					   description="ADVANCEDTEMPLATEMANAGER_DESC"
					   url="https://www.regularlabs.com/advancedtemplatemanager"
/>

				<field name="@notice_settings" type="note"
class="alert alert-info"
					   description="ATP_SETTINGS,&lt;a
href=&quot;index.php?option=com_advancedtemplates&quot;
target=&quot;_blank&quot;&gt;,&lt;/a&gt;" />
			</fieldset>
		</fields>
	</config>
</extension>
advancedtemplates/language/cs-CZ/cs-CZ.plg_actionlog_advancedtemplates.ini000064400000003476151160263000022742
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

; PLG_ACTIONLOG_ADVANCEDTEMPLATES="Action Log - Regular Labs -
Advanced Template Manager"
; PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Record the actions of users
for Advanced Template Manager"
ADVANCEDTEMPLATEMANAGER="Pokročilý správce šablon"

ADVANCEDTEMPLATEMANAGER_DESC="S Pokročilým správcem šablon máte k
dispozici další možnosti a funkce pro ovládání šablon."

; ATP_SETTINGS="Please see the [[%1:start link%]]Template
Manager[[%2:end link%]] for settings."
ATP_THE_COMPONENT="komponenta Pokročilý správce šablon"
; ATP_THE_SYSTEM_PLUGIN="the Advanced Template Manager system
plugin"

; ATP_ACTION_FOLDER_FILE_ACTIONS="Folder/File Actions"
; ATP_ACTION_TEMPLATE_COPY="Copy Template"
; ATP_ACTIONLOGS_FILE_ADDED="User <a
href='{accountlink}'>{username}</a> added <a
href='{filelink}'>{file}</a> to template
{template}"
; ATP_ACTIONLOGS_FILE_DELETED="User <a
href='{accountlink}'>{username}</a> deleted {file} from
template {template}"
; ATP_ACTIONLOGS_FILE_UPDATED="User <a
href='{accountlink}'>{username}</a> updated <a
href='{filelink}'>{file}</a> in template
{template}"
; ATP_ACTIONLOGS_STYLE_SET_HOME="User <a
href='{accountlink}'>{username}</a> changed the default
template style to <a
href='{style_link}'>{style_name}</a>"
; ATP_ACTIONLOGS_TEMPLATE_COPY="User <a
href='{accountlink}'>{username}</a> created a new
template called '{to_name}' (copy of
'{from_name}')"
; ATP_TEMPLATE_FILE="template file"
advancedtemplates/language/cs-CZ/cs-CZ.plg_actionlog_advancedtemplates.sys.ini000064400000001233151160263000023544
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

; PLG_ACTIONLOG_ADVANCEDTEMPLATES="Action Log - Regular Labs -
Advanced Template Manager"
; PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Record the actions of users
for Advanced Template Manager"
ADVANCEDTEMPLATEMANAGER="Pokročilý správce šablon"
advancedtemplates/language/da-DK/da-DK.plg_actionlog_advancedtemplates.ini000064400000003526151160263000022640
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

; PLG_ACTIONLOG_ADVANCEDTEMPLATES="Action Log - Regular Labs -
Advanced Template Manager"
; PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Record the actions of users
for Advanced Template Manager"
ADVANCEDTEMPLATEMANAGER="Avanceret Skabelon Håndtering"

ADVANCEDTEMPLATEMANAGER_DESC="Med Avanceret Skabelon Håndtering har
du ekstra indstillinger og funktionalitet til at kontrollere dine
skabeloner."

ATP_SETTINGS="Se venligst [[%1:start link%]]Skabelon
Håndteringen[[%2:end link%]] for indstillinger."
ATP_THE_COMPONENT="Avanceret Skabelon Håndterings komponent"
; ATP_THE_SYSTEM_PLUGIN="the Advanced Template Manager system
plugin"

; ATP_ACTION_FOLDER_FILE_ACTIONS="Folder/File Actions"
; ATP_ACTION_TEMPLATE_COPY="Copy Template"
; ATP_ACTIONLOGS_FILE_ADDED="User <a
href='{accountlink}'>{username}</a> added <a
href='{filelink}'>{file}</a> to template
{template}"
; ATP_ACTIONLOGS_FILE_DELETED="User <a
href='{accountlink}'>{username}</a> deleted {file} from
template {template}"
; ATP_ACTIONLOGS_FILE_UPDATED="User <a
href='{accountlink}'>{username}</a> updated <a
href='{filelink}'>{file}</a> in template
{template}"
; ATP_ACTIONLOGS_STYLE_SET_HOME="User <a
href='{accountlink}'>{username}</a> changed the default
template style to <a
href='{style_link}'>{style_name}</a>"
; ATP_ACTIONLOGS_TEMPLATE_COPY="User <a
href='{accountlink}'>{username}</a> created a new
template called '{to_name}' (copy of
'{from_name}')"
; ATP_TEMPLATE_FILE="template file"
advancedtemplates/language/da-DK/da-DK.plg_actionlog_advancedtemplates.sys.ini000064400000001235151160263000023450
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

; PLG_ACTIONLOG_ADVANCEDTEMPLATES="Action Log - Regular Labs -
Advanced Template Manager"
; PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Record the actions of users
for Advanced Template Manager"
ADVANCEDTEMPLATEMANAGER="Avanceret Skabelon Håndtering"
advancedtemplates/language/de-DE/de-DE.plg_actionlog_advancedtemplates.ini000064400000003602151160263000022627
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

PLG_ACTIONLOG_ADVANCEDTEMPLATES="Aktionsprotokoll - Regular Labs -
Advanced Template Manager"
PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Zeichnet Aktionen der Benutzer
für Advanced Template Manager auf."
ADVANCEDTEMPLATEMANAGER="Advanced Template Manager"

ADVANCEDTEMPLATEMANAGER_DESC="Mit dem Advanced Template Manager haben
Sie extra Optionen und Funktionen um die Anzeige Ihrer Templates zu
steuern."

ATP_SETTINGS="Bitte klicken Sie auf [[%1:start link%]]Template
Manager[[%2:end link%]] für die Einstellungen."
ATP_THE_COMPONENT="die Advanced Template Manager Komponente"
ATP_THE_SYSTEM_PLUGIN="das Advanced Template Manager
System-Plugin"

ATP_ACTION_FOLDER_FILE_ACTIONS="Ordner-/Datei-Aktionen"
ATP_ACTION_TEMPLATE_COPY="Template kopieren"
ATP_ACTIONLOGS_FILE_ADDED="Benutzer <a
href='{accountlink}'>{username}</a> fügte <a
href='{filelink}'>{file}</a> dem Template {template}
zu"
ATP_ACTIONLOGS_FILE_DELETED="Benutzer <a
href='{accountlink}'>{username}</a> löschte {file} vom
Template {template}"
ATP_ACTIONLOGS_FILE_UPDATED="Benutzer <a
href='{accountlink}'>{username}</a> aktualisierte <a
href='{filelink}'>{file}</a> im Template
{template}"
ATP_ACTIONLOGS_STYLE_SET_HOME="Benutzer <a
href='{accountlink}'>{username}</a> änderte den
Standard Template-Stil auf <a
href='{style_link}'>{style_name}</a>"
ATP_ACTIONLOGS_TEMPLATE_COPY="Benutzer <a
href='{accountlink}'>{username}</a> kreierte ein neues
Template namens '{to_name}' (Kopie von
'{from_name}')"
ATP_TEMPLATE_FILE="Template-Datei"
advancedtemplates/language/de-DE/de-DE.plg_actionlog_advancedtemplates.sys.ini000064400000001243151160263000023443
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

PLG_ACTIONLOG_ADVANCEDTEMPLATES="Aktionsprotokoll - Regular Labs -
Advanced Template Manager"
PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Zeichnet Aktionen der Benutzer
für Advanced Template Manager auf."
ADVANCEDTEMPLATEMANAGER="Advanced Template Manager"
advancedtemplates/language/en-GB/en-GB.plg_actionlog_advancedtemplates.ini000064400000003437151160263000022661
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

PLG_ACTIONLOG_ADVANCEDTEMPLATES="Action Log - Regular Labs - Advanced
Template Manager"
PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Record the actions of users for
Advanced Template Manager"
ADVANCEDTEMPLATEMANAGER="Advanced Template Manager"

ADVANCEDTEMPLATEMANAGER_DESC="With Advanced Template Manager you have
extra options and functionality to control your templates."

ATP_SETTINGS="Please see the [[%1:start link%]]Template
Manager[[%2:end link%]] for settings."
ATP_THE_COMPONENT="the Advanced Template Manager component"
ATP_THE_SYSTEM_PLUGIN="the Advanced Template Manager system
plugin"

ATP_ACTION_FOLDER_FILE_ACTIONS="Folder/File Actions"
ATP_ACTION_TEMPLATE_COPY="Copy Template"
ATP_ACTIONLOGS_FILE_ADDED="User <a
href='{accountlink}'>{username}</a> added <a
href='{filelink}'>{file}</a> to template
{template}"
ATP_ACTIONLOGS_FILE_DELETED="User <a
href='{accountlink}'>{username}</a> deleted {file} from
template {template}"
ATP_ACTIONLOGS_FILE_UPDATED="User <a
href='{accountlink}'>{username}</a> updated <a
href='{filelink}'>{file}</a> in template
{template}"
ATP_ACTIONLOGS_STYLE_SET_HOME="User <a
href='{accountlink}'>{username}</a> changed the default
template style to <a
href='{style_link}'>{style_name}</a>"
ATP_ACTIONLOGS_TEMPLATE_COPY="User <a
href='{accountlink}'>{username}</a> created a new
template called '{to_name}' (copy of
'{from_name}')"
ATP_TEMPLATE_FILE="template file"
advancedtemplates/language/en-GB/en-GB.plg_actionlog_advancedtemplates.sys.ini000064400000001224151160263000023466
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

PLG_ACTIONLOG_ADVANCEDTEMPLATES="Action Log - Regular Labs - Advanced
Template Manager"
PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Record the actions of users for
Advanced Template Manager"
ADVANCEDTEMPLATEMANAGER="Advanced Template Manager"
advancedtemplates/language/et-EE/et-EE.plg_actionlog_advancedtemplates.ini000064400000003643151160263000022676
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

PLG_ACTIONLOG_ADVANCEDTEMPLATES="Toimingute logi - Regular Labs -
Lisavõimalustega kujunduste haldamine"
PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Salvesta kasutajate toimingud
lisavõimalustega kujunduste halduris"
ADVANCEDTEMPLATEMANAGER="Lisavõimalustega kujunduste haldur"

ADVANCEDTEMPLATEMANAGER_DESC="Lisavõimalustega kujunduste haldur
annab juurde mõned lisavõimalused ja -funktsioonid, et võtta oma
kujundustest ja nende stiilidest viimast."

ATP_SETTINGS="Palun vaata [[%1:start link%]]Kujunduste halduri[[%2:end
link%]] seadeid."
ATP_THE_COMPONENT="Lisavõimalustega kujunduste haldur"
ATP_THE_SYSTEM_PLUGIN="lisavõimalustega kujundustehalduri
süsteemiplugin"

ATP_ACTION_FOLDER_FILE_ACTIONS="Kausta/faili toimingud"
ATP_ACTION_TEMPLATE_COPY="Kopeeri kujundus"
ATP_ACTIONLOGS_FILE_ADDED="Kasutaja <a
href='{accountlink}'>{username}</a> lisas kujundusele
{template} faili <a
href='{filelink}'>{file}</a>"
ATP_ACTIONLOGS_FILE_DELETED="Kasutaja <a
href='{accountlink}'>{username}</a> kustutas kujundusest
{template} faili {file}"
ATP_ACTIONLOGS_FILE_UPDATED="Kasutaja <a
href='{accountlink}'>{username}</a> uuendas kujunduse
{template} faili <a
href='{filelink}'>{file}</a>"
ATP_ACTIONLOGS_STYLE_SET_HOME="Kasutaja <a
href='{accountlink}'>{username}</a> määras kujunduse
vaikimisi stiiliks <a
href='{style_link}'>{style_name}</a>"
ATP_ACTIONLOGS_TEMPLATE_COPY="Kasutaja <a
href='{accountlink}'>{username}</a> lõi uue kujunduse
nimega '{to_name}' (koopia kujundusest
'{from_name}')"
ATP_TEMPLATE_FILE="kujunduse fail"
advancedtemplates/language/et-EE/et-EE.plg_actionlog_advancedtemplates.sys.ini000064400000001272151160263000023507
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

PLG_ACTIONLOG_ADVANCEDTEMPLATES="Toimingute logi - Regular Labs -
Lisavõimalustega kujunduste haldamine"
PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Salvesta kasutajate toimingud
lisavõimalustega kujunduste halduris"
ADVANCEDTEMPLATEMANAGER="Lisavõimalustega kujunduste haldur"
advancedtemplates/language/fr-FR/fr-FR.plg_actionlog_advancedtemplates.ini000064400000003732151160263000022727
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

PLG_ACTIONLOG_ADVANCEDTEMPLATES="Journal des actions - Regular Labs -
Advanced Template Manager"
PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Enregistrer les actions des
utilisateurs pour Advanced Template Manager"
ADVANCEDTEMPLATEMANAGER="Gestionnaire avancé de Template"

ADVANCEDTEMPLATEMANAGER_DESC="Avec Advanced Template Manager vous
disposez d'options et de fonctionnalités supplémentaires afin de
mieux contrôler vos templates."

ATP_SETTINGS="Merci de vous rendre dans la [[%1:start link%]]Gestion
des templates[[%2:end link%]] pour les paramètrages."
ATP_THE_COMPONENT="Le composant Advanced Template Manager"
ATP_THE_SYSTEM_PLUGIN="Plugin système Advanced Template Manager"

ATP_ACTION_FOLDER_FILE_ACTIONS="Actions Dossier/Fichier"
ATP_ACTION_TEMPLATE_COPY="Copier le template"
ATP_ACTIONLOGS_FILE_ADDED="L'utilisateur <a
href='{accountlink}'>{username}</a> a ajouté <a
href='{filelink}'>{file}</a> au template
{template}"
ATP_ACTIONLOGS_FILE_DELETED="L'utilisateur <a
href='{accountlink}'>{username}</a> a supprimé {file}
du template {template}"
ATP_ACTIONLOGS_FILE_UPDATED="L'utilisateur <a
href='{accountlink}'>{username}</a> a mis à jour <a
href='{filelink}'>{file}</a> dans le template
{template}"
ATP_ACTIONLOGS_STYLE_SET_HOME="L'utilisateur <a
href='{accountlink}'>{username}</a> a changé le style
par défaut du template en <a
href='{style_link}'>{style_name}</a>"
ATP_ACTIONLOGS_TEMPLATE_COPY="L'utilisateur <a
href='{accountlink}'>{username}</a> a créé un nouveau
template basé sur '{to_name}' (copie de
'{from_name}')"
ATP_TEMPLATE_FILE="fichier de template"
advancedtemplates/language/fr-FR/fr-FR.plg_actionlog_advancedtemplates.sys.ini000064400000001262151160263000023540
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

PLG_ACTIONLOG_ADVANCEDTEMPLATES="Journal des actions - Regular Labs -
Advanced Template Manager"
PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Enregistrer les actions des
utilisateurs pour Advanced Template Manager"
ADVANCEDTEMPLATEMANAGER="Gestionnaire avancé de Template"
advancedtemplates/language/id-ID/id-ID.plg_actionlog_advancedtemplates.ini000064400000003502151160263000022646
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

; PLG_ACTIONLOG_ADVANCEDTEMPLATES="Action Log - Regular Labs -
Advanced Template Manager"
; PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Record the actions of users
for Advanced Template Manager"
ADVANCEDTEMPLATEMANAGER="Advanced Template Manager"

ADVANCEDTEMPLATEMANAGER_DESC="Dengan Advanced Template Manager anda
memiliki opsi dan fungsi tambahan guna mengendalikan templat-templat."

ATP_SETTINGS="Silakan lihat [[%1:start link%]]Pengelolaan
Templat[[%2:end link%]] untuk pengaturannya."
ATP_THE_COMPONENT="komponen Advanced Template Manager"
; ATP_THE_SYSTEM_PLUGIN="the Advanced Template Manager system
plugin"

; ATP_ACTION_FOLDER_FILE_ACTIONS="Folder/File Actions"
; ATP_ACTION_TEMPLATE_COPY="Copy Template"
; ATP_ACTIONLOGS_FILE_ADDED="User <a
href='{accountlink}'>{username}</a> added <a
href='{filelink}'>{file}</a> to template
{template}"
; ATP_ACTIONLOGS_FILE_DELETED="User <a
href='{accountlink}'>{username}</a> deleted {file} from
template {template}"
; ATP_ACTIONLOGS_FILE_UPDATED="User <a
href='{accountlink}'>{username}</a> updated <a
href='{filelink}'>{file}</a> in template
{template}"
; ATP_ACTIONLOGS_STYLE_SET_HOME="User <a
href='{accountlink}'>{username}</a> changed the default
template style to <a
href='{style_link}'>{style_name}</a>"
; ATP_ACTIONLOGS_TEMPLATE_COPY="User <a
href='{accountlink}'>{username}</a> created a new
template called '{to_name}' (copy of
'{from_name}')"
; ATP_TEMPLATE_FILE="template file"
advancedtemplates/language/id-ID/id-ID.plg_actionlog_advancedtemplates.sys.ini000064400000001230151160263000023457
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

; PLG_ACTIONLOG_ADVANCEDTEMPLATES="Action Log - Regular Labs -
Advanced Template Manager"
; PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Record the actions of users
for Advanced Template Manager"
ADVANCEDTEMPLATEMANAGER="Advanced Template Manager"
advancedtemplates/language/it-IT/it-IT.plg_actionlog_advancedtemplates.ini000064400000003465151160263000022756
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

; PLG_ACTIONLOG_ADVANCEDTEMPLATES="Action Log - Regular Labs -
Advanced Template Manager"
; PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Record the actions of users
for Advanced Template Manager"
ADVANCEDTEMPLATEMANAGER="Advanced Template Manager"

ADVANCEDTEMPLATEMANAGER_DESC="Con Advanced Template Manager hai
opzioni e funzionalità extra per gestire i tuoi template."

ATP_SETTINGS="Per favore leggi [[%1:start link%]]Template
Manager[[%2:end link%]] per le impostazioni."
ATP_THE_COMPONENT="Componente Advanced Template Manager"
; ATP_THE_SYSTEM_PLUGIN="the Advanced Template Manager system
plugin"

; ATP_ACTION_FOLDER_FILE_ACTIONS="Folder/File Actions"
; ATP_ACTION_TEMPLATE_COPY="Copy Template"
; ATP_ACTIONLOGS_FILE_ADDED="User <a
href='{accountlink}'>{username}</a> added <a
href='{filelink}'>{file}</a> to template
{template}"
; ATP_ACTIONLOGS_FILE_DELETED="User <a
href='{accountlink}'>{username}</a> deleted {file} from
template {template}"
; ATP_ACTIONLOGS_FILE_UPDATED="User <a
href='{accountlink}'>{username}</a> updated <a
href='{filelink}'>{file}</a> in template
{template}"
; ATP_ACTIONLOGS_STYLE_SET_HOME="User <a
href='{accountlink}'>{username}</a> changed the default
template style to <a
href='{style_link}'>{style_name}</a>"
; ATP_ACTIONLOGS_TEMPLATE_COPY="User <a
href='{accountlink}'>{username}</a> created a new
template called '{to_name}' (copy of
'{from_name}')"
; ATP_TEMPLATE_FILE="template file"
advancedtemplates/language/it-IT/it-IT.plg_actionlog_advancedtemplates.sys.ini000064400000001230151160263000023557
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

; PLG_ACTIONLOG_ADVANCEDTEMPLATES="Action Log - Regular Labs -
Advanced Template Manager"
; PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Record the actions of users
for Advanced Template Manager"
ADVANCEDTEMPLATEMANAGER="Advanced Template Manager"
advancedtemplates/language/ja-JP/ja-JP.plg_actionlog_advancedtemplates.ini000064400000003632151160263000022700
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

; PLG_ACTIONLOG_ADVANCEDTEMPLATES="Action Log - Regular Labs -
Advanced Template Manager"
; PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Record the actions of users
for Advanced Template Manager"
ADVANCEDTEMPLATEMANAGER="Advanced Template Manager"

ADVANCEDTEMPLATEMANAGER_DESC="「Advanced Template
Manager」を使うと、テンプレートをコントロールする追加のオプションと機能が使えます。"

ATP_SETTINGS="設定 (パラメータ) については、[[%1:start
link%]]テンプレート管理[[%2:end
link%]]を参照して下さい。"
ATP_THE_COMPONENT="Advanced Template Manager
コンポーネント"
; ATP_THE_SYSTEM_PLUGIN="the Advanced Template Manager system
plugin"

; ATP_ACTION_FOLDER_FILE_ACTIONS="Folder/File Actions"
; ATP_ACTION_TEMPLATE_COPY="Copy Template"
; ATP_ACTIONLOGS_FILE_ADDED="User <a
href='{accountlink}'>{username}</a> added <a
href='{filelink}'>{file}</a> to template
{template}"
; ATP_ACTIONLOGS_FILE_DELETED="User <a
href='{accountlink}'>{username}</a> deleted {file} from
template {template}"
; ATP_ACTIONLOGS_FILE_UPDATED="User <a
href='{accountlink}'>{username}</a> updated <a
href='{filelink}'>{file}</a> in template
{template}"
; ATP_ACTIONLOGS_STYLE_SET_HOME="User <a
href='{accountlink}'>{username}</a> changed the default
template style to <a
href='{style_link}'>{style_name}</a>"
; ATP_ACTIONLOGS_TEMPLATE_COPY="User <a
href='{accountlink}'>{username}</a> created a new
template called '{to_name}' (copy of
'{from_name}')"
; ATP_TEMPLATE_FILE="template file"
advancedtemplates/language/ja-JP/ja-JP.plg_actionlog_advancedtemplates.sys.ini000064400000001230151160263000023505
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

; PLG_ACTIONLOG_ADVANCEDTEMPLATES="Action Log - Regular Labs -
Advanced Template Manager"
; PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Record the actions of users
for Advanced Template Manager"
ADVANCEDTEMPLATEMANAGER="Advanced Template Manager"
advancedtemplates/language/lt-LT/lt-LT.plg_actionlog_advancedtemplates.ini000064400000003517151160263000022770
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

; PLG_ACTIONLOG_ADVANCEDTEMPLATES="Action Log - Regular Labs -
Advanced Template Manager"
; PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Record the actions of users
for Advanced Template Manager"
ADVANCEDTEMPLATEMANAGER="Išplėstinė šablonų tvarkyklė"

ADVANCEDTEMPLATEMANAGER_DESC="Išplėstinė šablonų tvarkyklė
suteiks papildomas parinktis ir funkcionalumą šablonų valdymui."

ATP_SETTINGS="Peržiūrėkite [[%1:start link%]]Šablonų tvarkyklės
[[%2:end link%]] nustatymus."
ATP_THE_COMPONENT="Išplėstinės šablonų tvarkyklės
komponentas"
; ATP_THE_SYSTEM_PLUGIN="the Advanced Template Manager system
plugin"

; ATP_ACTION_FOLDER_FILE_ACTIONS="Folder/File Actions"
; ATP_ACTION_TEMPLATE_COPY="Copy Template"
; ATP_ACTIONLOGS_FILE_ADDED="User <a
href='{accountlink}'>{username}</a> added <a
href='{filelink}'>{file}</a> to template
{template}"
; ATP_ACTIONLOGS_FILE_DELETED="User <a
href='{accountlink}'>{username}</a> deleted {file} from
template {template}"
; ATP_ACTIONLOGS_FILE_UPDATED="User <a
href='{accountlink}'>{username}</a> updated <a
href='{filelink}'>{file}</a> in template
{template}"
; ATP_ACTIONLOGS_STYLE_SET_HOME="User <a
href='{accountlink}'>{username}</a> changed the default
template style to <a
href='{style_link}'>{style_name}</a>"
; ATP_ACTIONLOGS_TEMPLATE_COPY="User <a
href='{accountlink}'>{username}</a> created a new
template called '{to_name}' (copy of
'{from_name}')"
; ATP_TEMPLATE_FILE="template file"
advancedtemplates/language/lt-LT/lt-LT.plg_actionlog_advancedtemplates.sys.ini000064400000001241151160263000023575
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

; PLG_ACTIONLOG_ADVANCEDTEMPLATES="Action Log - Regular Labs -
Advanced Template Manager"
; PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Record the actions of users
for Advanced Template Manager"
ADVANCEDTEMPLATEMANAGER="Išplėstinė šablonų tvarkyklė"
advancedtemplates/language/nl-BE/nl-BE.plg_actionlog_advancedtemplates.ini000064400000003521151160263000022665
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

; PLG_ACTIONLOG_ADVANCEDTEMPLATES="Action Log - Regular Labs -
Advanced Template Manager"
; PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Record the actions of users
for Advanced Template Manager"
ADVANCEDTEMPLATEMANAGER="Advanced Template Manager"

ADVANCEDTEMPLATEMANAGER_DESC="Met Advanced Template Manager heb je
extra opties en functionaliteit om de controle te nemen over uw
templates."

ATP_SETTINGS="Gelieve het [[%1: start link%]]Template Beheer[[%2:end
link%]] te raadplegen voor instellingen"
ATP_THE_COMPONENT="het Advanced Template Manager component"
; ATP_THE_SYSTEM_PLUGIN="the Advanced Template Manager system
plugin"

; ATP_ACTION_FOLDER_FILE_ACTIONS="Folder/File Actions"
; ATP_ACTION_TEMPLATE_COPY="Copy Template"
; ATP_ACTIONLOGS_FILE_ADDED="User <a
href='{accountlink}'>{username}</a> added <a
href='{filelink}'>{file}</a> to template
{template}"
; ATP_ACTIONLOGS_FILE_DELETED="User <a
href='{accountlink}'>{username}</a> deleted {file} from
template {template}"
; ATP_ACTIONLOGS_FILE_UPDATED="User <a
href='{accountlink}'>{username}</a> updated <a
href='{filelink}'>{file}</a> in template
{template}"
; ATP_ACTIONLOGS_STYLE_SET_HOME="User <a
href='{accountlink}'>{username}</a> changed the default
template style to <a
href='{style_link}'>{style_name}</a>"
; ATP_ACTIONLOGS_TEMPLATE_COPY="User <a
href='{accountlink}'>{username}</a> created a new
template called '{to_name}' (copy of
'{from_name}')"
; ATP_TEMPLATE_FILE="template file"
advancedtemplates/language/nl-BE/nl-BE.plg_actionlog_advancedtemplates.sys.ini000064400000001230151160263000023475
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

; PLG_ACTIONLOG_ADVANCEDTEMPLATES="Action Log - Regular Labs -
Advanced Template Manager"
; PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Record the actions of users
for Advanced Template Manager"
ADVANCEDTEMPLATEMANAGER="Advanced Template Manager"
advancedtemplates/language/nl-NL/nl-NL.plg_actionlog_advancedtemplates.ini000064400000003554151160263000022741
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

PLG_ACTIONLOG_ADVANCEDTEMPLATES="Actie Log - Regular Labs -
Geavanceerde Template Manager"
PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Sla de acties op van gebruikers
voor Geavanceerde Template Manager"
ADVANCEDTEMPLATEMANAGER="Geavanceerde Template Manager"

ADVANCEDTEMPLATEMANAGER_DESC="Met Geavanceerde Template Manager heeft
u extra opties en functies om uw templates te controleren."

ATP_SETTINGS="AUB kijk in [[%1:start link%]]Templatebeheer[[%2:end
link%]] voor instellingen."
ATP_THE_COMPONENT="de Geavanceerde Template Manager component"
ATP_THE_SYSTEM_PLUGIN="de Geavanceerde Template Manager systeem
plug-in"

ATP_ACTION_FOLDER_FILE_ACTIONS="Map/Bestandsacties"
ATP_ACTION_TEMPLATE_COPY="Template kopiëren"
ATP_ACTIONLOGS_FILE_ADDED="Gebruiker <a
href='{accountlink}'>{username}</a> voegde <a
href='{filelink}'>{file}</a> toe aan template
{template}"
ATP_ACTIONLOGS_FILE_DELETED="Gebruiker <a
href='{accountlink}'>{username}</a> verwijderde {file}
van template {template}"
ATP_ACTIONLOGS_FILE_UPDATED="Gebruiker <a
href='{accountlink}'>{username}</a> updatete <a
href='{filelink}'>{file}</a> in template
{template}"
ATP_ACTIONLOGS_STYLE_SET_HOME="Gebruiker <a
href='{accountlink}'>{username}</a> veranderde de
standaard template stijl naar <a
href='{style_link}'>{style_name}</a>"
ATP_ACTIONLOGS_TEMPLATE_COPY="Gebruiker <a
href='{accountlink}'>{username}</a> maakte een nieuwe
template genaamd '{to_name}' (copy of
'{from_name}')"
ATP_TEMPLATE_FILE="template bestand"
advancedtemplates/language/nl-NL/nl-NL.plg_actionlog_advancedtemplates.sys.ini000064400000001244151160263000023550
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

PLG_ACTIONLOG_ADVANCEDTEMPLATES="Actie Log - Regular Labs -
Geavanceerde Template Manager"
PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Sla de acties op van gebruikers
voor Geavanceerde Template Manager"
ADVANCEDTEMPLATEMANAGER="Geavanceerde Template Manager"
advancedtemplates/language/pt-BR/pt-BR.plg_actionlog_advancedtemplates.ini000064400000003541151160263000022745
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

; PLG_ACTIONLOG_ADVANCEDTEMPLATES="Action Log - Regular Labs -
Advanced Template Manager"
; PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Record the actions of users
for Advanced Template Manager"
ADVANCEDTEMPLATEMANAGER="Gerenciador Avançado de Temas"

ADVANCEDTEMPLATEMANAGER_DESC="Com o Gerenciador Avançado de Temas
você tem opções e funcionalidades extras para controlar teus
temas."

ATP_SETTINGS="Por favor, veja o [[%1: link inicial%]] Gerenciador de
Temas [[%2: link final%]] para configurações."
ATP_THE_COMPONENT="o componente de Gerenciador Avançado de
Temas"
; ATP_THE_SYSTEM_PLUGIN="the Advanced Template Manager system
plugin"

; ATP_ACTION_FOLDER_FILE_ACTIONS="Folder/File Actions"
; ATP_ACTION_TEMPLATE_COPY="Copy Template"
; ATP_ACTIONLOGS_FILE_ADDED="User <a
href='{accountlink}'>{username}</a> added <a
href='{filelink}'>{file}</a> to template
{template}"
; ATP_ACTIONLOGS_FILE_DELETED="User <a
href='{accountlink}'>{username}</a> deleted {file} from
template {template}"
; ATP_ACTIONLOGS_FILE_UPDATED="User <a
href='{accountlink}'>{username}</a> updated <a
href='{filelink}'>{file}</a> in template
{template}"
; ATP_ACTIONLOGS_STYLE_SET_HOME="User <a
href='{accountlink}'>{username}</a> changed the default
template style to <a
href='{style_link}'>{style_name}</a>"
; ATP_ACTIONLOGS_TEMPLATE_COPY="User <a
href='{accountlink}'>{username}</a> created a new
template called '{to_name}' (copy of
'{from_name}')"
; ATP_TEMPLATE_FILE="template file"
advancedtemplates/language/pt-BR/pt-BR.plg_actionlog_advancedtemplates.sys.ini000064400000001235151160263000023560
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

; PLG_ACTIONLOG_ADVANCEDTEMPLATES="Action Log - Regular Labs -
Advanced Template Manager"
; PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Record the actions of users
for Advanced Template Manager"
ADVANCEDTEMPLATEMANAGER="Gerenciador Avançado de Temas"
advancedtemplates/language/pt-PT/pt-PT.plg_actionlog_advancedtemplates.ini000064400000003500151160263000023000
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

; PLG_ACTIONLOG_ADVANCEDTEMPLATES="Action Log - Regular Labs -
Advanced Template Manager"
; PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Record the actions of users
for Advanced Template Manager"
ADVANCEDTEMPLATEMANAGER="Advanced Template Manager"

ADVANCEDTEMPLATEMANAGER_DESC="Com o Advanced Template Manager terá
opções e funcionalidades adicionais para gerir os seus modelos."

ATP_SETTINGS="Por fgavor, ver configurações em[[%1:start
link%]]Gestor de modelos[[%2:end link%]]."
ATP_THE_COMPONENT="o componente Advanced Template Manager"
; ATP_THE_SYSTEM_PLUGIN="the Advanced Template Manager system
plugin"

; ATP_ACTION_FOLDER_FILE_ACTIONS="Folder/File Actions"
; ATP_ACTION_TEMPLATE_COPY="Copy Template"
; ATP_ACTIONLOGS_FILE_ADDED="User <a
href='{accountlink}'>{username}</a> added <a
href='{filelink}'>{file}</a> to template
{template}"
; ATP_ACTIONLOGS_FILE_DELETED="User <a
href='{accountlink}'>{username}</a> deleted {file} from
template {template}"
; ATP_ACTIONLOGS_FILE_UPDATED="User <a
href='{accountlink}'>{username}</a> updated <a
href='{filelink}'>{file}</a> in template
{template}"
; ATP_ACTIONLOGS_STYLE_SET_HOME="User <a
href='{accountlink}'>{username}</a> changed the default
template style to <a
href='{style_link}'>{style_name}</a>"
; ATP_ACTIONLOGS_TEMPLATE_COPY="User <a
href='{accountlink}'>{username}</a> created a new
template called '{to_name}' (copy of
'{from_name}')"
; ATP_TEMPLATE_FILE="template file"
advancedtemplates/language/pt-PT/pt-PT.plg_actionlog_advancedtemplates.sys.ini000064400000001230151160263000023613
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

; PLG_ACTIONLOG_ADVANCEDTEMPLATES="Action Log - Regular Labs -
Advanced Template Manager"
; PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Record the actions of users
for Advanced Template Manager"
ADVANCEDTEMPLATEMANAGER="Advanced Template Manager"
advancedtemplates/language/ru-RU/ru-RU.plg_actionlog_advancedtemplates.ini000064400000003707151160263000023025
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

; PLG_ACTIONLOG_ADVANCEDTEMPLATES="Action Log - Regular Labs -
Advanced Template Manager"
; PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Record the actions of users
for Advanced Template Manager"
ADVANCEDTEMPLATEMANAGER="Advanced Template Manager"

ADVANCEDTEMPLATEMANAGER_DESC="С помощью Advanced Template
Manager у вас есть дополнительные варианты и
возможности для управления
шаблонами."

ATP_SETTINGS="Пожалуйста перейдите в [[%1:start
link%]]Advanced Template Manager[[%2:end link%]] для его
настройки."
ATP_THE_COMPONENT="компонент Advanced Template Manager"
; ATP_THE_SYSTEM_PLUGIN="the Advanced Template Manager system
plugin"

; ATP_ACTION_FOLDER_FILE_ACTIONS="Folder/File Actions"
; ATP_ACTION_TEMPLATE_COPY="Copy Template"
; ATP_ACTIONLOGS_FILE_ADDED="User <a
href='{accountlink}'>{username}</a> added <a
href='{filelink}'>{file}</a> to template
{template}"
; ATP_ACTIONLOGS_FILE_DELETED="User <a
href='{accountlink}'>{username}</a> deleted {file} from
template {template}"
; ATP_ACTIONLOGS_FILE_UPDATED="User <a
href='{accountlink}'>{username}</a> updated <a
href='{filelink}'>{file}</a> in template
{template}"
; ATP_ACTIONLOGS_STYLE_SET_HOME="User <a
href='{accountlink}'>{username}</a> changed the default
template style to <a
href='{style_link}'>{style_name}</a>"
; ATP_ACTIONLOGS_TEMPLATE_COPY="User <a
href='{accountlink}'>{username}</a> created a new
template called '{to_name}' (copy of
'{from_name}')"
; ATP_TEMPLATE_FILE="template file"
advancedtemplates/language/ru-RU/ru-RU.plg_actionlog_advancedtemplates.sys.ini000064400000001230151160263000023627
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

; PLG_ACTIONLOG_ADVANCEDTEMPLATES="Action Log - Regular Labs -
Advanced Template Manager"
; PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Record the actions of users
for Advanced Template Manager"
ADVANCEDTEMPLATEMANAGER="Advanced Template Manager"
advancedtemplates/language/sv-SE/sv-SE.plg_actionlog_advancedtemplates.ini000064400000003470151160263000022770
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

PLG_ACTIONLOG_ADVANCEDTEMPLATES="Aktivitetslogg - Regular Labs -
Advanced Template Manager"
PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Sparar aktiviteter för
användare av Advanced Template Manager"
ADVANCEDTEMPLATEMANAGER="Advanced Template Manager"

ADVANCEDTEMPLATEMANAGER_DESC="Med Advanced Template Manager får du
extra alternativ och funktioner till dina sidmallar."

ATP_SETTINGS="Gå till [[%1:start link%]]Mallar[[%2:end link%]] för
inställningar."
ATP_THE_COMPONENT="Komponenten Advanced Template Manager"
ATP_THE_SYSTEM_PLUGIN="Advanced Template Manager system-plugin"

ATP_ACTION_FOLDER_FILE_ACTIONS="Mapp/Fil-aktiviteter"
ATP_ACTION_TEMPLATE_COPY="Kopiera Sidmall"
ATP_ACTIONLOGS_FILE_ADDED="Användare <a
href='{accountlink}'>{username}</a> lade till <a
href='{filelink}'>{file}</a> till sidmall
{template}"
ATP_ACTIONLOGS_FILE_DELETED="Användare <a
href='{accountlink}'>{username}</a> tog bort {file}
från sidmallen {template}"
ATP_ACTIONLOGS_FILE_UPDATED="Användare <a
href='{accountlink}'>{username}</a> uppdaterade <a
href='{filelink}'>{file}</a> i sidmallen
{template}"
ATP_ACTIONLOGS_STYLE_SET_HOME="Användare <a
href='{accountlink}'>{username}</a> ändrade standard
sidmallstil till <a
href='{style_link}'>{style_name}</a>"
ATP_ACTIONLOGS_TEMPLATE_COPY="Användare <a
href='{accountlink}'>{username}</a> skpade en ny sidmall
kallad '{to_name}' (kopia av '{from_name}')"
ATP_TEMPLATE_FILE="sidmallfil"
advancedtemplates/language/sv-SE/sv-SE.plg_actionlog_advancedtemplates.sys.ini000064400000001236151160263000023603
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

PLG_ACTIONLOG_ADVANCEDTEMPLATES="Aktivitetslogg - Regular Labs -
Advanced Template Manager"
PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Sparar aktiviteter för
användare av Advanced Template Manager"
ADVANCEDTEMPLATEMANAGER="Advanced Template Manager"
advancedtemplates/language/tr-TR/tr-TR.plg_actionlog_advancedtemplates.ini000064400000003725151160263000023021
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

PLG_ACTIONLOG_ADVANCEDTEMPLATES="Action Log - Regular Labs - Advanced
Template Manager"
PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Kullanıcıların Advanced
Template Manager bileşeninde yaptığı işlemler kaydededilir."
ADVANCEDTEMPLATEMANAGER="Advanced Template Manager"

ADVANCEDTEMPLATEMANAGER_DESC="Advanced Template Manager ile temaları
denetlemek için ek seçenek ve işlevler eklenebilir."

ATP_SETTINGS="Ayarlar için [[%1:start link%]]Template Manager sistem
uygulama eki[[%2:end link%]] bölümüne bakın."
ATP_THE_COMPONENT="Advanced Template Manager bileşeni"
ATP_THE_SYSTEM_PLUGIN="Advanced Template Manager Sistem Uygulama
Eki"

ATP_ACTION_FOLDER_FILE_ACTIONS="Klasör/Dosya İşlemleri"
ATP_ACTION_TEMPLATE_COPY="Temayı Kopyalayın"
ATP_ACTIONLOGS_FILE_ADDED="<a
href='{accountlink}'>{username}</a> kullanıcısı
{template} temasına <a href='{filelink}'>{file}</a>
dosyasını ekledi"
ATP_ACTIONLOGS_FILE_DELETED="<a
href='{accountlink}'>{username}</a> kullanıcısı
{template} temasından <a
href='{filelink}'>{file}</a> dosyasını sildi"
ATP_ACTIONLOGS_FILE_UPDATED="<a
href='{accountlink}'>{username}</a> kullanıcısı
{template} temasında <a href='{filelink}'>{file}</a>
dosyasını güncelledi"
ATP_ACTIONLOGS_STYLE_SET_HOME="<a
href='{accountlink}'>{username}</a> kullanıcısı
varsayılan tema biçemini <a
href='{style_link}'>{style_name}</a> olarak
değiştirdi"
ATP_ACTIONLOGS_TEMPLATE_COPY="<a
href='{accountlink}'>{username}</a> kullanıcısı
'{to_name}' ('{from_name}' kopyası) adında bir tema
oluşturdu"
ATP_TEMPLATE_FILE="Tema Dosyası"
advancedtemplates/language/tr-TR/tr-TR.plg_actionlog_advancedtemplates.sys.ini000064400000001266151160263000023634
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

PLG_ACTIONLOG_ADVANCEDTEMPLATES="Action Log - Regular Labs - Advanced
Template Manager"
PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Kullanıcıların Advanced
Template Manager bileşeninde yaptığı işlemler kaydededilir."
ADVANCEDTEMPLATEMANAGER="Advanced Template Manager"
advancedtemplates/language/uk-UA/uk-UA.plg_actionlog_advancedtemplates.ini000064400000003712151160263000022741
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

; PLG_ACTIONLOG_ADVANCEDTEMPLATES="Action Log - Regular Labs -
Advanced Template Manager"
; PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Record the actions of users
for Advanced Template Manager"
ADVANCEDTEMPLATEMANAGER="Advanced Template Manager"

ADVANCEDTEMPLATEMANAGER_DESC="З Advanced Template Manager ви
отримаєте додаткові можливості і
функціональність для управління вашими
шаблонами."

ATP_SETTINGS="Будь ласка використовуйте
[[%1:start link%]]Template Manager[[%2:end link%]] для
налаштування."
ATP_THE_COMPONENT="компонент Advanced Template Manager"
; ATP_THE_SYSTEM_PLUGIN="the Advanced Template Manager system
plugin"

; ATP_ACTION_FOLDER_FILE_ACTIONS="Folder/File Actions"
; ATP_ACTION_TEMPLATE_COPY="Copy Template"
; ATP_ACTIONLOGS_FILE_ADDED="User <a
href='{accountlink}'>{username}</a> added <a
href='{filelink}'>{file}</a> to template
{template}"
; ATP_ACTIONLOGS_FILE_DELETED="User <a
href='{accountlink}'>{username}</a> deleted {file} from
template {template}"
; ATP_ACTIONLOGS_FILE_UPDATED="User <a
href='{accountlink}'>{username}</a> updated <a
href='{filelink}'>{file}</a> in template
{template}"
; ATP_ACTIONLOGS_STYLE_SET_HOME="User <a
href='{accountlink}'>{username}</a> changed the default
template style to <a
href='{style_link}'>{style_name}</a>"
; ATP_ACTIONLOGS_TEMPLATE_COPY="User <a
href='{accountlink}'>{username}</a> created a new
template called '{to_name}' (copy of
'{from_name}')"
; ATP_TEMPLATE_FILE="template file"
advancedtemplates/language/uk-UA/uk-UA.plg_actionlog_advancedtemplates.sys.ini000064400000001230151160263000023547
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

; PLG_ACTIONLOG_ADVANCEDTEMPLATES="Action Log - Regular Labs -
Advanced Template Manager"
; PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Record the actions of users
for Advanced Template Manager"
ADVANCEDTEMPLATEMANAGER="Advanced Template Manager"
advancedtemplates/language/vi-VN/vi-VN.plg_actionlog_advancedtemplates.ini000064400000003520151160263000022770
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

; PLG_ACTIONLOG_ADVANCEDTEMPLATES="Action Log - Regular Labs -
Advanced Template Manager"
; PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Record the actions of users
for Advanced Template Manager"
ADVANCEDTEMPLATEMANAGER="Advanced Template Manager"

ADVANCEDTEMPLATEMANAGER_DESC="Với Advanced Template Manager bạn
có các tùy chọn và tính năng thêm để quản lý template của
bạn."

ATP_SETTINGS="Vui lòng xem [[%1:start link%]]Template Manager[[%2:end
link%]] để thiết lập."
ATP_THE_COMPONENT="the Advanced Template Manager component"
; ATP_THE_SYSTEM_PLUGIN="the Advanced Template Manager system
plugin"

; ATP_ACTION_FOLDER_FILE_ACTIONS="Folder/File Actions"
; ATP_ACTION_TEMPLATE_COPY="Copy Template"
; ATP_ACTIONLOGS_FILE_ADDED="User <a
href='{accountlink}'>{username}</a> added <a
href='{filelink}'>{file}</a> to template
{template}"
; ATP_ACTIONLOGS_FILE_DELETED="User <a
href='{accountlink}'>{username}</a> deleted {file} from
template {template}"
; ATP_ACTIONLOGS_FILE_UPDATED="User <a
href='{accountlink}'>{username}</a> updated <a
href='{filelink}'>{file}</a> in template
{template}"
; ATP_ACTIONLOGS_STYLE_SET_HOME="User <a
href='{accountlink}'>{username}</a> changed the default
template style to <a
href='{style_link}'>{style_name}</a>"
; ATP_ACTIONLOGS_TEMPLATE_COPY="User <a
href='{accountlink}'>{username}</a> created a new
template called '{to_name}' (copy of
'{from_name}')"
; ATP_TEMPLATE_FILE="template file"
advancedtemplates/language/vi-VN/vi-VN.plg_actionlog_advancedtemplates.sys.ini000064400000001230151160263000023601
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

; PLG_ACTIONLOG_ADVANCEDTEMPLATES="Action Log - Regular Labs -
Advanced Template Manager"
; PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="Record the actions of users
for Advanced Template Manager"
ADVANCEDTEMPLATEMANAGER="Advanced Template Manager"
advancedtemplates/language/zh-CN/zh-CN.plg_actionlog_advancedtemplates.ini000064400000003350151160263000022731
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

PLG_ACTIONLOG_ADVANCEDTEMPLATES="操作日志 - Regular Labs -
高级模板管理器"
PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="记录高级模板管理器用户的操作"
ADVANCEDTEMPLATEMANAGER="高级模板管理器"

ADVANCEDTEMPLATEMANAGER_DESC="使用高级模板管理器,您可以使用其他选项和功能来控制模板。"

ATP_SETTINGS="有关设置,请参见[[%1:start
link%]]模板管理器[[%2:end link%]]。"
ATP_THE_COMPONENT="高级模板管理器组件"
ATP_THE_SYSTEM_PLUGIN="高级模板管理器系统插件"

ATP_ACTION_FOLDER_FILE_ACTIONS="文件夹/文件操作"
ATP_ACTION_TEMPLATE_COPY="复制模板"
ATP_ACTIONLOGS_FILE_ADDED="用户<a
href='{accountlink}'>{username}</a>将<a
href='{filelink}'>{file}</a>添加到模板{template}"
ATP_ACTIONLOGS_FILE_DELETED="用户<a
href='{accountlink}'>{username}</a>已从模板{template}中删除{file}"
ATP_ACTIONLOGS_FILE_UPDATED="用户<a
href='{accountlink}'>{username}</a>已从模板{template}中更新<a
href='{filelink}'>{file}</a>"
ATP_ACTIONLOGS_STYLE_SET_HOME="用户<a
href='{accountlink}'>{username}</a>将默认模板样式更改为<a
href='{style_link}'>{style_name}</a>"
ATP_ACTIONLOGS_TEMPLATE_COPY="用户<a
href='{accountlink}'>{username}</a>创建了一个名为“{to_name}”的新模板(“{from_name}”的副本)"
ATP_TEMPLATE_FILE="模板文件"
advancedtemplates/language/zh-CN/zh-CN.plg_actionlog_advancedtemplates.sys.ini000064400000001177151160263000023553
0ustar00;; @package         Advanced Template Manager
;; @version         3.9.5
;; 
;; @author          Peter van Westen <info@regularlabs.com>
;; @link            http://www.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://www.regularlabs.com/translate

PLG_ACTIONLOG_ADVANCEDTEMPLATES="操作日志 - Regular Labs -
高级模板管理器"
PLG_ACTIONLOG_ADVANCEDTEMPLATES_DESC="记录高级模板管理器用户的操作"
ADVANCEDTEMPLATEMANAGER="高级模板管理器"
advancedtemplates/script.install.helper.php000064400000054575151160263000015202
0ustar00<?php
/**
 * @package         Advanced Template Manager
 * @version         3.9.5
 * 
 * @author          Peter van Westen <info@regularlabs.com>
 * @link            http://www.regularlabs.com
 * @copyright       Copyright © 2021 Regular Labs All Rights Reserved
 * @license         http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL
 */

defined('_JEXEC') or die;

use Joomla\CMS\Factory as JFactory;
use Joomla\CMS\Filesystem\File as JFile;
use Joomla\CMS\Filesystem\Folder as JFolder;
use Joomla\CMS\Installer\Installer as JInstaller;
use Joomla\CMS\Language\Text as JText;

class PlgActionlogAdvancedTemplatesInstallerScriptHelper
{
	public $name              = '';
	public $alias             = '';
	public $extname           = '';
	public $extension_type    = '';
	public $plugin_folder     = 'system';
	public $module_position   = 'status';
	public $client_id         = 1;
	public $install_type      = 'install';
	public $show_message      = true;
	public $db                = null;
	public $softbreak         = null;
	public $installed_version = '';

	public function __construct(&$params)
	{
		$this->extname = $this->extname ?: $this->alias;
		$this->db      = JFactory::getDbo();
	}

	public function preflight($route, $adapter)
	{
		if ( ! in_array($route, ['install', 'update']))
		{
			return true;
		}

		JFactory::getLanguage()->load('plg_system_regularlabsinstaller',
JPATH_PLUGINS . '/system/regularlabsinstaller');

		$this->installed_version =
$this->getVersion($this->getInstalledXMLFile());

		if ($this->show_message && $this->isInstalled())
		{
			$this->install_type = 'update';
		}

//		if ($this->extension_type == 'component')
//		{
//			// Remove admin menu to prevent error on creating it again
//			$query = $this->db->getQuery(true)
//				->delete('#__menu')
//				->where($this->db->quoteName('path') . ' =
' . $this->db->quote('com-' . $this->extname))
//				->where($this->db->quoteName('client_id') . '
= 1');
//			$this->db->setQuery($query);
//			$this->db->execute();
//		}

		if ($this->onBeforeInstall($route) === false)
		{
			return false;
		}

		return true;
	}

	public function postflight($route, $adapter)
	{
		$this->removeGlobalLanguageFiles();
		$this->removeUnusedLanguageFiles();

		JFactory::getLanguage()->load($this->getPrefix() . '_' .
$this->extname, $this->getMainFolder());

		if ( ! in_array($route, ['install', 'update']))
		{
			return true;
		}

		$this->fixExtensionNames();
		$this->updateUpdateSites();
		$this->removeAdminCache();

		if ($this->onAfterInstall($route) === false)
		{
			return false;
		}

		if ($route == 'install')
		{
			$this->publishExtension();
		}

		if ($this->show_message)
		{
			$this->addInstalledMessage();
		}

		JFactory::getCache()->clean('com_plugins');
		JFactory::getCache()->clean('_system');

		return true;
	}

	public function isInstalled()
	{
		if ( ! is_file($this->getInstalledXMLFile()))
		{
			return false;
		}

		$query = $this->db->getQuery(true)
			->select($this->db->quoteName('extension_id'))
			->from('#__extensions')
			->where($this->db->quoteName('type') . ' =
' . $this->db->quote($this->extension_type))
			->where($this->db->quoteName('element') . ' =
' . $this->db->quote($this->getElementName()))
			->setLimit(1);
		$this->db->setQuery($query);
		$result = $this->db->loadResult();

		return empty($result) ? false : true;
	}

	public function getMainFolder()
	{
		switch ($this->extension_type)
		{
			case 'plugin' :
				return JPATH_PLUGINS . '/' . $this->plugin_folder .
'/' . $this->extname;

			case 'component' :
				return JPATH_ADMINISTRATOR . '/components/com_' .
$this->extname;

			case 'module' :
				return JPATH_ADMINISTRATOR . '/modules/mod_' .
$this->extname;

			case 'library' :
				return JPATH_SITE . '/libraries/' . $this->extname;
		}
	}

	public function getInstalledXMLFile()
	{
		return $this->getXMLFile($this->getMainFolder());
	}

	public function getCurrentXMLFile()
	{
		return $this->getXMLFile(__DIR__);
	}

	public function getXMLFile($folder)
	{
		switch ($this->extension_type)
		{
			case 'module' :
				return $folder . '/mod_' . $this->extname .
'.xml';

			default :
				return $folder . '/' . $this->extname . '.xml';
		}
	}

	public function uninstallExtension($extname, $type = 'plugin',
$folder = 'system', $show_message = true)
	{
		if (empty($extname))
		{
			return;
		}

		$folders = [];

		switch ($type)
		{
			case 'plugin':
				$folders[] = JPATH_PLUGINS . '/' . $folder . '/' .
$extname;
				break;

			case 'component':
				$folders[] = JPATH_ADMINISTRATOR . '/components/com_' .
$extname;
				$folders[] = JPATH_SITE . '/components/com_' . $extname;
				break;

			case 'module':
				$folders[] = JPATH_ADMINISTRATOR . '/modules/mod_' .
$extname;
				$folders[] = JPATH_SITE . '/modules/mod_' . $extname;
				break;
		}

		if ( ! $this->foldersExist($folders))
		{
			return;
		}

		$query = $this->db->getQuery(true)
			->select($this->db->quoteName('extension_id'))
			->from('#__extensions')
			->where($this->db->quoteName('element') . ' =
' . $this->db->quote($this->getElementName($type, $extname)))
			->where($this->db->quoteName('type') . ' =
' . $this->db->quote($type));

		if ($type == 'plugin')
		{
			$query->where($this->db->quoteName('folder') . '
= ' . $this->db->quote($folder));
		}

		$this->db->setQuery($query);
		$ids = $this->db->loadColumn();

		if (empty($ids))
		{
			foreach ($folders as $folder)
			{
				JFactory::getApplication()->enqueueMessage('2. Deleting: '
. $folder, 'notice');
				JFolder::delete($folder);
			}

			return;
		}

		$ignore_ids =
JFactory::getApplication()->getUserState('rl_ignore_uninstall_ids',
[]);

		if (JFactory::getApplication()->input->get('option') ==
'com_installer' &&
JFactory::getApplication()->input->get('task') ==
'remove')
		{
			// Don't attempt to uninstall extensions that are already selected
to get uninstalled by them selves
			$ignore_ids = array_merge($ignore_ids,
JFactory::getApplication()->input->get('cid', [],
'array'));
			JFactory::getApplication()->input->set('cid',
array_merge($ignore_ids, $ids));
		}

		$ids = array_diff($ids, $ignore_ids);

		if (empty($ids))
		{
			return;
		}

		$ignore_ids = array_merge($ignore_ids, $ids);
		JFactory::getApplication()->setUserState('rl_ignore_uninstall_ids',
$ignore_ids);

		foreach ($ids as $id)
		{
			$tmpInstaller = new JInstaller;
			$tmpInstaller->uninstall($type, $id);
		}

		if ($show_message)
		{
			JFactory::getApplication()->enqueueMessage(
				JText::sprintf(
					'COM_INSTALLER_UNINSTALL_SUCCESS',
					JText::_('COM_INSTALLER_TYPE_TYPE_' . strtoupper($type))
				), 'success'
			);
		}
	}

	public function foldersExist($folders = [])
	{
		foreach ($folders as $folder)
		{
			if (is_dir($folder))
			{
				return true;
			}
		}

		return false;
	}

	public function uninstallPlugin($extname, $folder = 'system',
$show_message = true)
	{
		$this->uninstallExtension($extname, 'plugin', $folder,
$show_message);
	}

	public function uninstallComponent($extname, $show_message = true)
	{
		$this->uninstallExtension($extname, 'component', null,
$show_message);
	}

	public function uninstallModule($extname, $show_message = true)
	{
		$this->uninstallExtension($extname, 'module', null,
$show_message);
	}

	public function publishExtension()
	{
		switch ($this->extension_type)
		{
			case 'plugin' :
				$this->publishPlugin();

			case 'module' :
				$this->publishModule();
		}
	}

	public function publishPlugin()
	{
		$query = $this->db->getQuery(true)
			->update('#__extensions')
			->set($this->db->quoteName('enabled') . ' =
1')
			->where($this->db->quoteName('type') . ' =
' . $this->db->quote('plugin'))
			->where($this->db->quoteName('element') . ' =
' . $this->db->quote($this->extname))
			->where($this->db->quoteName('folder') . ' =
' . $this->db->quote($this->plugin_folder));
		$this->db->setQuery($query);
		$this->db->execute();
	}

	public function publishModule()
	{
		// Get module id
		$query = $this->db->getQuery(true)
			->select($this->db->quoteName('id'))
			->from('#__modules')
			->where($this->db->quoteName('module') . ' =
' . $this->db->quote('mod_' . $this->extname))
			->where($this->db->quoteName('client_id') . ' =
' . (int) $this->client_id);
		$this->db->setQuery($query, 0, 1);
		$id = $this->db->loadResult();

		if ( ! $id)
		{
			return;
		}

		// check if module is already in the modules_menu table (meaning is is
already saved)
		$query->clear()
			->select($this->db->quoteName('moduleid'))
			->from('#__modules_menu')
			->where($this->db->quoteName('moduleid') . ' =
' . (int) $id)
			->setLimit(1);
		$this->db->setQuery($query);
		$exists = $this->db->loadResult();

		if ($exists)
		{
			return;
		}

		// Get highest ordering number in position
		$query->clear()
			->select($this->db->quoteName('ordering'))
			->from('#__modules')
			->where($this->db->quoteName('position') . ' =
' . $this->db->quote($this->module_position))
			->where($this->db->quoteName('client_id') . ' =
' . (int) $this->client_id)
			->order('ordering DESC');
		$this->db->setQuery($query, 0, 1);
		$ordering = $this->db->loadResult();
		$ordering++;

		// publish module and set ordering number
		$query->clear()
			->update('#__modules')
			->set($this->db->quoteName('published') . ' =
1')
			->set($this->db->quoteName('ordering') . ' =
' . (int) $ordering)
			->set($this->db->quoteName('position') . ' =
' . $this->db->quote($this->module_position))
			->where($this->db->quoteName('id') . ' = '
. (int) $id);
		$this->db->setQuery($query);
		$this->db->execute();

		// add module to the modules_menu table
		$query->clear()
			->insert('#__modules_menu')
			->columns([$this->db->quoteName('moduleid'),
$this->db->quoteName('menuid')])
			->values((int) $id . ', 0');
		$this->db->setQuery($query);
		$this->db->execute();
	}

	public function addInstalledMessage()
	{
		JFactory::getApplication()->enqueueMessage(
			JText::sprintf(
				$this->install_type == 'update' ?
'RLI_THE_EXTENSION_HAS_BEEN_UPDATED_SUCCESSFULLY' :
'RLI_THE_EXTENSION_HAS_BEEN_INSTALLED_SUCCESSFULLY',
				'<strong>' . JText::_($this->name) .
'</strong>',
				'<strong>' . $this->getVersion() .
'</strong>',
				$this->getFullType()
			), 'success'
		);
	}

	public function getPrefix()
	{
		switch ($this->extension_type)
		{
			case 'plugin':
				return JText::_('plg_' .
strtolower($this->plugin_folder));

			case 'component':
				return JText::_('com');

			case 'module':
				return JText::_('mod');

			case 'library':
				return JText::_('lib');

			default:
				return $this->extension_type;
		}
	}

	public function getElementName($type = null, $extname = null)
	{
		$type    = is_null($type) ? $this->extension_type : $type;
		$extname = is_null($extname) ? $this->extname : $extname;

		switch ($type)
		{
			case 'component' :
				return 'com_' . $extname;

			case 'module' :
				return 'mod_' . $extname;

			case 'plugin' :
			default:
				return $extname;
		}
	}

	public function getFullType()
	{
		return JText::_('RLI_' . strtoupper($this->getPrefix()));
	}

	public function getVersion($file = '')
	{
		$file = $file ?: $this->getCurrentXMLFile();

		if ( ! is_file($file))
		{
			return '';
		}

		$xml = JInstaller::parseXMLInstallFile($file);

		if ( ! $xml || ! isset($xml['version']))
		{
			return '';
		}

		return $xml['version'];
	}

	public function isNewer()
	{
		if ( ! $this->installed_version)
		{
			return true;
		}

		$package_version = $this->getVersion();

		return version_compare($this->installed_version, $package_version,
'<=');
	}

	public function canInstall()
	{
		// The extension is not installed yet
		if ( ! $this->installed_version)
		{
			return true;
		}

		// The free version is installed. So any version is ok to install
		if (strpos($this->installed_version, 'PRO') === false)
		{
			return true;
		}

		// Current package is a pro version, so all good
		if (strpos($this->getVersion(), 'PRO') !== false)
		{
			return true;
		}

		JFactory::getLanguage()->load($this->getPrefix() . '_' .
$this->extname, __DIR__);

		JFactory::getApplication()->enqueueMessage(JText::_('RLI_ERROR_PRO_TO_FREE'),
'error');

		JFactory::getApplication()->enqueueMessage(
			html_entity_decode(
				JText::sprintf(
					'RLI_ERROR_UNINSTALL_FIRST',
					'<a href="https://www.regularlabs.com/extensions/' .
$this->alias . '" target="_blank">',
					'</a>',
					JText::_($this->name)
				)
			), 'error'
		);

		return false;
	}

	/*
	 * Fixes incorrectly formed versions because of issues in old packager
	 */
	public function fixFileVersions($file)
	{
		if (is_array($file))
		{
			foreach ($file as $f)
			{
				self::fixFileVersions($f);
			}

			return;
		}

		if ( ! is_string($file) || ! is_file($file))
		{
			return;
		}

		$contents = file_get_contents($file);

		if (
			strpos($contents, 'FREEFREE') === false
			&& strpos($contents, 'FREEPRO') === false
			&& strpos($contents, 'PROFREE') === false
			&& strpos($contents, 'PROPRO') === false
		)
		{
			return;
		}

		$contents = str_replace(
			['FREEFREE', 'FREEPRO', 'PROFREE',
'PROPRO'],
			['FREE', 'PRO', 'FREE', 'PRO'],
			$contents
		);

		JFile::write($file, $contents);
	}

	public function onBeforeInstall($route)
	{
		if ( ! $this->canInstall())
		{
			return false;
		}

		return true;
	}

	public function onAfterInstall($route)
	{
		return true;
	}

	public function delete($files = [])
	{
		foreach ($files as $file)
		{
			if (is_dir($file))
			{
				JFolder::delete($file);
			}

			if (is_file($file))
			{
				JFile::delete($file);
			}
		}
	}

	public function fixAssetsRules()
	{
		$query = $this->db->getQuery(true)
			->select($this->db->quoteName('rules'))
			->from('#__assets')
			->where($this->db->quoteName('title') . ' =
' . $this->db->quote('com_' . $this->extname))
			->setLimit(1);
		$this->db->setQuery($query);
		$rules = $this->db->loadResult();

		$rules = json_decode($rules);

		if (empty($rules))
		{
			return;
		}

		foreach ($rules as $key => $value)
		{
			if ( ! empty($value))
			{
				continue;
			}

			unset($rules->$key);
		}

		$rules = json_encode($rules);

		$query = $this->db->getQuery(true)
			->update($this->db->quoteName('#__assets'))
			->set($this->db->quoteName('rules') . ' = '
. $this->db->quote($rules))
			->where($this->db->quoteName('title') . ' =
' . $this->db->quote('com_' . $this->extname));
		$this->db->setQuery($query);
		$this->db->execute();
	}

	private function fixExtensionNames()
	{
		switch ($this->extension_type)
		{
			case 'module' :
				$this->fixModuleNames();
		}
	}

	private function fixModuleNames()
	{
		// Get module id
		$query = $this->db->getQuery(true)
			->select($this->db->quoteName('id'))
			->from('#__modules')
			->where($this->db->quoteName('module') . ' =
' . $this->db->quote('mod_' . $this->extname))
			->where($this->db->quoteName('client_id') . ' =
' . (int) $this->client_id);
		$this->db->setQuery($query, 0, 1);
		$module_id = $this->db->loadResult();

		if (empty($module_id))
		{
			return;
		}

		$title = 'Regular Labs - ' . JText::_($this->name);

		$query->clear()
			->update('#__modules')
			->set($this->db->quoteName('title') . ' = '
. $this->db->quote($title))
			->where($this->db->quoteName('id') . ' = '
. (int) $module_id)
			->where($this->db->quoteName('title') . ' LIKE
' . $this->db->quote('NoNumber%'));
		$this->db->setQuery($query);
		$this->db->execute();

		// Fix module assets

		// Get asset id
		$query = $this->db->getQuery(true)
			->select($this->db->quoteName('id'))
			->from('#__assets')
			->where($this->db->quoteName('name') . ' =
' . $this->db->quote('com_modules.module.' . (int)
$module_id))
			->where($this->db->quoteName('title') . ' LIKE
' . $this->db->quote('NoNumber%'))
			->setLimit(1);
		$this->db->setQuery($query);
		$asset_id = $this->db->loadResult();

		if (empty($asset_id))
		{
			return;
		}

		$query->clear()
			->update('#__assets')
			->set($this->db->quoteName('title') . ' = '
. $this->db->quote($title))
			->where($this->db->quoteName('id') . ' = '
. (int) $asset_id);
		$this->db->setQuery($query);
		$this->db->execute();
	}

	private function updateUpdateSites()
	{
		$this->removeOldUpdateSites();
		$this->updateNamesInUpdateSites();
		$this->updateHttptoHttpsInUpdateSites();
		$this->removeDuplicateUpdateSite();
		$this->updateDownloadKey();
	}

	private function removeOldUpdateSites()
	{
		$query = $this->db->getQuery(true)
			->select($this->db->quoteName('update_site_id'))
			->from('#__update_sites')
			->where($this->db->quoteName('location') . '
LIKE ' . $this->db->quote('nonumber.nl%'))
			->where($this->db->quoteName('location') . '
LIKE ' . $this->db->quote('%e=' . $this->alias .
'%'));
		$this->db->setQuery($query, 0, 1);
		$id = $this->db->loadResult();

		if ( ! $id)
		{
			return;
		}

		$query->clear()
			->delete('#__update_sites')
			->where($this->db->quoteName('update_site_id') .
' = ' . (int) $id);
		$this->db->setQuery($query);
		$this->db->execute();

		$query->clear()
			->delete('#__update_sites_extensions')
			->where($this->db->quoteName('update_site_id') .
' = ' . (int) $id);
		$this->db->setQuery($query);
		$this->db->execute();
	}

	private function updateNamesInUpdateSites()
	{
		$name = JText::_($this->name);
		if ($this->alias != 'extensionmanager')
		{
			$name = 'Regular Labs - ' . $name;
		}

		$query = $this->db->getQuery(true)
			->update('#__update_sites')
			->set($this->db->quoteName('name') . ' = '
. $this->db->quote($name))
			->where($this->db->quoteName('location') . '
LIKE ' .
$this->db->quote('%download.regularlabs.com%'))
			->where($this->db->quoteName('location') . '
LIKE ' . $this->db->quote('%e=' . $this->alias .
'%'));
		$this->db->setQuery($query);
		$this->db->execute();
	}

	private function updateHttptoHttpsInUpdateSites()
	{
		$query = $this->db->getQuery(true)
			->update('#__update_sites')
			->set($this->db->quoteName('location') . ' =
REPLACE('
				. $this->db->quoteName('location') . ', '
				. $this->db->quote('http://') . ', '
				. $this->db->quote('https://')
				. ')')
			->where($this->db->quoteName('location') . '
LIKE ' .
$this->db->quote('http://download.regularlabs.com%'));
		$this->db->setQuery($query);
		$this->db->execute();
	}

	private function removeDuplicateUpdateSite()
	{
		// First check to see if there is a pro entry

		$query = $this->db->getQuery(true)
			->select($this->db->quoteName('update_site_id'))
			->from('#__update_sites')
			->where($this->db->quoteName('location') . '
LIKE ' .
$this->db->quote('%download.regularlabs.com%'))
			->where($this->db->quoteName('location') . '
LIKE ' . $this->db->quote('%e=' . $this->alias .
'%'))
			->where($this->db->quoteName('location') . ' NOT
LIKE ' . $this->db->quote('%pro=1%'))
			->setLimit(1);
		$this->db->setQuery($query);
		$id = $this->db->loadResult();

		// Otherwise just get the first match
		if ( ! $id)
		{
			$query->clear()
				->select($this->db->quoteName('update_site_id'))
				->from('#__update_sites')
				->where($this->db->quoteName('location') . '
LIKE ' .
$this->db->quote('%download.regularlabs.com%'))
				->where($this->db->quoteName('location') . '
LIKE ' . $this->db->quote('%e=' . $this->alias .
'%'));
			$this->db->setQuery($query, 0, 1);
			$id = $this->db->loadResult();

			// Remove pro=1 from the found update site
			$query->clear()
				->update('#__update_sites')
				->set($this->db->quoteName('location')
					. ' = replace(' .
$this->db->quoteName('location') . ', ' .
$this->db->quote('&pro=1') . ', ' .
$this->db->quote('') . ')')
				->where($this->db->quoteName('update_site_id') .
' = ' . (int) $id);
			$this->db->setQuery($query);
			$this->db->execute();
		}

		if ( ! $id)
		{
			return;
		}

		$query->clear()
			->select($this->db->quoteName('update_site_id'))
			->from('#__update_sites')
			->where($this->db->quoteName('location') . '
LIKE ' .
$this->db->quote('%download.regularlabs.com%'))
			->where($this->db->quoteName('location') . '
LIKE ' . $this->db->quote('%e=' . $this->alias .
'%'))
			->where($this->db->quoteName('update_site_id') .
' != ' . $id);
		$this->db->setQuery($query);
		$ids = $this->db->loadColumn();

		if (empty($ids))
		{
			return;
		}

		$query->clear()
			->delete('#__update_sites')
			->where($this->db->quoteName('update_site_id') .
' IN (' . implode(',', $ids) . ')');
		$this->db->setQuery($query);
		$this->db->execute();

		$query->clear()
			->delete('#__update_sites_extensions')
			->where($this->db->quoteName('update_site_id') .
' IN (' . implode(',', $ids) . ')');
		$this->db->setQuery($query);
		$this->db->execute();
	}

	// Save the download key from the Regular Labs Extension Manager config to
the update sites
	private function updateDownloadKey()
	{
		$query = $this->db->getQuery(true)
			->select($this->db->quoteName('params'))
			->from('#__extensions')
			->where($this->db->quoteName('element') . ' =
' . $this->db->quote('com_regularlabsmanager'));
		$this->db->setQuery($query);
		$params = $this->db->loadResult();

		if ( ! $params)
		{
			return;
		}

		$params = json_decode($params);

		if ( ! isset($params->key))
		{
			return;
		}

		// Add the key on all regularlabs.com urls
		$query->clear()
			->update('#__update_sites')
			->set($this->db->quoteName('extra_query') . ' =
' . $this->db->quote('k=' . $params->key))
			->where($this->db->quoteName('location') . '
LIKE ' .
$this->db->quote('%download.regularlabs.com%'));
		$this->db->setQuery($query);
		$this->db->execute();
	}

	private function removeAdminCache()
	{
		$this->delete([JPATH_ADMINISTRATOR . '/cache/regularlabs']);
		$this->delete([JPATH_ADMINISTRATOR . '/cache/nonumber']);
	}

	private function removeGlobalLanguageFiles()
	{
		if ($this->extension_type == 'library')
		{
			return;
		}

		$language_files = JFolder::files(JPATH_ADMINISTRATOR .
'/language', '\.' . $this->getPrefix() .
'_' . $this->extname . '\.', true, true);

		// Remove override files
		foreach ($language_files as $i => $language_file)
		{
			if (strpos($language_file, '/overrides/') === false)
			{
				continue;
			}

			unset($language_files[$i]);
		}

		if (empty($language_files))
		{
			return;
		}

		JFile::delete($language_files);
	}

	private function removeUnusedLanguageFiles()
	{
		if ($this->extension_type == 'library')
		{
			return;
		}

		if ( ! is_file(__DIR__ . '/language'))
		{
			return;
		}

		$installed_languages = array_merge(
			is_file(JPATH_SITE . '/language') ?
JFolder::folders(JPATH_SITE . '/language') : [],
			is_file(JPATH_ADMINISTRATOR . '/language') ?
JFolder::folders(JPATH_ADMINISTRATOR . '/language') : []
		);

		$languages = array_diff(
			JFolder::folders(__DIR__ . '/language') ?: [],
			$installed_languages
		);

		$delete_languages = [];

		foreach ($languages as $language)
		{
			$delete_languages[] = $this->getMainFolder() . '/language/'
. $language;
		}

		if (empty($delete_languages))
		{
			return;
		}

		// Remove folders
		$this->delete($delete_languages);
	}
}
advancedtemplates/script.install.php000064400000001521151160263000013703
0ustar00<?php
/**
 * @package         Advanced Template Manager
 * @version         3.9.5
 * 
 * @author          Peter van Westen <info@regularlabs.com>
 * @link            http://www.regularlabs.com
 * @copyright       Copyright © 2021 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 PlgActionlogAdvancedTemplatesInstallerScript extends
PlgActionlogAdvancedTemplatesInstallerScriptHelper
{
	public $name           = 'ADVANCEDTEMPLATEMANAGER';
	public $alias          = 'advancedtemplates';
	public $extension_type = 'plugin';
	public $plugin_folder  = 'actionlog';

	public function uninstall($adapter)
	{
		$this->uninstallComponent($this->extname);
		$this->uninstallPlugin($this->extname, 'system');
	}
}
joomla/joomla.php000064400000071760151160263000010024 0ustar00<?php
/**
 * @package     Joomla.Plugins
 * @subpackage  System.actionlogs
 *
 * @copyright   Copyright (C) 2005 - 2020 Open Source Matters, Inc. All
rights reserved.
 * @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)
		);

		$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)
			);

			$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)
		);

		$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.xml000064400000001461151160263000010024 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>Copyright (C) 2005 - 2020 Open Source Matters. All rights
reserved.</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>