diff options
Diffstat (limited to 'utils/modules/links.php')
-rw-r--r-- | utils/modules/links.php | 164 |
1 files changed, 164 insertions, 0 deletions
diff --git a/utils/modules/links.php b/utils/modules/links.php new file mode 100644 index 0000000..cf0cfed --- /dev/null +++ b/utils/modules/links.php @@ -0,0 +1,164 @@ +<?php + +class Link { + public $title; + public $href; + public $icon; + + public function Link($title, $href, $icon) { + $this->title = $title; + $this->href = $href; + $this->icon = $icon; + } + + public function show() + { + $str = ""; + + $str .= "<div class=\"link\">\n"; + if($this->icon != "") { + $str .= " <a class=\"link_icon\" rel=\"external\" href=\"" . $this->href . "\">\n"; + $str .= " <img alt=\"" . $this->title . "\" src=\"" . $this->icon . "\"/>\n"; + $str .= " </a>\n"; + } + $str .= " <a class=\"link_title\" rel=\"external\" href=\"" . $this->href . "\">\n"; + $str .= " " . htmlspecialchars_decode($this->title, ENT_QUOTES) . "\n"; + $str .= " </a>\n"; + $str .= "</div>\n"; + + return $str; + } +} + +class LinkGroup { + public $title; + public $id; + private $links = array(); + + public function LinkGroup($title, $id) { + $this->title = $title; + $this->id = $id; + } + + public function add($link) { + $key = $link->title; + $this->links[$key] = $link; + } + + public function show() + { + $str = ""; + $str .= "<div class=\"linkgroup\">\n"; + $str .= " <div class=\"linkgroup_title\">". + htmlspecialchars_decode($this->title, ENT_QUOTES) . "</div>\n"; + foreach($this->links as $link) { + $str .= $link->show(); + } + $str .= "</div>\n"; + return $str; + } +} + +class Links { + private $file; + private $groups = array(); + + public function add($group) { + $key = $group->title; + $this->groups[$key] = $group; + } + + /* + public function write() + { + $fp = fopen($this->file, "w"); + fwrite($fp, "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"); + + fwrite($fp, "<links>\n"); + foreach($this->links as $link) { + fwrite($fp, " <link title=\"" . + htmlspecialchars($link->title, ENT_QUOTES, "UTF-8") . "\"\n"); + fwrite($fp, " href=\"" . + htmlspecialchars($link->href, ENT_QUOTES, "UTF-8") . "\">\n"); + fwrite($fp, " icon=\"" . + htmlspecialchars($link->icon, ENT_QUOTES, "UTF-8") . "\">\n"); + fwrite($fp, " </link>\n"); + } + fwrite($fp, "</links>\n"); + + fclose($fp); + } + */ + // public function show($groupid) + public function run($params) + { + $str = ""; + + $groupid = "all"; + + foreach($params as $param) { + if(!$param) continue; + switch($param) { + case "all": + $groupid = "all"; + break; + + default: + $groupid = $param; + break; + } + } + + $str .= "<div class=\"links\">\n"; + foreach($this->groups as $group) { + if($groupid == $group->id || $groupid == "all") $str .= $group->show(); + } + $str .= "</div>\n"; + + return $str; + } + + private function read() + { + + $dom = new DomDocument; + $dom->preserveWhiteSpace = FALSE; + $dom->load($this->file); + + $xmlgroups = $dom->getElementsByTagName('group'); + + foreach ($xmlgroups as $xmlgroup) { + + $group = new LinkGroup($xmlgroup->getAttribute('name'), + $xmlgroup->getAttribute('id')); + $xmllinks = $xmlgroup->getElementsByTagName('link'); + + foreach ($xmllinks as $xmllink) { + $link = new Link($xmllink->getAttribute('title'), + $xmllink->getAttribute('href'), + $xmllink->getAttribute('icon')); + + $group->add($link); + } + + $this->add($group); + } + + // Key sort + // ksort($this->events); + } + + public function Links($file) + { + $this->file = $file; + if(file_exists($file)) $this->read(); + } +} + +function links_init() +{ + global $DATA_DIR; + return new Links($DATA_DIR . "/links.xml"); +} + +?>
\ No newline at end of file |