AnonSec Shell
Server IP : 54.36.91.62  /  Your IP : 216.73.217.117
Web Server : Apache
System : Linux webm013.cluster127.gra.hosting.ovh.net 5.15.206-ovh-vps-grsec-zfs-classid #1 SMP Fri May 15 02:41:25 UTC 2026 x86_64
User : coopiak ( 151928)
PHP Version : 8.3.23
Disable Function : _dyuweyrj4,_dyuweyrj4r,dl
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/coopiak/amisdesseniors-fr/voscatalogues/administrator/manifests/packages/yootheme/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /home/coopiak/amisdesseniors-fr/voscatalogues/administrator/manifests/packages/yootheme/script.php
<?php

use Joomla\CMS\Factory;
use Joomla\CMS\Installer\InstallerAdapter;
use Joomla\CMS\Installer\InstallerScriptInterface;
use Joomla\Database\DatabaseDriver;
use Joomla\DI\Container;
use Joomla\DI\ServiceProviderInterface;
use Joomla\Database\DatabaseInterface;
use Joomla\Database\DatabaseQuery;

return new class implements InstallerScriptInterface, ServiceProviderInterface {
    protected InstallerAdapter $adapter;

    /**
     * @var DatabaseDriver
     */
    protected DatabaseInterface $database;

    public function register(Container $container): void
    {
        $this->database = $container->get(DatabaseInterface::class);
    }

    public function install(InstallerAdapter $adapter): bool
    {
        return true;
    }

    public function update(InstallerAdapter $adapter): bool
    {
        return true;
    }

    public function uninstall(InstallerAdapter $adapter): bool
    {
        return true;
    }

    public function preflight(string $type, InstallerAdapter $adapter): bool
    {
        return $this->requirePHP('7.4');
    }

    public function postflight(string $type, InstallerAdapter $adapter): bool
    {
        if (!in_array($type, ['install', 'update'])) {
            return true;
        }

        $this->adapter = $adapter;

        $this->patchUpdateSite();
        $this->removeOldUpdateSites();

        return true;
    }

    protected function patchUpdateSite(): void
    {
        $site = $this->getUpdateSite($this->getExtensionId());
        $server = $this->adapter->manifest->updateservers->children()[0];

        if (!$site) {
            return;
        }

        // set name and location
        $site->name = strval($server['name']);
        $site->location = trim(strval($server));

        // set installer api key
        if (!$site->extra_query && ($key = $this->getInstallerApikey())) {
            $site->extra_query = "key={$key}";
        }

        $this->database->updateObject('#__update_sites', $site, 'update_site_id');
    }

    protected function getExtensionId(): ?int
    {
        return \Closure::bind(fn() => $this->currentExtensionId, $this->adapter, $this->adapter)();
    }

    protected function getInstallerApikey(): ?string
    {
        /** @var DatabaseQuery $query */
        $query = $this->database->createQuery();
        $query
            ->select('params')
            ->from('#__extensions')
            ->where("type = {$this->database->quote('plugin')}")
            ->where("folder = {$this->database->quote('installer')}")
            ->where("element = {$this->database->quote('yootheme')}");

        if ($params = $this->database->setQuery($query)->loadResult()) {
            $params = json_decode($params);
        }

        return $params->apikey ?? null;
    }

    protected function getUpdateSite(?int $extensionId): ?object
    {
        /** @var DatabaseQuery $query */
        $query = $this->database->createQuery();
        $query
            ->select('s.*')
            ->from('#__update_sites AS s')
            ->innerJoin('#__update_sites_extensions AS se ON se.update_site_id = s.update_site_id')
            ->where("se.extension_id = {$extensionId}");

        return $extensionId ? $this->database->setQuery($query)->loadObject() : null;
    }

    /**
     * @param list<int> $siteIds
     */
    protected function removeUpdateSites(array $siteIds): void
    {
        foreach (['#__update_sites', '#__update_sites_extensions'] as $table) {
            /** @var DatabaseQuery $query */
            $query = $this->database->createQuery();
            $query->delete($table)->where('update_site_id IN (' . implode(',', $siteIds) . ')');

            $this->database->setQuery($query)->execute();
        }
    }

    protected function removeOldUpdateSites(): void
    {
        /** @var DatabaseQuery $query */
        $query = $this->database->createQuery();
        $query
            ->select('update_site_id')
            ->from('#__update_sites')
            ->where("location LIKE '%/yootheme.com/api/update/yootheme_j33.xml'");

        if ($ids = $this->database->setQuery($query)->loadColumn()) {
            $this->removeUpdateSites($ids);
        }
    }

    protected function requirePHP(string $version): bool
    {
        if (version_compare(PHP_VERSION, $version, '>=')) {
            return true;
        }

        Factory::getApplication()->enqueueMessage(
            "<p>You need PHP {$version} or later to install the template.</p>",
            'warning',
        );

        return false;
    }
};

Anon7 - 2022
AnonSec Team