Your IP : 216.73.216.224


Current Path : /var/www/html/plugins/kunena/kunena/src/Helper/
Upload File :
Current File : /var/www/html/plugins/kunena/kunena/src/Helper/KunenaProfileKunena.php

<?php

/**
 * Kunena Plugin
 *
 * @package         Kunena.Plugins
 * @subpackage      Kunena
 *
 * @copyright       Copyright (C) 2008 - 2026 Kunena Team. All rights reserved.
 * @license         https://www.gnu.org/copyleft/gpl.html GNU/GPL
 * @link            https://www.kunena.org
 **/

namespace Kunena\Forum\Plugin\Kunena\Kunena\Helper;

\defined('_JEXEC') or die();

use Joomla\CMS\Access\Access;
use Joomla\CMS\Factory;
use Joomla\Database\DatabaseDriver;
use Joomla\Registry\Registry;
use Kunena\Forum\Libraries\Error\KunenaError;
use Kunena\Forum\Libraries\Factory\KunenaFactory;
use Kunena\Forum\Libraries\Integration\KunenaProfile;
use Kunena\Forum\Libraries\Layout\KunenaLayout;
use Kunena\Forum\Libraries\Route\KunenaRoute;
use Kunena\Forum\Libraries\User\KunenaUser;
use Kunena\Forum\Libraries\User\KunenaUserHelper;

/**
 * Class KunenaProfile
 *
 * @since   Kunena 5.0
 */
class KunenaProfileKunena extends KunenaProfile
{
    /**
     * @param   Registry  $params  params
     *
     * @since   Kunena 5.0
     */
    public function __construct(Registry $params)
    {
        $this->params = $params;
    }

    /**
     * Function to get User List URL
     * 
     * @param   string  $action  action
     * @param   bool    $xhtml   xhtml
     *
     * @return  string|false
     * @since   Kunena 5.0
     */
    public function getUserListURL(string $action = '', bool $xhtml = \true): string|false
    {
        $config = KunenaFactory::getConfig();
        $my     = Factory::getApplication()->getIdentity();

        if ($config->userlistAllowed == 0 && $my->id == 0) {
            return \false;
        }

        return KunenaRoute::_('index.php?option=com_kunena&view=user&layout=list' . $action, $xhtml);
    }

    /**
     * Function to get Top Hits
     * 
     * @param   int  $limit  limit
     *
     * @return  array
     * @since   Kunena 6.0
     * @throws  \Exception
     */
    public function getTopHits(int $limit = 0): array
    {
        /** @var DatabaseDriver $db */
        $db    = Factory::getContainer()->get('DatabaseDriver');
        $query = $db->createQuery();
        $query->select($db->quoteName(['u.id', 'ku.uhits'], [null, 'count']));
        $query->from($db->quoteName(['#__kunena_users'], ['ku']));
        $query->join('INNER', $db->quoteName('#__users', 'u'), $db->quoteName('u.id') . ' = ' . $db->quoteName('ku.userid'));
        $query->where($db->quoteName('ku.uhits') . ' > 0');
        $query->order($db->quoteName('ku.uhits') . ' DESC');

        if (KunenaFactory::getConfig()->superAdminUserlist) {
            $filter = Access::getUsersByGroup(8);
            $query->where('u.id NOT IN (' . implode(',', $filter) . ')');
        }

        $query->setLimit($limit);
        $db->setQuery($query);

        try {
            $top = $db->loadObjectList() ?? [];
        } catch (\RuntimeException $e) {
            KunenaError::displayDatabaseError($e);
        }

        return $top;
    }

    /**
     * Function to get the User Profile
     * 
     * @param   KunenaLayout  $view    view
     * @param   Registry      $params  params
     *
     * @return  string
     *
     * @since   Kunena 5.0
     */
    public function showProfile(KunenaLayout $view, Registry $params): string
    {
        return '';
    }

    /**
     * Function to get User Profile Edit URL
     * 
     * @param   int   $userid  userid
     * @param   bool  $xhtml   xhtml
     *
     * @return  string|false
     * @since   Kunena 5.0
     */
    public function getEditProfileURL(int $userid, bool $xhtml = true): string|false
    {
        $avatartab = '&avatartab=1';

        return $this->getProfileURL($userid, 'edit', $xhtml, $avatartab);
    }

    /**
     * Function to get User Profile URL
     * 
     * @param   int     $userid     userid
     * @param   string  $task       task
     * @param   bool    $xhtml      xhtml
     * @param   string  $avatarTab  avatarTab
     *
     * @return  string|false
     * @since   Kunena 5.0
     * @throws  \Exception
     */
    public function getProfileURL(int $userid, $task = '', bool $xhtml = true, string $avatarTab = ''): string|false
    {
        if ($userid == 0) {
            return false;
        }

        if (!($userid instanceof KunenaUser)) {
            $user = KunenaUserHelper::get($userid);
        }

        if ($user === false) {
            return false;
        }

        $userid = "&userid={$user->userid}";

        if ($task && $task != 'edit') {
            throw new \Exception('Sorry, Kunena 6.0 no support url with func in method getProfileURL class KunenaProfileKunena');
        }

        $layout = $task ? '&layout=' . $task : '';

        if ($layout) {
            return KunenaRoute::_("index.php?option=com_kunena&view=user{$layout}{$userid}{$avatarTab}", $xhtml);
        }

        return KunenaRoute::getUserUrl($user, $xhtml);
    }

    /**
     * Get the name of the user from this profile
     *
     * @param   KunenaUser  $user         user
     * @param   string      $visitorname  name
     * @param   bool        $escape       escape
     *
     * @return  string
     * @since   Kunena 5.2
     * @throws  \Exception
     * @see     KunenaProfile::getProfileName()
     */
    public function getProfileName(KunenaUser $user, string $visitorname = '', bool $escape = true): string
    {
        $config = KunenaFactory::getConfig();

        if (!$user->userid && !$user->name) {
            $name = $visitorname;
        } else {
            $name = $config->username ? $user->username : $user->name;
        }

        if ($escape) {
            $name = \htmlspecialchars($name, \ENT_COMPAT, 'UTF-8');
        }

        return $name;
    }
}