X-Git-Url: http://git.dj3c1t.com/index.cgi?a=blobdiff_plain;f=mw%2Fapp%2Fdata%2Fmodules%2Fshare%2Fmw_data_links.php;fp=mw%2Fapp%2Fdata%2Fmodules%2Fshare%2Fmw_data_links.php;h=d5f328781bb341cd76efe1f65c69b5614a4c1b5d;hb=36ed114046cbe3d72a3589230e9f306a54fcc79d;hp=0000000000000000000000000000000000000000;hpb=281c96e95451269f2614684b8de5be25862c8374;p=mtweb diff --git a/mw/app/data/modules/share/mw_data_links.php b/mw/app/data/modules/share/mw_data_links.php new file mode 100644 index 0000000..d5f3287 --- /dev/null +++ b/mw/app/data/modules/share/mw_data_links.php @@ -0,0 +1,99 @@ +links = array(); + return true; + } + + function load_link(&$links, $v_path, $url, $intitule = "", $position = 0){ + if($path_item = array_shift($v_path)){ + if(!isset($links[$path_item])) $links[$path_item] = array( + "nom" => $path_item, + "url" => $v_path ? null : $url, + "intitule" => $v_path ? null : $intitule, + "subs" => array(), + "position" => 0 + ); + if($v_path) $this->load_link($links[$path_item]["subs"], $v_path, $url, $intitule, $position); + else{ + $links[$path_item]["nom"] = $path_item; + $links[$path_item]["url"] = $url; + $links[$path_item]["intitule"] = $intitule; + $links[$path_item]["position"] = $position; + } + } + } + + function valid_link_path($path){ + $v_path = explode("/", $path); + $SYNTAX_OK = true; + foreach($v_path as $i => $path_item){ + if($path_item){ + if(!preg_match("/^[a-zA-Z]+[a-zA-Z0-9\-_\.]*$/", $path_item)){ + $SYNTAX_OK = false; + break; + } + } + else unset($v_path[$i]); + } + return $v_path && $SYNTAX_OK ? $v_path : false; + } + + function get_link($path = null){ + if(!isset($this->links)) $this->init_links(); + if($this->links !== false){ + if(!isset($path)) return $this->links; + if($v_path = $this->valid_link_path($path)){ + return $this->_get_link($this->links, $v_path); + } + } + return false; + } + + function _get_link($links, $v_path){ + if($path_item = array_shift($v_path)){ + if(isset($links[$path_item])){ + if($v_path) return $this->_get_link($links[$path_item]["subs"], $v_path); + else return $links[$path_item]; + } + else return false; + } + } + + function set_link($path, $url, $intitule = "", $position = 0){ + if(!isset($this->links)) $this->init_links(); + if($v_path = $this->valid_link_path($path)){ + $this->load_link($this->links, $v_path, $url, $intitule, $position); + $this->links = $this->ordonne_links($this->links); + } + } + + function ordonne_links($links){ + if(!is_array($links)) return false; + $values = array_values($links); + $maximum = count($values); + while($maximum > 0){ + $maximumTemporaire = 0; + for($i = 0; $i < $maximum - 1; $i++){ + if($values[$i]["position"] > $values[$i + 1]["position"]){ + $tmp = $values[$i]; + $values[$i] = $values[$i + 1]; + $values[$i + 1] = $tmp; + $maximumTemporaire = $i + 1; + } + } + $maximum = $maximumTemporaire; + } + $res = array(); + foreach($values as $value) { if($value["nom"]) $res[$value["nom"]] = $value; } + foreach($res as $nom => $sub) { if($sub["subs"]) $res[$nom]["subs"] = $this->ordonne_links($res[$nom]["subs"]); } + return $res; + } + + } + +?> \ No newline at end of file