Example #1
0
 /**
  * Generate a url
  *
  * @param array $params request parameters
  * @param boolean $full true to get full url (include protocol and hostname)
  */
 public function GetUrl($params = array(), $full = false)
 {
     if ($full) {
         $baseurl = $this->fullurl;
     } else {
         $baseurl = $this->baseurl;
     }
     if ($this->cleanurl) {
         if (substr_compare($baseurl, 'index.php', -9) === 0) {
             $baseurl = dirname($baseurl);
         }
         $baseurl = GitPHP_Util::AddSlash($baseurl, false);
     } else {
         if (substr_compare($baseurl, 'index.php', -9) !== 0) {
             $baseurl = GitPHP_Util::AddSlash($baseurl, false);
         }
     }
     if (count($params) < 1) {
         return $baseurl;
     }
     $abbreviate = $this->abbreviate;
     if ($abbreviate && !empty($params['project']) && $params['project'] instanceof GitPHP_Project) {
         if ($params['project']->GetCompat()) {
             $abbreviate = false;
         }
     }
     foreach ($params as $paramname => $paramval) {
         switch ($paramname) {
             case 'hash':
             case 'hashbase':
             case 'hashparent':
             case 'mark':
                 $params[$paramname] = GitPHP_Router::GetHash($paramval, $abbreviate);
                 break;
             case 'tag':
                 $params[$paramname] = GitPHP_Router::GetTag($paramval);
                 break;
             case 'project':
                 $params[$paramname] = GitPHP_Router::GetProject($paramval);
                 break;
         }
     }
     if ($this->cleanurl) {
         if (!empty($params['action'])) {
             switch ($params['action']) {
                 case 'blob':
                 case 'commit':
                 case 'tree':
                 case 'graph':
                 case 'tag':
                     // these actions are plural in clean urls
                     $params['action'] = $params['action'] . 's';
                     break;
             }
         }
         list($queryurl, $exclude) = $this->BuildRoute($params);
         $baseurl .= $queryurl;
         foreach ($exclude as $excludeparam) {
             unset($params[$excludeparam]);
         }
     }
     $querystr = GitPHP_Router::GetQueryString($params);
     if (empty($querystr)) {
         return $baseurl;
     }
     return $baseurl . '?' . $querystr;
 }