AnonSec Shell
Server IP : 46.105.57.169  /  Your IP : 216.73.217.8
Web Server : Apache
System : Linux webd003.cluster120.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64
User : maitricfuz ( 93378)
PHP Version : 8.4.22
Disable Function : _dyuweyrj4,_dyuweyrj4r,dl
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/maitricfuz/www/saint-martin-lg/plugins/system/sourcerer/src/Extension/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /home/maitricfuz/www/saint-martin-lg/plugins/system/sourcerer/src/Extension/Sourcerer.php
<?php
/**
 * @package         Sourcerer
 * @version         13.0.2
 * 
 * @author          Peter van Westen <info@regularlabs.com>
 * @link            https://regularlabs.com
 * @copyright       Copyright © 2026 Regular Labs All Rights Reserved
 * @license         GNU General Public License version 2 or later
 */

namespace RegularLabs\Plugin\System\Sourcerer\Extension;

use RegularLabs\Library\Document as RL_Document;
use RegularLabs\Library\Html as RL_Html;
use RegularLabs\Library\Indexer as RL_Indexer;
use RegularLabs\Library\Plugin\System as RL_SystemPlugin;
use RegularLabs\Library\Protect as RL_Protect;
use RegularLabs\Plugin\System\Sourcerer\Area;
use RegularLabs\Plugin\System\Sourcerer\Clean;
use RegularLabs\Plugin\System\Sourcerer\Params;
use RegularLabs\Plugin\System\Sourcerer\Protect;
use RegularLabs\Plugin\System\Sourcerer\Replace;
use RegularLabs\Plugin\System\Sourcerer\Security;

defined('_JEXEC') or die;

final class Sourcerer extends RL_SystemPlugin
{
    public    $_can_disable_by_url   = false;
    public    $_lang_prefix          = 'SRC';
    protected $_finalize_final_html = true;
    protected $_index_as_guest       = true;

    public function init(): void
    {
        if (method_exists(RL_Protect::class, 'enableSourcererTagProtection'))
        {
            RL_Protect::enableSourcererTagProtection();
        }
    }

    protected function changeDocumentBuffer(string &$buffer): bool
    {
        if ( ! RL_Document::isHtml())
        {
            return false;
        }

        return Area::tag($buffer, 'component');
    }

    protected function changeFinalHtmlOutput(string &$html): bool
    {
        $params = Params::get();

        [$pre, $body, $post] = RL_Html::getBody($html);

        Protect::_($body);
        Replace::replaceInTheRest($body);

        Clean::cleanFinalHtmlOutput($body);
        RL_Protect::unprotect($body);

        $params->enable_in_head
            ? Replace::replace($pre, 'head')
            : Clean::cleanTagsFromHead($pre);

        $html = $pre . $body . $post;

        return true;
    }

    /**
     * @param object $module
     * @param array  $params
     */
    protected function handleOnAfterRenderModule(object &$module, array &$params): void
    {
        if ( ! isset($module->content))
        {
            return;
        }

        Replace::replace($module->content, 'module', output_stage: 'Module');
    }

    protected function finalizeHtmlOutput(string &$html): void
    {
        if (method_exists(RL_Protect::class, 'unprotectSourcererTags'))
        {
            RL_Protect::unprotectSourcererTags($html);
        }

        foreach (['Content', 'Module', 'Final', ''] as $stage)
        {
            $name = 'Sourcerer Output' . ($stage === '' ? '' : ': ' . $stage);

            RL_Protect::removeCommentTags($html, $name);
        }
    }

    protected function handleOnContentPrepare(
        string $area,
        string $context,
        mixed  &$article,
        mixed  &$params,
        int    $page = 0
    ): bool
    {
        self::prepareArticle($area, $context, $article);

        return false;
    }

    private static function prepareArticle(string $area, string $context, mixed &$article): void
    {
        $src_params = Params::get();

        $area = isset($article->created_by) ? 'articles' : 'other';

        $remove = $src_params->remove_from_search
            && (RL_Indexer::isContext($context)
                || in_array($context, ['com_search.search', 'com_search.search.article'], true));

        $security = isset($article->created_by)
            ? Security::getForArticle($article)
            : Security::getForArea($area);

        self::replaceArticleField($article, 'description', $area, $remove, $security);
        self::replaceArticleField($article, 'title', $area, $remove, $security);

        // Don't handle article texts in category list view
        if (RL_Document::isCategoryList($context))
        {
            return;
        }

        if (self::replaceArticleField($article, 'text', $area, $remove, $security))
        {
            // Don't also do stuff on introtext/fulltext if text is set
            return;
        }

        self::replaceArticleField($article, 'introtext', $area, $remove, $security);
        self::replaceArticleField($article, 'fulltext', $area, $remove, $security);
    }

    private static function replaceArticleField(
        object|string $article,
        string        $field,
        string        $area,
        bool          $remove,
        object        $security
    ): bool
    {
        if ( ! is_object($article) || ! isset($article->{$field}) || ! is_string($article->{$field}))
        {
            return false;
        }

        Replace::replace($article->{$field}, $area, $article, $remove, $security, 'Content');

        return true;
    }
}

Anon7 - 2022
AnonSec Team