bludit/bl-kernel/boot/rules/60.plugins.php

113 lines
3.1 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(),
2017-05-17 18:48:51 +02:00
'beforeAdminLoad'=>array(),
'afterAdminLoad'=>array(),
2015-08-07 04:13:55 +02:00
'adminHead'=>array(),
'adminBodyBegin'=>array(),
'adminBodyEnd'=>array(),
'adminSidebar'=>array(),
2016-01-08 00:43:09 +01:00
'beforeRulesLoad'=>array(),
2017-07-05 19:59:51 +02:00
'beforeAll'=>array(),
'afterAll'=>array(),
2016-01-08 00:43:09 +01:00
'afterPageCreate'=>array(),
'afterPageModify'=>array(),
'afterPageDelete'=>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
// ============================================================================
2016-01-14 05:42:18 +01:00
function buildPlugins()
2015-06-27 00:12:26 +02:00
{
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);
2017-07-29 00:08:19 +02:00
// Get declared clasess BEFORE load plugins clasess
2015-06-27 00:12:26 +02:00
$currentDeclaredClasess = get_declared_classes();
// Load each plugin clasess
foreach($list as $pluginPath) {
2016-05-07 05:10:10 +02:00
// Check if the directory has the plugin.php
2017-07-29 00:08:19 +02:00
if (file_exists($pluginPath.DS.'plugin.php')) {
2016-05-07 05:10:10 +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);
2017-07-29 00:08:19 +02:00
foreach ($pluginsDeclaredClasess as $pluginClass) {
2015-06-27 00:12:26 +02:00
$Plugin = new $pluginClass;
2017-07-29 00:08:19 +02:00
// Check if the plugin is translated
2015-09-04 02:55:05 +02:00
$languageFilename = PATH_PLUGINS.$Plugin->directoryName().DS.'languages'.DS.$Site->locale().'.json';
2016-01-14 05:42:18 +01:00
if( !Sanitize::pathFile($languageFilename) ) {
2017-07-29 00:08:19 +02:00
$languageFilename = PATH_PLUGINS.$Plugin->directoryName().DS.'languages'.DS.DEFAULT_LANGUAGE_FILE;
2015-07-03 22:44:26 +02:00
}
2015-07-14 04:16:28 +02:00
2016-01-14 05:42:18 +01:00
$database = file_get_contents($languageFilename);
$database = json_decode($database, true);
2015-07-03 22:44:26 +02:00
2017-07-29 00:08:19 +02:00
// Set name and description from the language file
2016-01-14 05:42:18 +01:00
$Plugin->setMetadata('name',$database['plugin-data']['name']);
$Plugin->setMetadata('description',$database['plugin-data']['description']);
2017-07-29 00:08:19 +02:00
// Remove name and description from the language file loaded and add new words if there are
// This function overwrite the key=>value
2016-01-14 05:42:18 +01:00
unset($database['plugin-data']);
2017-07-29 00:08:19 +02:00
if (!empty($database)) {
2016-01-14 05:42:18 +01:00
$Language->add($database);
}
2015-07-03 22:44:26 +02:00
2017-07-29 00:08:19 +02:00
// $plugins['all'] Array with all plugins, installed and not installed
2016-08-09 04:43:33 +02:00
$plugins['all'][$pluginClass] = $Plugin;
2016-06-20 02:45:09 +02:00
2017-07-29 00:08:19 +02:00
// If the plugin is installed insert on the hooks
if ($Plugin->installed()) {
foreach ($pluginsEvents as $event=>$value) {
if (method_exists($Plugin, $event)) {
2016-08-09 04:43:33 +02:00
array_push($plugins[$event], $Plugin);
2015-06-27 00:12:26 +02:00
}
}
}
}
}
// ============================================================================
// Main
// ============================================================================
2016-01-14 05:42:18 +01:00
buildPlugins();