Файл: adultscript-2.0.3-pro/files/libraries/framework/module.php
Строк: 48
<?php
defined('_VALID') or die('Restricted Access!');
class VModule
{
private static $modules = array();
public static function load($name, $force=FALSE)
{
if (!isset(self::$modules['core'])) {
self::__cache_modules();
}
$found = (isset(self::$modules[$name])) ? TRUE : FALSE;
$enabled = ($found && self::$modules[$name]['status'] === 1) ? TRUE : FALSE;
if ($found === TRUE && $force === TRUE) {
$enabled = TRUE;
}
if ($enabled) {
$module = self::$modules[$name]['module'];
$module_file = MODULES_DIR.'/'.$module.'/'.$module.'.php';
$module_class = 'VModule_'.$module;
try {
require $module_file;
$module_obj = new $module_class();
$module_obj->render();
} catch(Exception $e) {
throw new VException($e);
}
} else {
if ($name != '404') {
VModule::load('404', true);
} else {
throw new VException('Application Error! Aborting...');
}
}
}
public static function valid($name)
{
if (!isset(self::$modules['core'])) {
self::__cache_modules();
}
return (isset(self::$modules[$name])) ? TRUE : FALSE;
}
public static function enabled($name)
{
if (!isset(self::$modules['core'])) {
self::__cache_modules();
}
return (isset(self::$modules[$name]) && self::$modules[$name]['status'] === 1) ? TRUE : FALSE;
}
private static function __cache_modules()
{
if (!$modules = VF::cache_get('modules', 'config')) {
$db = VF::factory('database');
$db->query("SELECT name, status, slugs FROM #__module");
if (!$db->affected_rows()) {
throw new Exception('Failed to load modules! Aborting...');
}
$rows = $db->fetch_rows();
$modules = array();
foreach ($rows as $row) {
$name = $row['name'];
$slugs = $row['slugs'];
$status = (int) $row['status'];
$slugs = explode(',', $slugs);
foreach ($slugs as $slug) {
$slug = trim($slug);
$modules[$slug] = array('module' => $name, 'status' => $status);
}
VF::cache_set('modules', $modules, 'config');
}
}
self::$modules = $modules;
}
}
?>