Your IP : 216.73.216.50


Current Path : /proc/1908984/root/proc/1908984/root/home/digilove/www/41423/
Upload File :
Current File : //proc/1908984/root/proc/1908984/root/home/digilove/www/41423/PluginHelper.php.tar

home/digilove/public_html/libraries/src/Plugin/PluginHelper.php000064400000021300152345126770020720 0ustar00<?php
/**
 * Joomla! Content Management System
 *
 * @copyright  (C) 2005 Open Source Matters, Inc. <https://www.joomla.org>
 * @license    GNU General Public License version 2 or later; see LICENSE.txt
 */

namespace Joomla\CMS\Plugin;

defined('JPATH_PLATFORM') or die;

/**
 * Plugin helper class
 *
 * @since  1.5
 */
abstract class PluginHelper
{
	/**
	 * A persistent cache of the loaded plugins.
	 *
	 * @var    array
	 * @since  1.7
	 */
	protected static $plugins = null;

	/**
	 * Get the path to a layout from a Plugin
	 *
	 * @param   string  $type    Plugin type
	 * @param   string  $name    Plugin name
	 * @param   string  $layout  Layout name
	 *
	 * @return  string  Layout path
	 *
	 * @since   3.0
	 */
	public static function getLayoutPath($type, $name, $layout = 'default')
	{
		$template = \JFactory::getApplication()->getTemplate();
		$defaultLayout = $layout;

		if (strpos($layout, ':') !== false)
		{
			// Get the template and file name from the string
			$temp = explode(':', $layout);
			$template = $temp[0] === '_' ? $template : $temp[0];
			$layout = $temp[1];
			$defaultLayout = $temp[1] ?: 'default';
		}

		// Build the template and base path for the layout
		$tPath = JPATH_THEMES . '/' . $template . '/html/plg_' . $type . '_' . $name . '/' . $layout . '.php';
		$bPath = JPATH_PLUGINS . '/' . $type . '/' . $name . '/tmpl/' . $defaultLayout . '.php';
		$dPath = JPATH_PLUGINS . '/' . $type . '/' . $name . '/tmpl/default.php';

		// If the template has a layout override use it
		if (file_exists($tPath))
		{
			return $tPath;
		}
		elseif (file_exists($bPath))
		{
			return $bPath;
		}
		else
		{
			return $dPath;
		}
	}

	/**
	 * Get the plugin data of a specific type if no specific plugin is specified
	 * otherwise only the specific plugin data is returned.
	 *
	 * @param   string  $type    The plugin type, relates to the subdirectory in the plugins directory.
	 * @param   string  $plugin  The plugin name.
	 *
	 * @return  mixed  An array of plugin data objects, or a plugin data object.
	 *
	 * @since   1.5
	 */
	public static function getPlugin($type, $plugin = null)
	{
		$result = array();
		$plugins = static::load();

		// Find the correct plugin(s) to return.
		if (!$plugin)
		{
			foreach ($plugins as $p)
			{
				// Is this the right plugin?
				if ($p->type === $type)
				{
					$result[] = $p;
				}
			}
		}
		else
		{
			foreach ($plugins as $p)
			{
				// Is this plugin in the right group?
				if ($p->type === $type && $p->name === $plugin)
				{
					$result = $p;
					break;
				}
			}
		}

		return $result;
	}

	/**
	 * Checks if a plugin is enabled.
	 *
	 * @param   string  $type    The plugin type, relates to the subdirectory in the plugins directory.
	 * @param   string  $plugin  The plugin name.
	 *
	 * @return  boolean
	 *
	 * @since   1.5
	 */
	public static function isEnabled($type, $plugin = null)
	{
		$result = static::getPlugin($type, $plugin);

		return !empty($result);
	}

