コード例 #1
0
ファイル: element.php プロジェクト: notzen/ImpressPages-CMS
 private function generateDepthAndLink()
 {
     global $site;
     $tmpUrlVars = array();
     $tmpId = $this->getId();
     $element = DbFrontend::getElement($tmpId);
     while ($element['parent'] !== null) {
         $tmpUrlVars[] = $element['url'];
         $element = DbFrontend::getElement($element['parent']);
     }
     $languageId = DbFrontend::languageByRootElement($element['id']);
     $urlVars = array();
     for ($i = sizeof($tmpUrlVars) - 1; $i >= 0; $i--) {
         $urlVars[] = $tmpUrlVars[$i];
     }
     $this->depth = sizeof($urlVars);
     switch ($this->type) {
         case 'subpage':
             $tmpChildren = $site->getZone($this->zoneName)->getElements($languageId, $this->id, 0, $limit = 1);
             if (sizeof($tmpChildren) == 1) {
                 $this->link = $tmpChildren[0]->getLink();
             } else {
                 $this->link = $site->generateUrl($languageId, $this->zoneName, $urlVars);
             }
             //open current page if no subpages exist
             break;
         case 'redirect':
             if ($site->managementState()) {
                 if (strpos($this->redirectUrl, BASE_URL) === 0) {
                     if (strpos($this->redirectUrl, 'cms_action=manage') === false) {
                         if (strpos($this->redirectUrl, '?') === false) {
                             $this->redirectUrl .= '?cms_action=manage';
                         } else {
                             $this->redirectUrl .= '&cms_action=manage';
                         }
                     }
                 }
             }
             $this->link = $this->redirectUrl;
             break;
         case 'inactive':
         case 'default':
         default:
             $this->link = $site->generateUrl($languageId, $this->zoneName, $urlVars);
             break;
     }
     $this->linkIgnoreRedirect = $site->generateUrl($languageId, $this->zoneName, $urlVars);
 }