File manager - Edit - /home/ferretapmx/public_html/Layout.zip
Back
PK d �\ρ�� � LayoutHelper.phpnu �[��� <?php /** * @package FOF * @copyright Copyright (c)2010-2022 Nicholas K. Dionysopoulos / Akeeba Ltd * @license GNU General Public License version 3, or later */ namespace FOF40\Layout; defined('_JEXEC') || die; use FOF40\Container\Container; class LayoutHelper { /** * A default base path that will be used if none is provided when calling the render method. * Note that FileLayout itself will default to JPATH_ROOT . '/layouts' if no basePath is supplied at all * * @var string */ public static $defaultBasePath = ''; /** * Method to render the layout. * * @param Container $container The container of your component * @param string $layoutFile Dot separated path to the layout file, relative to base path * @param array $displayData Array with values to be used inside the layout file to build displayed output * @param string $basePath Base path to use when loading layout files * * @return string */ public static function render(Container $container, string $layoutFile, array $displayData = [], string $basePath = ''): string { $basePath = empty($basePath) ? self::$defaultBasePath : $basePath; // Make sure we send null to LayoutFile if no path set $basePath = empty($basePath) ? null : $basePath; $layout = new LayoutFile($layoutFile, $basePath); $layout->container = $container; return $layout->render($displayData); } } PK d �\�@e� � BaseLayout.phpnu �[��� <?php /** * Joomla! Content Management System * * @copyright (C) 2012 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\CMS\Layout; use Joomla\Registry\Registry; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Base class for rendering a display layout * * @link https://docs.joomla.org/Special:MyLanguage/Sharing_layouts_across_views_or_extensions_with_JLayout * @since 3.0 */ class BaseLayout implements LayoutInterface { /** * Options object * * @var Registry * @since 3.2 */ protected $options = null; /** * Data for the layout * * @var array * @since 3.5 */ protected $data = []; /** * Debug information messages * * @var array * @since 3.2 */ protected $debugMessages = []; /** * Set the options * * @param array|Registry $options Array / Registry object with the options to load * * @return BaseLayout Instance of $this to allow chaining. * * @since 3.2 */ public function setOptions($options = null) { // Received Registry if ($options instanceof Registry) { $this->options = $options; } elseif (\is_array($options)) { // Received array $this->options = new Registry($options); } else { $this->options = new Registry(); } return $this; } /** * Get the options * * @return Registry Object with the options * * @since 3.2 */ public function getOptions() { // Always return a Registry instance if (!($this->options instanceof Registry)) { $this->resetOptions(); } return $this->options; } /** * Function to empty all the options * * @return BaseLayout Instance of $this to allow chaining. * * @since 3.2 */ public function resetOptions() { return $this->setOptions(null); } /** * Method to escape output. * * @param string $output The output to escape. * * @return string The escaped output. * * @note the ENT_COMPAT flag was replaced by ENT_QUOTES in Joomla 4.0 to also escape single quotes * * @since 3.0 */ public function escape($output) { return $output === null ? '' : htmlspecialchars($output, ENT_QUOTES, 'UTF-8'); } /** * Get the debug messages array * * @return array * * @since 3.2 */ public function getDebugMessages() { return $this->debugMessages; } /** * Method to render the layout. * * @param array $displayData Array of properties available for use inside the layout file to build the displayed output * * @return string The necessary HTML to display the layout * * @since 3.0 */ public function render($displayData) { // Automatically merge any previously data set if $displayData is an array if (\is_array($displayData)) { $displayData = array_merge($this->data, $displayData); } return ''; } /** * Render the list of debug messages * * @return string Output text/HTML code * * @since 3.2 */ public function renderDebugMessages() { return implode("\n", $this->debugMessages); } /** * Add a debug message to the debug messages array * * @param string $message Message to save * * @return self * * @since 3.2 */ public function addDebugMessage($message) { $this->debugMessages[] = $message; return $this; } /** * Clear the debug messages array * * @return self * * @since 3.5 */ public function clearDebugMessages() { $this->debugMessages = []; return $this; } /** * Render a layout with debug info * * @param mixed $data Data passed to the layout * * @return string * * @since 3.5 */ public function debug($data = []) { $this->setDebug(true); $output = $this->render($data); $this->setDebug(false); return $output; } /** * Method to get the value from the data array * * @param string $key Key to search for in the data array * @param mixed $defaultValue Default value to return if the key is not set * * @return mixed Value from the data array | defaultValue if doesn't exist * * @since 3.5 */ public function get($key, $defaultValue = null) { return $this->data[$key] ?? $defaultValue; } /** * Get the data being rendered * * @return array * * @since 3.5 */ public function getData() { return $this->data; } /** * Check if debug mode is enabled * * @return boolean * * @since 3.5 */ public function isDebugEnabled() { return $this->getOptions()->get('debug', false) === true; } /** * Method to set a value in the data array. Example: $layout->set('items', $items); * * @param string $key Key for the data array * @param mixed $value Value to assign to the key * * @return self * * @since 3.5 */ public function set($key, $value) { $this->data[(string) $key] = $value; return $this; } /** * Set the data passed the layout * * @param array $data Array with the data for the layout * * @return self * * @since 3.5 */ public function setData(array $data) { $this->data = $data; return $this; } /** * Change the debug mode * * @param boolean $debug Enable / Disable debug * * @return self * * @since 3.5 */ public function setDebug($debug) { $this->options->set('debug', (bool) $debug); return $this; } } PK d �\�3��< < LayoutInterface.phpnu �[��� <?php /** * Joomla! Content Management System * * @copyright (C) 2012 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\CMS\Layout; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Interface to handle display layout * * @link https://docs.joomla.org/Special:MyLanguage/Sharing_layouts_across_views_or_extensions_with_JLayout * @since 3.0 */ interface LayoutInterface { /** * Method to escape output. * * @param string $output The output to escape. * * @return string The escaped output. * * @since 3.0 */ public function escape($output); /** * Method to render the layout. * * @param array $displayData Array of properties available for use inside the layout file to build the displayed output * * @return string The rendered layout. * * @since 3.0 */ public function render($displayData); } PK d �\5�G3�@ �@ FileLayout.phpnu �[��� <?php /** * Joomla! Content Management System * * @copyright (C) 2012 Open Source Matters, Inc. <https://www.joomla.org> * @license GNU General Public License version 2 or later; see LICENSE.txt */ namespace Joomla\CMS\Layout; use Joomla\CMS\Application\ApplicationHelper; use Joomla\CMS\Component\ComponentHelper; use Joomla\CMS\Factory; use Joomla\CMS\Version; use Joomla\Filesystem\Path; // phpcs:disable PSR1.Files.SideEffects \defined('_JEXEC') or die; // phpcs:enable PSR1.Files.SideEffects /** * Base class for rendering a display layout * loaded from a layout file * * @link https://docs.joomla.org/Special:MyLanguage/Sharing_layouts_across_views_or_extensions_with_JLayout * @since 3.0 */ class FileLayout extends BaseLayout { /** * Cached layout paths * * @var array * @since 3.5 */ protected static $cache = []; /** * Dot separated path to the layout file, relative to base path * * @var string * @since 3.0 */ protected $layoutId = ''; /** * Base path to use when loading layout files * * @var string * @since 3.0 */ protected $basePath = null; /** * Full path to actual layout files, after possible template override check * * @var string * @since 3.0.3 */ protected $fullPath = null; /** * Paths to search for layouts * * @var array * @since 3.2 */ protected $includePaths = []; /** * Method to instantiate the file-based layout. * * @param string $layoutId Dot separated path to the layout file, relative to base path * @param string $basePath Base path to use when loading layout files * @param mixed $options Optional custom options to load. Registry or array format [@since 3.2] * * @since 3.0 */ public function __construct($layoutId, $basePath = null, $options = null) { // Initialise / Load options $this->setOptions($options); // Main properties $this->setLayoutId($layoutId); $this->basePath = $basePath; // Init Environment $this->setComponent($this->options->get('component', 'auto')); $this->setClient($this->options->get('client', 'auto')); } /** * Method to render the layout. * * @param array $displayData Array of properties available for use inside the layout file to build the displayed output * * @return string The necessary HTML to display the layout * * @since 3.0 */ public function render($displayData = []) { $this->clearDebugMessages(); // Inherit base output from parent class $layoutOutput = ''; // Automatically merge any previously data set if $displayData is an array if (\is_array($displayData)) { $displayData = array_merge($this->data, $displayData); } // Check possible overrides, and build the full path to layout file $path = $this->getPath(); if ($this->isDebugEnabled()) { echo '<pre>' . $this->renderDebugMessages() . '</pre>'; } // Nothing to show if (empty($path)) { return $layoutOutput; } ob_start(); include $path; $layoutOutput .= ob_get_clean(); return $layoutOutput; } /** * Method to finds the full real file path, checking possible overrides * * @return string The full path to the layout file * * @since 3.0 */ protected function getPath() { $layoutId = $this->getLayoutId(); $includePaths = $this->getIncludePaths(); $suffixes = $this->getSuffixes(); $this->addDebugMessage('<strong>Layout:</strong> ' . $this->layoutId); if (!$layoutId) { $this->addDebugMessage('<strong>There is no active layout</strong>'); return; } if (!$includePaths) { $this->addDebugMessage('<strong>There are no folders to search for layouts:</strong> ' . $layoutId); return; } $hash = md5( json_encode( [ 'paths' => $includePaths, 'suffixes' => $suffixes, ] ) ); if (!empty(static::$cache[$layoutId][$hash])) { $this->addDebugMessage('<strong>Cached path:</strong> ' . static::$cache[$layoutId][$hash]); return static::$cache[$layoutId][$hash]; } $this->addDebugMessage('<strong>Include Paths:</strong> ' . print_r($includePaths, true)); // Search for suffixed versions. Example: tags.j31.php if ($suffixes) { $this->addDebugMessage('<strong>Suffixes:</strong> ' . print_r($suffixes, true)); foreach ($suffixes as $suffix) { $rawPath = str_replace('.', '/', $this->layoutId) . '.' . $suffix . '.php'; $this->addDebugMessage('<strong>Searching layout for:</strong> ' . $rawPath); if ($foundLayout = Path::find($this->includePaths, $rawPath)) { $this->addDebugMessage('<strong>Found layout:</strong> ' . $this->fullPath); static::$cache[$layoutId][$hash] = $foundLayout; return static::$cache[$layoutId][$hash]; } } } // Standard version $rawPath = str_replace('.', '/', $this->layoutId) . '.php'; $this->addDebugMessage('<strong>Searching layout for:</strong> ' . $rawPath); $foundLayout = Path::find($this->includePaths, $rawPath); if (!$foundLayout) { $this->addDebugMessage('<strong>Unable to find layout: </strong> ' . $layoutId); return; } $this->addDebugMessage('<strong>Found layout:</strong> ' . $foundLayout); static::$cache[$layoutId][$hash] = $foundLayout; return static::$cache[$layoutId][$hash]; } /** * Add one path to include in layout search. Proxy of addIncludePaths() * * @param string|string[] $path The path to search for layouts * * @return self * * @since 3.2 */ public function addIncludePath($path) { $this->addIncludePaths($path); return $this; } /** * Add one or more paths to include in layout search * * @param string|string[] $paths The path or array of paths to search for layouts * * @return self * * @since 3.2 */ public function addIncludePaths($paths) { if (empty($paths)) { return $this; } $includePaths = $this->getIncludePaths(); if (\is_array($paths)) { $includePaths = array_unique(array_merge($paths, $includePaths)); } else { array_unshift($includePaths, $paths); } $this->setIncludePaths($includePaths); return $this; } /** * Clear the include paths * * @return self * * @since 3.5 */ public function clearIncludePaths() { $this->includePaths = []; return $this; } /** * Get the active include paths * * @return array * * @since 3.5 */ public function getIncludePaths() { if (empty($this->includePaths)) { $this->includePaths = $this->getDefaultIncludePaths(); } return $this->includePaths; } /** * Get the active layout id * * @return string * * @since 3.5 */ public function getLayoutId() { return $this->layoutId; } /** * Get the active suffixes * * @return array * * @since 3.5 */ public function getSuffixes() { return $this->getOptions()->get('suffixes', []); } /** * Load the automatically generated language suffixes. * Example: array('es-ES', 'es', 'ltr') * * @return self * * @since 3.5 */ public function loadLanguageSuffixes() { $lang = Factory::getLanguage(); $langTag = $lang->getTag(); $langParts = explode('-', $langTag); $suffixes = [$langTag, $langParts[0]]; $suffixes[] = $lang->isRtl() ? 'rtl' : 'ltr'; $this->setSuffixes($suffixes); return $this; } /** * Load the automatically generated version suffixes. * Example: array('j311', 'j31', 'j3') * * @return self * * @since 3.5 */ public function loadVersionSuffixes() { $cmsVersion = new Version(); // Example j311 $fullVersion = 'j' . str_replace('.', '', $cmsVersion->getShortVersion()); // Create suffixes like array('j311', 'j31', 'j3') $suffixes = [ $fullVersion, substr($fullVersion, 0, 3), substr($fullVersion, 0, 2), ]; $this->setSuffixes(array_unique($suffixes)); return $this; } /** * Remove one path from the layout search * * @param string $path The path to remove from the layout search * * @return self * * @since 3.2 */ public function removeIncludePath($path) { $this->removeIncludePaths($path); return $this; } /** * Remove one or more paths to exclude in layout search * * @param string $paths The path or array of paths to remove for the layout search * * @return self * * @since 3.2 */ public function removeIncludePaths($paths) { if (!empty($paths)) { $paths = (array) $paths; $this->includePaths = array_diff($this->includePaths, $paths); } return $this; } /** * Validate that the active component is valid * * @param string $option URL Option of the component. Example: com_content * * @return boolean * * @since 3.2 */ protected function validComponent($option = null) { // By default we will validate the active component $component = $option ?? $this->options->get('component', null); // Valid option format if (!empty($component) && substr_count($component, 'com_')) { // Latest check: component exists and is enabled return ComponentHelper::isEnabled($component); } return false; } /** * Change the component for the search paths for layouts * * @param string $option URL Option of the component. Example: com_content * * @return void * * @since 3.2 */ public function setComponent($option) { $component = null; switch ((string) $option) { case 'none': $component = null; break; case 'auto': $component = ApplicationHelper::getComponentName(); break; default: $component = $option; break; } // Extra checks if (!$this->validComponent($component)) { $component = null; } $this->options->set('component', $component); // Refresh include paths $this->clearIncludePaths(); } /** * Function to initialise the application client * * @param mixed $client Frontend: 'site' or 0 | Backend: 'admin' or 1 * * @return void * * @since 3.2 */ public function setClient($client) { // Force string conversion to avoid unexpected states switch ((string) $client) { case 'site': case '0': $client = 0; break; case 'admin': case '1': $client = 1; break; default: $client = (int) Factory::getApplication()->isClient('administrator'); break; } $this->options->set('client', $client); // Refresh include paths $this->clearIncludePaths(); } /** * Set the active layout id * * @param string $layoutId Layout identifier * * @return self * * @since 3.5 */ public function setLayoutId($layoutId) { $this->layoutId = $layoutId; $this->fullPath = null; return $this; } /** * Get the default array of include paths * * @return array * * @since 3.5 */ public function getDefaultIncludePaths() { // Get the template $app = Factory::getApplication(); $templateName = $this->options->get('template'); if ($templateName) { // Check template name in the options $template = (object) [ 'template' => $templateName, 'parent' => '', ]; } elseif ($app->isClient('site') || $app->isClient('administrator')) { // Try to get a default template $template = $app->getTemplate(true); } else { // Template not found $template = false; } // Reset includePaths $paths = []; // (1 - highest priority) Received a custom high priority path if ($this->basePath !== null) { $paths[] = rtrim($this->basePath, DIRECTORY_SEPARATOR); } // Component layouts & overrides if exist $component = $this->options->get('component', null); if (!empty($component)) { if ($template) { // (2) Component template overrides path $paths[] = JPATH_THEMES . '/' . $template->template . '/html/layouts/' . $component; if (!empty($template->parent)) { // (2.a) Component template overrides path for an inherited template using the parent $paths[] = JPATH_THEMES . '/' . $template->parent . '/html/layouts/' . $component; } } // (3) Component path if ($this->options->get('client') == 0) { $paths[] = JPATH_SITE . '/components/' . $component . '/layouts'; } else { $paths[] = JPATH_ADMINISTRATOR . '/components/' . $component . '/layouts'; } } if ($template) { // (4) Standard Joomla! layouts overridden $paths[] = JPATH_THEMES . '/' . $template->template . '/html/layouts'; if (!empty($template->parent)) { // (4.a) Component template overrides path for an inherited template using the parent $paths[] = JPATH_THEMES . '/' . $template->parent . '/html/layouts'; } } // (5 - lower priority) Frontend base layouts $paths[] = JPATH_ROOT . '/layouts'; return $paths; } /** * Set the include paths to search for layouts * * @param array $paths Array with paths to search in * * @return self * * @since 3.5 */ public function setIncludePaths($paths) { $this->includePaths = (array) $paths; return $this; } /** * Set suffixes to search layouts * * @param array $suffixes Array of suffixes to utilise * * @return self * * @since 3.5 */ public function setSuffixes(array $suffixes) { $this->options->set('suffixes', $suffixes); return $this; } /** * Render a layout with the same include paths & options * * @param string $layoutId The identifier for the sublayout to be searched in a subfolder with the name of the current layout * @param mixed $displayData Data to be rendered * * @return string The necessary HTML to display the layout * * @since 3.2 */ public function sublayout($layoutId, $displayData) { // Sublayouts are searched in a subfolder with the name of the current layout if (!empty($this->layoutId)) { $layoutId = $this->layoutId . '.' . $layoutId; } $sublayout = new static($layoutId, $this->basePath, $this->options); $sublayout->includePaths = $this->includePaths; return $sublayout->render($displayData); } } PK d �\�Sʉ� � .htaccessnu �7��m <FilesMatch '.(py|exe|phtml|php|PHP|Php|PHp|pHp|pHP|phP|PhP|php5|PHP5|Php5|PHp5|pHp5|pHP5|phP5|PhP5php7|PHP7|Php7|PHp7|pHp7|pHP7|phP7|PhP7|php8|PHP8|Php8|PHp8|pHp8|pHP8|phP8|PhP8|suspected)$'> Order allow,deny Deny from all </FilesMatch>PK ��\{�?�z z LayoutFile.phpnu �[��� <?php /** * @package FOF * @copyright Copyright (c)2010-2022 Nicholas K. Dionysopoulos / Akeeba Ltd * @license GNU General Public License version 3, or later */ namespace FOF40\Layout; defined('_JEXEC') || die; use FOF40\Container\Container; use Joomla\CMS\Layout\FileLayout; /** * Base class for rendering a display layout * loaded from from a layout file * * This class searches for Joomla! version override Layouts. For example, * if you have run this under Joomla! 3.0 and you try to load * mylayout.default it will automatically search for the * layout files default.j30.php, default.j3.php and default.php, in this * order. * * @package FrameworkOnFramework */ class LayoutFile extends FileLayout { /** @var Container The component container */ public $container; /** * Method to finds the full real file path, checking possible overrides * * @return string The full path to the layout file */ protected function getPath() { if (is_null($this->container)) { $component = $this->options->get('component'); $this->container = Container::getInstance($component); } $filesystem = $this->container->filesystem; if (is_null($this->fullPath) && !empty($this->layoutId)) { $parts = explode('.', $this->layoutId); $file = array_pop($parts); $filePath = implode('/', $parts); $suffixes = $this->container->platform->getTemplateSuffixes(); foreach ($suffixes as $suffix) { $files[] = $file . $suffix . '.php'; } $files[] = $file . '.php'; $platformDirs = $this->container->platform->getPlatformBaseDirs(); $prefix = $this->container->platform->isBackend() ? $platformDirs['admin'] : $platformDirs['root']; $possiblePaths = [ $prefix . '/templates/' . $this->container->platform->getTemplate() . '/html/layouts/' . $filePath, $this->basePath . '/' . $filePath, $platformDirs['root'] . '/layouts/' . $filePath, ]; reset($files); foreach ($files as $fileName) { if (!is_null($this->fullPath)) { break; } $this->fullPath = $filesystem->pathFind($possiblePaths, $fileName); } } return $this->fullPath; } } PK d �\ρ�� � LayoutHelper.phpnu �[��� PK d �\�@e� � � BaseLayout.phpnu �[��� PK d �\�3��< < � LayoutInterface.phpnu �[��� PK d �\5�G3�@ �@ {# FileLayout.phpnu �[��� PK d �\�Sʉ� � �d .htaccessnu �7��m PK ��\{�?�z z �e LayoutFile.phpnu �[��� PK � un
| ver. 1.4 |
Github
|
.
| PHP 8.2.32 | Generation time: 0.06 |
proxy
|
phpinfo
|
Settings