Пример #1
0
 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;
 }
Пример #2
0
 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>";
 }