	/**
	 * Loads all the plugin files for a particular type if no specific plugin is specified
	 * otherwise only the specific plugin is loaded.
	 *
	 * @param   string             $type        The plugin type, relates to the subdirectory in the plugins directory.
	 * @param   string             $plugin      The plugin name.
	 * @param   boolean            $autocreate  Autocreate the plugin.
	 * @param   \JEventDispatcher  $dispatcher  Optionally allows the plugin to use a different dispatcher.
	 *
	 * @return  boolean  True on success.
	 *
	 * @since   1.5
	 */
	public static function importPlugin($type, $plugin = null, $autocreate = true, \JEventDispatcher $dispatcher = null)
	{
		static $loaded = array();

		// Check for the default args, if so we can optimise cheaply
		$defaults = false;

		if ($plugin === null && $autocreate === true && $dispatcher === null)
		{
			$defaults = true;
		}

		// Ensure we have a dispatcher now so we can correctly track the loaded plugins
		$dispatcher = $dispatcher ?: \JEventDispatcher::getInstance();

		// Get the dispatcher's hash to allow plugins to be registered to unique dispatchers
		$dispatcherHash = spl_object_hash($dispatcher);

		if (!isset($loaded[$dispatcherHash]))
		{
			$loaded[$dispatcherHash] = array();
		}

		if (!$defaults || !isset($loaded[$dispatcherHash][$type]))
		{
			$results = null;

			// Load the plugins from the database.
			$plugins = static::load();

			// Get the specified plugin(s).
			for ($i = 0, $t = count($plugins); $i < $t; $i++)
			{
				if ($plugins[$i]->type === $type && ($plugin === null || $plugins[$i]->name === $plugin))
				{
					static::import($plugins[$i], $autocreate, $dispatcher);
					$results = true;
				}
			}

			// Bail out early if we're not using default args
			if (!$defaults)
			{
				return $results;
			}

			$loaded[$dispatcherHash][$type] = $results;
		}

		return $loaded[$dispatcherHash][$type];
	}

	/**
	 * Loads the plugin file.
	 *
	 * @param   object             $plugin      The plugin.
	 * @param   boolean            $autocreate  True to autocreate.
	 * @param   \JEventDispatcher  $dispatcher  Optionally allows the plugin to use a different dispatcher.
	 *
	 * @return  void
	 *
	 * @since   1.5
	 * @deprecated  4.0  Use PluginHelper::import() instead
	 */
	protected static function _import($plugin, $autocreate = true, \JEventDispatcher $dispatcher = null)
	{
		static::import($plugin, $autocreate, $dispatcher);
	}

	/**
	 * Loads the plugin file.
	 *
	 * @param   object             $plugin      The plugin.
	 * @param   boolean            $autocreate  True to autocreate.
	 * @param   \JEventDispatcher  $dispatcher  Optionally allows the plugin to use a different dispatcher.
	 *
	 * @return  void
	 *
	 * @since   3.2
	 */
	protected static function import($plugin, $autocreate = true, \JEventDispatcher $dispatcher = null)
	{
		static $paths = array();

		// Ensure we have a dispatcher now so we can correctly track the loaded paths
		$dispatcher = $dispatcher ?: \JEventDispatcher::getInstance();

		// Get the dispatcher's hash to allow paths to be tracked against unique dispatchers
		$dispatcherHash = spl_object_hash($dispatcher);

		if (!isset($paths[$dispatcherHash]))
		{
			$paths[$dispatcherHash] = array();
		}

		$plugin->type = preg_replace('/[^A-Z0-9_\.-]/i', '', $plugin->type);
		$plugin->name = preg_replace('/[^A-Z0-9_\.-]/i', '', $plugin->name);

		$path = JPATH_PLUGINS . '/' . $plugin->type . '/' . $plugin->name . '/' . $plugin->name . '.php';

		if (!isset($paths[$dispatcherHash][$path]))
		{
			if (file_exists($path))
			{
				require_once $path;

				$paths[$dispatcherHash][$path] = true;

				if ($autocreate)
				{
					$className = 'Plg' . str_replace('-', '', $plugin->type) . $plugin->name;

					if ($plugin->type == 'editors-xtd')
					{
						// This type doesn't follow the convention
						$className = 'PlgEditorsXtd' . $plugin->name;

						if (!class_exists($className))
						{
							$className = 'PlgButton' . $plugin->name;
						}
					}

					if (class_exists($className))
					{
						// Load the plugin from the database.
						if (!isset($plugin->params))
						{
							// Seems like this could just go bye bye completely
							$plugin = static::getPlugin($plugin->type, $plugin->name);
						}

						// Instantiate and register the plugin.
						new $className($dispatcher, (array) $plugin);
					}
				}
			}
			else
			{
				$paths[$dispatcherHash][$path] = false;
			}
		}
	}

