📄 module.class.inc.php
字号:
<?php
/**
* GentleSource News Script
*
* (C) Ralf Stadtaus http://www.gentlesource.com/
*/
require 'modulecommon.class.inc.php';
/**
* Manage modules
*
* Triggers:
*
* frontend_page_header
* frontend_page_footer
*
* backend_source_head (include i.e. javascript into the HTML head)
*
* frontend_content (content row after reading from database)
* backend_content (content row after reading from database)
*
* frontend_textarea
* backend_textarea
*
* frontend_save_comment
* frontend_comment_form
* backend_comment_control (button/link list in comment list)
*
* backend_navigation
*
* backend_save_content
* backend_update_content
*
* date_picker
*
* module_demo
*
* standalone
*
*/
class t12l_module
{
/**
* Call module on trigger
*
* Use $t12l['module_additional'] if no genuine $additional is at hand.
*
* @access public
*/
function call_module($trigger, &$data, &$additional)
{
global $t12l;
$module_container = t12l_module::container();
reset($module_container);
while (list($module, $instance) = each($module_container))
{
if (in_array($trigger, $instance->get_property('trigger'))
and $instance->get_property('module_active') == true) {
$instance->process($trigger, $t12l, $data, $additional);
}
}
}
// -----------------------------------------------------------------------------
/**
* Call module on trigger with output
*
* @access public
*/
function call_module_output($parameter, &$smarty)
{
global $t12l;
if (!isset($parameter['trigger'])) {
return false;
} else {
$trigger = $parameter['trigger'];
}
$module_container = t12l_module::container();
$output = array();
reset($module_container);
while (list($module, $instance) = each($module_container))
{
if (in_array($trigger, $instance->get_property('trigger'))
and $instance->get_property('module_active') == true) {
$instance->process($trigger, $t12l, $parameter, $t12l['module_additional']);
$output[] = $instance->get_output($trigger);
}
}
return join('', $output);
}
// -----------------------------------------------------------------------------
/**
* Call module on trigger with tab output
*
* @access public
*/
function call_module_tab_output($parameter, &$smarty)
{
global $t12l;
if (!isset($parameter['trigger'])) {
return false;
} else {
$trigger = $parameter['trigger'];
}
$module_container = t12l_module::container();
$output = array();
reset($module_container);
while (list($module, $instance) = each($module_container))
{
if (in_array($trigger, $instance->get_property('trigger'))
and $instance->get_property('module_active') == true) {
$instance->process($trigger, $t12l, $parameter, $t12l['module_additional']);
if ($instance->get_output($trigger) == '') {
continue;
}
$output[] = '<div class="tabbertab" style="min-height:40px;"><h2>' . $instance->get_property('name') . '</h2>' . $instance->get_output($trigger) . '</div>';
}
}
if (sizeof($output) > 0) {
$result = '<div class="tabber">';
$result .= join('', $output);
$result .= '</div>';
return $result;
}
}
// -----------------------------------------------------------------------------
/**
* Create module instance
*
* @access public
*/
function load_module($module, $all = false)
{
global $t12l;
if (false == $all and !in_array($module, $t12l['installed_modules'])) {
t12l_system_debug::add_message('Module Failure', 'Module is not listed in $t12l[\'installed_modules\']');
return false;
}
$module_file = T12L_ROOT .
$t12l['module_directory'] .
$module . '/' .
$module . '.class.inc.php';
if (!is_file($module_file)) {
t12l_system_debug::add_message('Module Failure', 'Module file not found in: ' . $module_file);
return false;
}
if (!in_array($module_file, get_included_files())) {
require $module_file;
}
if (!class_exists($module)) {
t12l_system_debug::add_message('Module Failure', 'Module class "' . $module . '" does not exist.');
return false;
}
$instance = new $module($t12l);
return $instance;
}
// -----------------------------------------------------------------------------
/**
* Re-instanciate module
*/
function reload_module($module)
{
global $t12l;
if (!in_array($module, $t12l['installed_modules'])) {
t12l_system_debug::add_message('Module Failure', 'Module is not listed in $t12l[\'installed_modules\']');
return false;
}
$instance = new $module($t12l);
return $instance;
}
// -----------------------------------------------------------------------------
/**
* Contains/creates module instances
*
*/
function &container($reload = false, $cache = true)
{
global $t12l;
static $module_data = null;
if ($reload == false and $cache == true and is_array($module_data)) {
return $module_data;
}
$module_data = array();
foreach ($t12l['installed_modules'] AS $module)
{
trim($module);
if (isset($module_data[$module])) {
continue;
}
if ($reload == true and $instance = t12l_module::reload_module($module)) {
$module_data[$module] = $instance;
continue;
}
if ($instance = t12l_module::load_module($module)) {
$module_data[$module] = $instance;
}
}
return $module_data;
}
// -----------------------------------------------------------------------------
/**
* Administration module list
*
* @access public
*/
function module_list()
{
$module_container = t12l_module::container();
reset($module_container);
$module_list = array();
while (list($module, $instance) = each($module_container))
{
// Skip hidden modules or modules without administration
if($instance->get_property('hidden') == true) {
continue;
}
$module_list[] = array( 'name' => $instance->get_property('name'),
'description' => $instance->get_property('description'),
'module' => $module
);
}
return $module_list;
}
// -----------------------------------------------------------------------------
/**
* List of all available modules
*
* @access public
*/
function available_module_list()
{
global $t12l;
$module_container = t12l_module::container();
reset($module_container);
$available_modules = t12l_module::folder_list(T12L_ROOT . $t12l['module_directory']);
asort($available_modules);
$available_modules = array_merge($t12l['installed_modules'], $available_modules);
$available_modules = array_unique($available_modules);
$module_list = array();
while (list($key, $module) = each($available_modules))
{
$module = trim($module);
if (isset($module_container[$module])) {
$instance = $module_container[$module];
$install_status = true;
} else {
if (!$instance = t12l_module::load_module($module, true)) {
continue;
} else {
$install_status = false;
}
}
$module_list[] = array( 'name' => $instance->get_property('name'),
'description' => $instance->get_property('description'),
'module' => $module,
'installed' => $install_status
);
}
return $module_list;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -