summaryrefslogtreecommitdiff
path: root/utils/modules/news.php
diff options
context:
space:
mode:
Diffstat (limited to 'utils/modules/news.php')
-rw-r--r--utils/modules/news.php119
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();
+ }
+
+}
+
+?>