joomla_test/plugins/system/rokextender/rokextender.php
2020-01-02 22:20:31 +07:00

147 lines
4.4 KiB
PHP

<?php
/**
* @version 2.0.0 October 31, 2012
* @author RocketTheme http://www.rockettheme.com
* @copyright Copyright (C) 2007 - 2012 RocketTheme, LLC
* @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 only
*
* Gantry uses the Joomla Framework (http://www.joomla.org), a GNU/GPLv2 content management system
*
*/
defined('_JEXEC') or die('Restricted access');
jimport('joomla.plugin.plugin');
/**
* RokExtender Plugin
*/
class plgSystemRokExtender extends JPlugin
{
/**
* Loads all RokExtender plugins and fires onAfterInitialise if it needs to.
*
* @return void
*/
public function onAfterInitialise()
{
jimport('joomla.filesystem.file');
//get list of registered "files"
$registered_files = explode(',', $this->params->get('registered', ''));
foreach ($registered_files as $registered_file)
{
$dispatcher = JDispatcher::getInstance();
$className = basename(trim($registered_file), '.php');
$fullpath = JPATH_ROOT . $registered_file;
if (file_exists($fullpath) && is_file($fullpath))
{
require_once($fullpath);
}
if (class_exists($className))
{
// Instantiate and register the plugin.
$class = new $className($dispatcher);
$args = array('event' => 'onafterinitialise');
$class->update($args);
}
}
}
/**
* Function to register a RokExtender Plugin file
* @static
* @param string $path the path to the plugin file
* @return bool true if registered successfully false if there was an error
*/
public static function registerExtenderPlugin($path)
{
$db = JFactory::getDbo();
$table = JTable::getInstance('extension');
$id = $table->find(array('type' => 'plugin', 'element' => 'rokextender', 'folder' => 'system'));
if (!$table->load($id))
{
//$this->setError($table->getError());
return false;
}
$params = new JRegistry();
$params->loadString($table->params);
$registered_files = explode(',', $params->get('registered', ''));
if (!in_array($path, $registered_files))
{
$registered_files[] = $path;
}
// clean up files not there
$actually_there = $registered_files;
foreach($registered_files as $registered_loc => $registered_file)
{
$fullpath = JPATH_ROOT . $registered_file;
if (!file_exists($fullpath) || !is_file($fullpath)){
unset($actually_there[$registered_loc]);
}
}
$params->set('registered', implode(',', $actually_there));
$table->params = $params->toString();
// pre-save checks
if (!$table->check())
{
//$this->setError($table->getError());
return false;
}
// save the changes
if (!$table->store())
{
//$this->setError($table->getError());
return false;
}
}
/**
* Function to unregister a RokExtender Plugin file
* @static
* @param string $path the path to the plugin file
* @return bool true if unregistered successfully false if there was an error
*/
public static function unregisterExtenderPlugin($path)
{
$db = JFactory::getDbo();
$table = JTable::getInstance('extension');
$id = $table->find(array('type' => 'plugin', 'element' => 'rokextender', 'folder' => 'system'));
if (!$table->load($id))
{
//$this->setError($table->getError());
return false;
}
$params = new JRegistry();
$params->loadString($table->params);
$registered_files = explode(',', $params->get('registered', ''));
if (($loc = array_search($path, $registered_files)) !== false)
{
unset($registered_files[$loc]);
}
$params->set('registered', implode(',', $registered_files));
$table->params = $params->toString();
// pre-save checks
if (!$table->check())
{
//$this->setError($table->getError());
return false;
}
// save the changes
if (!$table->store())
{
//$this->setError($table->getError());
return false;
}
}
}