diff options
Diffstat (limited to 'utils/modules')
| -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  | 
