diff options
Diffstat (limited to 'code/modules.inc.php')
-rw-r--r-- | code/modules.inc.php | 148 |
1 files changed, 0 insertions, 148 deletions
diff --git a/code/modules.inc.php b/code/modules.inc.php deleted file mode 100644 index 4a4a889..0000000 --- a/code/modules.inc.php +++ /dev/null @@ -1,148 +0,0 @@ -<?PHP - require_once('code/xmlparser.inc.php'); - require_once('code/db.inc.php'); - - function require_mod($file) { - if(isset($GLOBALS['modules']->code[$file])) - require_once($GLOBALS['modules']->code[$file]); - elseif(isset($GLOBALS['modules']->templates[$file])) - require_once($GLOBALS['modules']->templates[$file]); - else - require_once($file); - } - - class Modules { - var $modules = array(); - var $pages = array(); - var $code = array(); - var $templates = array(); - - function Modules() { - $dir = opendir('modules'); - - while($moddir = readdir($dir)) { - if($moddir[0] != '.' && is_dir('modules/' . $moddir) && is_file('modules/' . $moddir . '/module.xml')) { - $data = $GLOBALS['xmlparser']->ParseFile('modules/' . $moddir . '/module.xml'); - - if(!$data) continue; - - $info = $GLOBALS['xmlparser']->FindTag($data, 'info'); - if(!$info) continue; - - $name = $GLOBALS['xmlparser']->FindTag($info, 'name'); - if(!$name) continue; - if(count($name['children']) != 1) continue; - if(!is_string($name['children'][0])) continue; - $name = $name['children'][0]; - - $version = $GLOBALS['xmlparser']->FindTag($info, 'version'); - if(!$version) continue; - if(count($version['children']) != 1) continue; - if(!is_string($version['children'][0])) continue; - $version = $version['children'][0]; - - $desc = $GLOBALS['xmlparser']->FindTag($info, 'desc'); - if(!$desc) continue; - if(count($desc['children']) != 1) continue; - if(!is_string($desc['children'][0])) continue; - $desc = $desc['children'][0]; - - $this->modules[$name] = array('name' => $name, 'version' => $version, 'desc' => $desc, 'code' => array(), - 'templates' => array(), 'config' => false, 'enabled' => false); - - if($GLOBALS['xmlparser']->FindTag($info, 'config')) $this->modules[$name]['config'] = true; - - $files = $GLOBALS['xmlparser']->FindTag($data, 'files'); - if(!$files) continue; - - foreach($files['children'] as $file) { - if(!is_array($file)) continue; - if(count($file['children']) != 1) continue; - if(!is_string($file['children'][0])) continue; - - switch($file['tag']) { - case 'page': - $type = $file['attribs']['type']; - if(!$type) $type = 'c'; - - $pagename = $file['children'][0] . '.' . $type; - $realname = 'modules/' . $moddir . '/pages/' . strtr($type, array('c' => 'content', 'e' => 'editor', 'n' => 'nav')) - . '/' . $file['children'][0] . '.xml'; - - $this->modules[$name]['pages'][$pagename] = $realname; - break; - case 'code': - $filename = 'code/' . $file['children'][0] . '.inc.php'; - $realname = 'modules/' . $moddir . '/code/' . $file['children'][0] . '.inc.php'; - - $this->modules[$name]['code'][$filename] = $realname; - break; - case 'template': - $filename = 'templates/' . $file['children'][0] . '.inc.php'; - $realname = 'modules/' . $moddir . '/templates/' . $file['children'][0] . '.inc.php'; - - $this->modules[$name]['templates'][$filename] = $realname; - } - } - } - } - - closedir($dir); - - $res = $GLOBALS['db']->Execute('SELECT name, enabled FROM modules'); - - while($row = $res->FetchRow()) { - if(!array_key_exists($row[0], $this->modules)) { - $GLOBALS['db']->Execute('DELETE FROM modules WHERE name = ?', $row[0]); - continue; - } - - if(!$row[1]) continue; - - $this->modules[$row[0]]['enabled'] = true; - - $this->pages = array_merge($this->pages, $this->modules[$row[0]]['pages']); - $this->code = array_merge($this->code, $this->modules[$row[0]]['code']); - $this->templates = array_merge($this->templates, $this->modules[$row[0]]['templates']); - } - } - - function Exists($name) { - return array_key_exists($name, $this->modules); - } - - function Enabled($name) { - return $this->Exists($name) && $this->modules[$name]['enabled']; - } - - function HasConfig($name) { - if(!$this->Exists($name)) return false; - - return $this->modules[$name]['config']; - } - - function Enable($name, $enable = true) { - if(!$this->Exists($name)) return false; - - if($this->Enabled($name) == $enable) return true; - - $res = $GLOBALS['db']->Execute('SELECT id FROM modules WHERE name = ?', $name); - - if($res->RecordCount()) { - $GLOBALS['db']->Execute('UPDATE modules SET enabled = ? WHERE name = ?', array(intval($enable), $name)); - - return ($GLOBALS['db']->Affected_Rows() > 0); - } - - $GLOBALS['db']->Execute('INSERT INTO modules (name, enabled) VALUES (?, ?)', array($name, intval($enable))); - - return ($GLOBALS['db']->Affected_Rows() > 0); - } - - function Disable($name) { - return $this->Enable($name, false); - } - } - - $GLOBALS['modules'] = new Modules; -?> |