<?php /* * This file is part of kusaba. * * kusaba is free software; you can redistribute it and/or modify it under the * terms of the GNU General Public License as published by the Free Software * Foundation; either version 2 of the License, or (at your option) any later * version. * * kusaba is distributed in the hope that it will be useful, but WITHOUT ANY * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR * A PARTICULAR PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along with * kusaba; if not, write to the Free Software Foundation, Inc., * 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */ /** * Module functions * * Provides module and hook functionality * * @package kusaba */ function hook_process($hookname, $data) { global $hooks; if (is_array($hooks[$hookname])) { foreach ($hooks[$hookname] as $hook) { $data = module_call_function($hook, 'process_' . $hookname, $data); } } return $data; } function modules_load_all() { foreach (modules_list() as $module) { module_load($module); } } /* Fetch the names of the modules in the inc/modules/ directory */ function modules_list() { $modules = array(); if ($modules_handle = opendir(KU_ROOTDIR . 'inc/modules')) { while (false !== ($file = readdir($modules_handle))) { /* We don't want hidden files, nor . or .. */ if ($file != '.' && $file != '..' && !is_dir($file) && strpos($file, '.php') != false) { $modules[] = substr($file, 0, -4); } } } else { echo 'Unable to open the modules directory!'; } return $modules; } /* Load a module's script and call its initialization function */ function module_load($module) { global $modules_loaded; if (!in_array($module, $modules_loaded)) { /* Include the module file */ include(KU_ROOTDIR . 'inc/modules/' . $module . '.php'); /* Call the initialization function */ module_call_function($module, 'init'); /* Add this module to the loaded modules list */ $modules_loaded[] = $module; /* The module was loaded, return true to show that it was a success */ return true; } else { return false; } } /* Call a module's function, such as module_init() */ function module_call_function($module, $function, $data = null) { if (function_exists($module . '_' . $function)) { if ($data == null) { return call_user_func($module . '_' . $function); } else { return call_user_func($module . '_' . $function, $data); } } else { return false; } } function module_setting_get($module, $key) { global $tc_db; $query = "SELECT `value` FROM `".KU_DBPREFIX."module_settings` WHERE `module` = '".mysql_real_escape_string($module)."' AND `key` = '".mysql_real_escape_string($key)."' LIMIT 1"; $result = $tc_db->GetOne($query); return $result; } function module_setting_set($module, $key, $value, $type = 'string') { global $tc_db; $exists = $tc_db->GetOne("SELECT COUNT(*) FROM `".KU_DBPREFIX."module_settings` WHERE `module` = '".mysql_real_escape_string($module)."' AND `key` = '".mysql_real_escape_string($key)."' LIMIT 1"); if ($exists > 0) { $result = $tc_db->Execute("UPDATE `".KU_DBPREFIX."module_settings` SET `value` = '".mysql_real_escape_string($value)."') WHERE `module` = '".mysql_real_escape_string($module)."' AND `key` = '".mysql_real_escape_string($key)."'"); } else { $result = $tc_db->Execute("INSERT INTO `".KU_DBPREFIX."module_settings` (`module` , `key` , `value` , `type`) VALUES ('".mysql_real_escape_string($module)."', '".mysql_real_escape_string($key)."', '".mysql_real_escape_string($value)."', '".mysql_real_escape_string($type)."')"); } return $result; } ?>