diff options
Diffstat (limited to 'utils/links.php')
-rw-r--r-- | utils/links.php | 128 |
1 files changed, 128 insertions, 0 deletions
diff --git a/utils/links.php b/utils/links.php new file mode 100644 index 0000000..e093eb2 --- /dev/null +++ b/utils/links.php @@ -0,0 +1,128 @@ +<?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() + { + echo "<div class=\"link\">\n"; + if($this->icon != "") { + echo " <a class=\"link_icon\" rel=\"external\" href=\"" . $this->href . "\">\n"; + echo " <img alt=\"" . $this->title . "\" src=\"" . $this->icon . "\"/>\n"; + echo " </a>\n"; + } + echo " <a class=\"link_title\" rel=\"external\" href=\"" . $this->href . "\">\n"; + echo " " . htmlspecialchars_decode($this->title, ENT_QUOTES) . "\n"; + echo " </a>\n"; + echo "</div>\n"; + } +} + +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() + { + echo "<div class=\"linkgroup\">\n"; + echo " <div class=\"linkgroup_title\">". htmlspecialchars_decode($this->title, ENT_QUOTES) . "</div>\n"; + foreach($this->links as $link) { + $link->show(); + } + echo "</div>\n"; + } +} + +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) + { + foreach($this->groups as $group) { + if($groupid == $group->id || $groupid == "all") $group->show(); + } + } + + 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; + $this->read(); + } +} + +?>
\ No newline at end of file |