diff options
Diffstat (limited to 'utils/modules/news.php')
-rw-r--r-- | utils/modules/news.php | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/utils/modules/news.php b/utils/modules/news.php new file mode 100644 index 0000000..22de6a0 --- /dev/null +++ b/utils/modules/news.php @@ -0,0 +1,119 @@ +<?php + +include_once($UTIL_DIR . "/convert.php"); + +class NewsEntry { + public $title; + public $time; + public $description; + public $category; + + public function show() + { + $str = "<div class=\"news_entry\">\n"; + $str .= " <div class=\"news_title\">" . + htmlspecialchars_decode($this->title, ENT_QUOTES) . "</div>\n"; + $str .= " <div class=\"news_time\">" . date("D M jS Y G:i", $this->time) . "</div>\n"; + $str .= " <div class=\"news_description\">" . + htmlspecialchars_decode($this->description, ENT_QUOTES) . "</div>\n"; + $str .= "</div>\n"; + return $str; + } + + public function NewsEntry($title, $time, $category, $description) + { + $this->title = $title; + $this->time = $time; + $this->category = $category; + $this->description = $description; + } +} + +class News { + + private $file; + private $news = array(); + + public function run($module) + { + global $show; + + switch($module) { + case "news": + default: + if($show == "all") return $this->show(-1, "all"); + else return $this->show(-1, "main"); + break; + } + } + + public function show($number, $category) + { + $str = ""; + + // If number is -1 show all shows. + if($number == -1) $number = 100000; + + foreach($this->news as $newsentry) { + if($newsentry->category == $category || $category == "all") { + $str .= $newsentry->show(); + $number--; + } + if(!$number) return $str; + } + return $str; + } + + public function add($newsentry) { + $key = $newsentry->time; + $this->news[$key] = $newsentry; + } + + public function write() + { + $fp = fopen($this->file, "w"); + fwrite($fp, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); + + fwrite($fp, "<news>\n"); + foreach($this->news as $newsentry) { + fwrite($fp, " <newsentry title=\"" . + htmlspecialchars($newsentry->title, ENT_QUOTES, "UTF-8") . "\"\n"); + fwrite($fp, " time=\"" . $newsentry->time . "\"\n"); + fwrite($fp, " category=\"" . $newsentry->category . "\"\n"); + fwrite($fp, " description=\"" . + htmlspecialchars($newsentry->description, ENT_QUOTES, "UTF-8") . "\">\n"); + fwrite($fp, " </newsentry>\n"); + } + fwrite($fp, "</news>\n"); + + fclose($fp); + } + + private function read() + { + $dom = new DomDocument; + $dom->preserveWhiteSpace = FALSE; + $dom->load($this->file); + $params = $dom->getElementsByTagName('newsentry'); + + foreach ($params as $param) { + $newsentry = new NewsEntry($param->getAttribute('title'), + $param->getAttribute('time'), + $param->getAttribute('category'), + $param->getAttribute('description')); + $this->add($newsentry); + } + + // Key sort + krsort($this->news); + } + + public function News($file) + { + $this->file = $file; + if(file_exists($file)) $this->read(); + } + +} + +?> |