	/**
	 * Loads the published plugins.
	 *
	 * @return  array  An array of published plugins
	 *
	 * @since   1.5
	 * @deprecated  4.0  Use PluginHelper::load() instead
	 */
	protected static function _load()
	{
		return static::load();
	}

	/**
	 * Loads the published plugins.
	 *
	 * @return  array  An array of published plugins
	 *
	 * @since   3.2
	 */
	protected static function load()
	{
		if (static::$plugins !== null)
		{
			return static::$plugins;
		}

		$levels = implode(',', \JFactory::getUser()->getAuthorisedViewLevels());

		/** @var \JCacheControllerCallback $cache */
		$cache = \JFactory::getCache('com_plugins', 'callback');

		$loader = function () use ($levels)
		{
			$db = \JFactory::getDbo();
			$query = $db->getQuery(true)
				->select(
					$db->quoteName(
						array(
							'folder',
							'element',
							'params',
							'extension_id'
						),
						array(
							'type',
							'name',
							'params',
							'id'
						)
					)
				)
				->from('#__extensions')
				->where('enabled = 1')
				->where('type = ' . $db->quote('plugin'))
				->where('state IN (0,1)')
				->where('access IN (' . $levels . ')')
				->order('ordering');
			$db->setQuery($query);

			return $db->loadObjectList();
		};

		try
		{
			static::$plugins = $cache->get($loader, array(), md5($levels), false);
		}
		catch (\JCacheException $cacheException)
		{
			static::$plugins = $loader();
		}

		return static::$plugins;
	}
}
home/digilove/public_html/110/plugins/content/aimyindexnow/helpers/PluginHelper.php000064400000011202152431274000024512 0ustar00<?php
/* Copyright (c) 2022-2024 Aimy Extensions, Netzum Sorglos Software GmbH
 *
 * https://www.aimy-extensions.com/
 *
 * License: GNU GPLv2, see LICENSE.txt within distribution and/or
 *          http://www.aimy-extensions.com/software-license.html
 */
 namespace Aimy\IndexNow\Helpers; defined( '_JEXEC' ) or die(); use Joomla\CMS\Factory; use Joomla\CMS\Uri\Uri; use Joomla\CMS\Filesystem\File; use Joomla\CMS\Language\Text; abstract class PluginHelper { static public function getElapsedMinutes( $stamp ) { return floor( ( time() - intval( $stamp ) ) / 60 ); } static public function getAbsoluteUrl( $relUrl ) { $u = Uri::getInstance( Uri::root() ); return sprintf( '%s://%s/%s', $u->getScheme(), $u->getHost(), ltrim( $relUrl, '/' ) ); } static public function getWebsiteIpAddress() { $host = Uri::getInstance( Uri::root() )->getHost(); $ip = gethostbyname( $host ); if ( $ip ) { return $ip; } $dns_6 = dns_get_record( $host, DNS_AAAA ); if ( $dns_6 && is_array( $dns_6 ) ) { foreach ( $dns_6 as $rec ) { if ( isset( $rec[ 'type' ] ) && $rec[ 'type' ] == 'AAAA' ) { return $rec[ 'ipv6' ]; } } } return false; } static public function getKeyfileName( $key ) { return $key . '.txt'; } static public function writeKeyfileIfNotExistent( $key ) { $path = rtrim( JPATH_ROOT, '/' ) . '/' . self::getKeyfileName( $key ); if ( file_exists( $path ) ) { return false; } if ( File::write( $path, "$key\n" ) ) { return true; } throw new \RuntimeException( $path . ': Failed to write keyfile' ); } static public function checkKey( $key ) { if ( empty( $key ) ) { throw new \RuntimeException( '<b>Aimy IndexNow</b>: ' . Text::sprintf( 'AIMY_IN_ERR_NO_KEY_SET_X', self::getPluginOptionsURL() ) ); } if ( strlen( $key ) < 8 or strlen( $key ) > 128 or ! preg_match( '/^[a-z0-9-]+$/i', $key ) or preg_match( '#^(robots|README|index|htaccess)$#', $key ) ) { throw new \RuntimeException( '<b>Aimy IndexNow</b>: ' . Text::sprintf( 'AIMY_IN_ERR_KEY_INVALID_X', self::getPluginOptionsURL() ) ); } } static public function isJoomla3() { return ( strpos( strVal( JVERSION ), '3.' ) === 0 ); } static public function inBackend() { if ( self::isJoomla3() ) { return Factory::getApplication()->isAdmin(); } return Factory::getApplication()->isClient( 'administrator' ); } static public function inFrontend() { if ( self::isJoomla3() ) { return Factory::getApplication()->isSite(); } return Factory::getApplication()->isClient( 'site' ); } static public function isFrontendEditing() { if ( self::inFrontend() && Factory::getConfig()->get( 'frontediting', false ) ) { $user = Factory::getUser(); return ( $user->guest != 1 ); } } static public function getCtxComponent( $context ) { $ctx = explode( '.', $context, 2 ); if ( ! is_array( $ctx ) or count( $ctx ) !== 2 ) { throw new \RuntimeException( 'Failed to parse context: ' . $context ); } return $ctx[ 0 ]; } static public function getCtxView( $context ) { $ctx = explode( '.', $context, 2 ); if ( ! is_array( $ctx ) or count( $ctx ) !== 2 ) { throw new \RuntimeException( 'Failed to parse context: ' . $context ); } return $ctx[ 1 ]; } static public function getPluginOptionsURL() { $id = false; try { $db = Factory::getDbo(); $q = $db->getQuery( true ); $q->select( $db->quoteName( array( 'extension_id' ) ) ) ->from( $db->quoteName( '#__extensions' ) ) ->where( $db->quoteName( 'element' ) . ' = ' . $db->quote( 'aimyindexnow' ) ); $db->setQuery( $q ); $id = $db->loadResult(); } catch ( \Exception $e ) { } if ( $id ) { return 'index.php?option=com_plugins&amp;task=plugin.edit&amp;' . 'extension_id=' . $id; } return 'index.php?option=com_plugins&amp;view=plugins'; } static public function jsonToObject( $json ) { $obj = false; $flags = 0; if ( defined( 'JSON_THROW_ON_ERROR' ) ) { $flags += JSON_THROW_ON_ERROR; } try { $obj = \json_decode( $json, false, 512, $flags ); } catch ( \Exception $e ) { $obj = false; } return $obj; } static public function isLocalIpAddress( $ip ) { $v = filter_var( $ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE ); return ($v === false); } static public function getComMediaImagePath() { if ( ! function_exists( 'json_decode' ) ) { return 'images'; } $params = false; try { $db = Factory::getDbo(); $q = $db->getQuery( true ); $q->select( $db->quoteName( array( 'params' ) ) ) ->from( $db->quoteName( '#__extensions' ) ) ->where( $db->quoteName( 'element' ) . ' = ' . $db->quote( 'com_media' ) ); $db->setQuery( $q ); $params = $db->loadResult(); } catch ( \Exception $e ) { } if ( empty( $params ) or ! is_string( $params ) ) { return 'images'; } $params = json_decode( $params ); if ( empty( $params ) or ! isset( $params->image_path ) or empty( $params->image_path ) ) { return 'images'; } return trim( $params->image_path, '/ ' ); } }