public static function __callStatic($method, $options) { $content = $options[0]; $tag = $options[1]; //------------------------------------------------------------------------------ // look for href expressions $nodes = $content->XPath("//*[@href]"); // loop through all nodes for ($i = 0; $i < count($nodes); $i++) { // if not extern link // route if (!link_is_extern($href = (string) $nodes[$i]['href'])) { // set lang for link call if (!($lang = (string) $nodes[$i]['lang'])) { $lang = status::lang(); } $href = str_replace(array(";"), array("&"), $href); $hrefArray = explode(":", $href); // parse special route functions: // referer() ... insert referer address // current() ... insert current url and val // javascript(): ... convert to javascript call // urlName:valName ... convert to correct friendly_url/val switch ($hrefArray[0]) { case 'href()': $nodes[$i]['href'] = OLIVRoute::url($lang, $hrefArray[1], (string) $nodes[$i]["val"]); break; case 'referer()': $nodes[$i]['href'] = status::oliv_referer(); break; case 'current()': $nodes[$i]['href'] = OLIVRoute::url($lang, status::url(), status::val()); // insert additional parameters if (count($hrefArray) > 1) { $nodes[$i]['href'] = substr($nodes[$i]['href'], 0, -1) . "?" . $hrefArray[1]; } break; case 'javascript()': $nodes[$i]['href'] = "javascript:toolbox('" . (string) $hrefArray[1] . "')"; break; default: $nodes[$i]['href'] = OLIVRoute::url($lang, $hrefArray[0], status::val()); // add value if (count($hrefArray) > 1) { $nodes[$i]['href'] .= $hrefArray[1] . "/"; } break; } } } return $content; }
public static function link($text, $options = array()) { $url = ""; $val = ""; $param = ""; $class = ""; $lang = ""; $linkParamString = ""; // link parameters foreach ($options['link'] as $key => $entry) { // filter url and var parameters switch ($key) { case 'url': if ($url = strtolower($entry)) { } else { return $text; } break; case 'lang': $lang = $entry; break; case 'val': $val = $entry; break; default: $linkParamString .= "{$key}='{$entry}' "; break; } } // get common parameters if (isset($options['param'])) { $param = $options['param']; } if (isset($options['class'])) { $class = $options['class']; } if (!$lang) { $lang = status::lang(); } // if no language use current //------------------------------------------------------------------------------ // create extern link if (link_is_extern($url)) { $path = $url; } else { $path = OLIVRoute::makeUrl($lang, $url) . "/"; if ($val) { $path .= $val . "/"; } } // insert clipboard if ($clipBoard = OLIVClipboard::_()) { $clipBoard = "?clipboard={$clipBoard} "; } // create parameter string $param = OLIVRoute::makeParam($param); // insert class if ($class) { $class = "class='{$class}'"; } // return href string return "<a {$class} href='{$path}{$clipBoard}' {$linkParamString} {$param}>{$text}</a>"; }