diff options
Diffstat (limited to 'utils/modules/rss.php')
-rw-r--r-- | utils/modules/rss.php | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/utils/modules/rss.php b/utils/modules/rss.php new file mode 100644 index 0000000..02501b3 --- /dev/null +++ b/utils/modules/rss.php @@ -0,0 +1,114 @@ +<?php /* -*- Mode: php; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ + +global $UTIL_DIR; + +include_once($UTIL_DIR . "/convert.php"); + +class RSSConfig { + private $file; + private $configs = array(); + + public $title; + public $url; + public $description; + public $editoremail; + public $webmasteremail; + public $target; + + // Admin config + public $admin_title = "RSS Config"; + public $admin_submodules = array("Config" => "config"); + + public function admin_config($action, $vars) + { + switch($action) { + case "update": + $this->title = $vars["title"]; + $this->url = $vars["url"]; + $this->description = $vars["description"]; + $this->editoremail = $vars["editoremail"]; + $this->webmasteremail = $vars["webmasteremail"]; + $this->target = $vars["target"]; + $this->write(); + break; + + default: + $form = new Form("update"); + $form->addWidget(new LineEdit("Title:", "title", $this->title)); + $form->addWidget(new LineEdit("Base URL:", "url", $this->url)); + $form->addWidget(new LineEdit("Description:", "description", $this->description)); + $form->addWidget(new LineEdit("Editor Email:", "editoremail", $this->editoremail)); + $form->addWidget(new LineEdit("Webmaster Email:", "webmasteremail", $this->webmasteremail)); + $form->addWidget(new LineEdit("Target file:", "target", $this->target)); + $form->addWidget(new Button("Update")); + $form->render(); + break; + } + } + + public function admin($sub, $action, $vars) + { + switch($sub) { + case "config": + $this->admin_config($action, $vars); + break; + } + } + + public function write() + { + $fp = fopen($this->file, "w"); + fwrite($fp, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); + + fwrite($fp, "<rss title=\"".xmlenc($this->title)."\"\n"); + fwrite($fp, " url=\"".xmlenc($this->url)."\"\n"); + fwrite($fp, " description=\"".xmlenc($this->description)."\"\n"); + fwrite($fp, " editoremail=\"".xmlenc($this->editoremail)."\"\n"); + fwrite($fp, " webmasteremail=\"".xmlenc($this->webmasteremail)."\"\n"); + fwrite($fp, " target=\"".xmlenc($this->target)."\">\n"); + fwrite($fp, "</rss>\n"); + + fclose($fp); + } + + private function read() + { + $dom = new DomDocument; + $dom->preserveWhiteSpace = TRUE; + $dom->load($this->file); + + $rss = $dom->documentElement; + $this->title = $rss->getAttribute('title'); + $this->url = $rss->getAttribute('url'); + $this->description = $rss->getAttribute('description'); + $this->editoremail = $rss->getAttribute('editoremail'); + $this->webmasteremail = $rss->getAttribute('webmasteremail'); + $this->target = $rss->getAttribute('target'); + } + + public function value($name, $default = "") + { + if(isset($this->configs[$name])) return $this->configs[$name]; + return $default; + } + + public function setValue($name, $value) + { + $this->configs[$name] = $value; + } + + public function RSSConfig($file) + { + $this->file = $file; + if(file_exists($file)) $this->read(); + } + +} + +function rss_init() +{ + global $DATA_DIR; + return new RSSConfig($DATA_DIR . "/rss.xml"); +} + +?>
\ No newline at end of file |