Current Directory: /home/astoriaah/www/administrator/components/com_sh404sef/classes
Viewing File: /home/astoriaah/www/administrator/components/com_sh404sef/classes/baseextplugin.php
<?php
/**
* sh404SEF - SEO extension for Joomla!
*
* @author Yannick Gaultier
* @copyright (c) Yannick Gaultier - Weeblr llc - 2022
* @package sh404SEF
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL
* @version 4.24.1.4308
* @date 2022-05-31
*/
// Security check to ensure this file is being included by a parent file.
if (!defined('_JEXEC'))
{
die('Direct Access to this location is not allowed.');
}
jimport('joomla.plugin.plugin');
/**
* Base extension handler plugin
*
* @author Yannick Gaultier
*/
class Sh404sefClassBaseextplugin extends JPlugin
{
const TYPE_DEFAULT = 0;
const TYPE_SKIP = 1;
const TYPE_SIMPLE = 2;
const TYPE_SH404SEF_ROUTER = 0; // do not change, must be 0 for compat reason
const TYPE_JOOMLA_ROUTER = 1; // do not change, must be 1 for compat reason
const TYPE_JOOMSEF_ROUTER = 30;
const TYPE_ACESEF_ROUTER = 40;
const TYPE_NO_ROUTER = 100;
const TYPE_OPENSEF_ROUTER = 101;
protected $_componentType = null;
protected $_pluginType = null;
protected $_option = '';
protected $_optionNoCom = '';
protected $_extName = '';
protected $_config = null;
protected $_sefPluginPath = null;
protected $_metaPluginPath = null;
protected $_version = '';
public function __construct($option, $config)
{
$this->_option = $option;
$this->_optionNoCom = str_replace('com_', '', $this->_option);
$this->_config = $config;
$this->_pluginType = self::TYPE_NO_ROUTER;
}
public function getComponentType()
{
if (is_null($this->_componentType))
{
if (sh404SEF_CHECK_COMP_IS_INSTALLED
&& !shFileExists(sh404SEF_ABS_PATH . 'components/' . $this->_option . '/' . $this->_optionNoCom . '.php')
)
{
// component is not installed, don't try to SEF URLs for it
$this->_componentType = self::TYPE_SKIP;
}
else
{
switch ($this->_optionNoCom)
{
// leave urls non-sef
case (in_array($this->_optionNoCom, $this->_config->skip)):
$this->_componentType = self::TYPE_SKIP;
break;
// use simple encoding
case (in_array($this->_optionNoCom, $this->_config->nocache)):
$this->_componentType = self::TYPE_SIMPLE;
break;
// default handler, full sef
default:
$this->_componentType = self::TYPE_DEFAULT;
break;
}
}
// now validate that type: if required plugin is not available,
// we'll need to switch back to "simple
if ($this->_componentType == self::TYPE_DEFAULT)
{
$path = $this->getSefPluginPath();
if (empty($path))
{
$this->_componentType = self::TYPE_SIMPLE;
}
}
}
return $this->_componentType;
}
public function getPluginType()
{
return $this->_pluginType;
}
public function getName()
{
return $this->_extName;
}
public function getVersion()
{
return $this->_version;
}
public function getSefPluginPath($nonSefVars = array())
{
if (is_null($this->_sefPluginPath))
{
$this->_findSefPluginPath($nonSefVars);
}
return $this->_sefPluginPath;
}
public function getMetaPluginPath($nonSefUrl = '')
{
if (is_null($this->_metaPluginPath))
{
$this->_findMetaPluginPath($nonSefUrl);
}
return $this->_metaPluginPath;
}
protected function _findSefPluginPath($nonSefVars = array())
{
$this->_sefPluginPath = '';
}
protected function _findMetaPluginPath($nonSefUrl = '')
{
$this->_metaPluginPath = '';
}
}