| Server IP : 54.36.91.62 / Your IP : 216.73.217.112 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/plats-individuels/lyon/plugins/system/nrframework/NRFramework/Widgets/ |
Upload File : |
<?php
/**
* @author Tassos Marinos <info@tassos.gr>
* @link https://www.tassos.gr
* @copyright Copyright © 2024 Tassos All Rights Reserved
* @license GNU GPLv3 <http://www.gnu.org/licenses/gpl.html> or later
*/
namespace NRFramework\Widgets;
defined('_JEXEC') or die;
use Joomla\Filesystem\Folder;
class Helper
{
/**
* This is a map with all widgets used for caching the widget's class name
*
* @var array
*/
public static $widgets_map = [];
/**
* Renders a Widget and returns
*
* @param array $options A list of attributes passed to the layout
*
* @return string The widget's final HTML layout
*/
public static function render($widget_name, $options = [])
{
if (!$widgetClass = self::find($widget_name))
{
return;
}
$class = __NAMESPACE__ . '\\' . $widgetClass;
// ensure class exists
if (!class_exists($class))
{
return;
}
return (new $class($options))->render();
}
/**
* Return the real class name of a widget by a case-insensitive name.
*
* @param string $name The widget's name
*
* @return mixed Null when the class name is not found, string when the class name is found.
*/
public static function find($name)
{
if (!$name)
{
return;
}
$name = strtolower($name);
if (empty(self::$widgets_map) || !isset(self::$widgets_map[$name]))
{
$widgetClasses = Folder::files(__DIR__);
foreach ($widgetClasses as $widgetClass)
{
$widgetClass = str_replace('.php', '', $widgetClass);
self::$widgets_map[strtolower($widgetClass)] = $widgetClass;
}
}
return isset(self::$widgets_map[$name]) ? self::$widgets_map[$name] : null;
}
/**
* Returns all layout overrides of a widget by its name.
*
* @param string $name
*
* @return array
*/
public static function getLayoutOverrides($name = '')
{
if (!$name)
{
return;
}
$path = self::getLayoutOverridePath($name);
if (!is_dir($path))
{
return;
}
$labels = array_diff(scandir($path), ['.', '..', '.DS_Store']);
$values = array_map(function($value) {
return rtrim($value, '.php');
}, $labels);
return array_combine($values, $labels);
}
/**
* Returns the layout override path of a widget by its name.
*
* @param string $name
*
* @return string
*/
public static function getLayoutOverridePath($name = '')
{
if (!$name)
{
return;
}
return implode(DIRECTORY_SEPARATOR, [JPATH_SITE, 'templates', \NRFramework\Helpers\Template::getTemplateName(), 'html', 'tassos', 'widgets', $name]);
}
}