bludit/kernel/boot/rules/80.plugins.php

106 lines
2.7 KiB
PHP
Raw Normal View History

2015-06-27 00:12:26 +02:00
<?php defined('BLUDIT') or die('Bludit CMS.');
// ============================================================================
// Variables
// ============================================================================
$plugins = array(
2015-08-07 19:22:13 +02:00
'siteHead'=>array(),
'siteBodyBegin'=>array(),
'siteBodyEnd'=>array(),
'siteSidebar'=>array(),
'beforeSiteLoad'=>array(),
'afterSiteLoad'=>array(),
2015-08-07 04:13:55 +02:00
'pageBegin'=>array(),
'pageEnd'=>array(),
'postBegin'=>array(),
'postEnd'=>array(),
'adminHead'=>array(),
'adminBodyBegin'=>array(),
'adminBodyEnd'=>array(),
'adminSidebar'=>array(),
2015-08-08 02:39:10 +02:00
'beforeAdminLoad'=>array(),
'afterAdminLoad'=>array(),
2015-08-07 04:13:55 +02:00
'loginHead'=>array(),
'loginBodyBegin'=>array(),
'loginBodyEnd'=>array(),
2015-06-27 00:12:26 +02:00
'all'=>array()
);
$pluginsEvents = $plugins;
unset($pluginsEvents['all']);
// ============================================================================
// Functions
// ============================================================================
function build_plugins()
{
global $plugins;
global $pluginsEvents;
2015-07-03 22:44:26 +02:00
global $Language;
global $Site;
2015-06-27 00:12:26 +02:00
// List plugins directories
$list = Filesystem::listDirectories(PATH_PLUGINS);
// Get declared clasess before load plugins clasess, this list doesn't have the plugins clasess.
$currentDeclaredClasess = get_declared_classes();
// Load each plugin clasess
foreach($list as $pluginPath) {
2015-07-03 22:44:26 +02:00
include($pluginPath.DS.'plugin.php');
2015-06-27 00:12:26 +02:00
}
// Get plugins clasess loaded
$pluginsDeclaredClasess = array_diff(get_declared_classes(), $currentDeclaredClasess);
foreach($pluginsDeclaredClasess as $pluginClass)
{
$Plugin = new $pluginClass;
2015-07-03 22:44:26 +02:00
// Set Plugin data
2015-09-04 02:55:05 +02:00
$languageFilename = PATH_PLUGINS.$Plugin->directoryName().DS.'languages'.DS.$Site->locale().'.json';
2015-07-03 22:44:26 +02:00
if( Sanitize::pathFile($languageFilename) )
{
2015-07-07 00:22:03 +02:00
$database = new dbJSON($languageFilename, false);
2015-07-03 22:44:26 +02:00
}
else
{
2015-09-04 02:55:05 +02:00
$languageFilename = PATH_PLUGINS.$Plugin->directoryName().DS.'languages'.DS.'en_US.json';
2015-07-07 00:22:03 +02:00
$database = new dbJSON($languageFilename, false);
2015-07-03 22:44:26 +02:00
}
2015-07-14 04:16:28 +02:00
2015-07-15 01:57:18 +02:00
$databaseArray = $database->db;
2015-07-07 03:05:17 +02:00
$Plugin->setData( $databaseArray['plugin-data'] );
2015-07-03 22:44:26 +02:00
// Add words to language dictionary.
2015-07-07 00:22:03 +02:00
unset($databaseArray['plugin-data']);
$Language->add($databaseArray);
2015-07-03 22:44:26 +02:00
// Push Plugin to array all plugins installed and not installed.
2015-06-27 00:12:26 +02:00
array_push($plugins['all'], $Plugin);
2015-07-03 22:44:26 +02:00
// If the plugin installed
2015-06-27 00:12:26 +02:00
if($Plugin->installed())
{
foreach($pluginsEvents as $event=>$value)
{
2015-08-07 23:33:43 +02:00
if(method_exists($Plugin, $event)) {
2015-06-27 00:12:26 +02:00
array_push($plugins[$event], $Plugin);
}
}
}
}
}
// ============================================================================
// Main
// ============================================================================
build_plugins();