. */ namespace Alledia\Framework\Joomla\Extension; use Alledia\Framework\Factory; use Joomla\CMS\Plugin\CMSPlugin; use Joomla\CMS\Version; // phpcs:disable PSR1.Files.SideEffects defined('_JEXEC') or die(); // phpcs:enable PSR1.Files.SideEffects abstract class AbstractPlugin extends CMSPlugin { /** * Alledia Extension instance * * @var Licensed */ protected $extension; /** * Library namespace * * @var string */ protected $namespace; /** * Method used to load the extension data. It is not on the constructor * because this way we can avoid loading the data if the plugin * will not be used. * * @return void */ protected function init() { $this->loadExtension(); // Load the libraries, if existent $this->extension->loadLibrary(); $this->loadLanguage(); } /** * Method to load the language files * * @return void */ public function loadLanguage($extension = '', $basePath = JPATH_ADMINISTRATOR) { parent::loadLanguage($extension, $basePath); $systemStrings = 'plg_' . $this->_type . '_' . $this->_name . '.sys'; parent::loadLanguage($systemStrings, $basePath); } /** * Method to load the extension data * * @return void */ protected function loadExtension() { if (!isset($this->extension)) { $this->extension = Factory::getExtension($this->namespace, 'plugin', $this->_type); } } /** * Check if this extension is licensed as pro * * @return bool True for pro version */ protected function isPro() { return $this->extension->isPro(); } }