| <?php | |
| /** | |
| * ***************************************************************************** | |
| * Copyright (c) 2006 Eclipse Foundation and others. | |
| * All rights reserved. This program and the accompanying materials | |
| * are made available under the terms of the Eclipse Public License v1.0 | |
| * which accompanies this distribution, and is available at | |
| * http://www.eclipse.org/legal/epl-v10.html | |
| * | |
| * Contributors: | |
| * Denis Roy (Eclipse Foundation)- initial API and implementation | |
| * ***************************************************************************** | |
| */ | |
| require_once ("link.class.php"); | |
| class Nav { | |
| # ***************************************************************************** | |
| # | |
| # nav.class.php | |
| # | |
| # Author: Denis Roy | |
| # Date 2004-09-11 | |
| # | |
| # Description: Functions and modules related to Navbar objects | |
| # | |
| # HISTORY: | |
| # | |
| # ***************************************************************************** | |
| private $LinkList = array(); | |
| private $HTMLBlock = ""; | |
| private $type = ""; | |
| /** | |
| * Store html to use after <aside> | |
| * | |
| * @var string | |
| */ | |
| private $HTMLBlockSuffix = ""; | |
| # Main constructor | |
| function __construct() { | |
| $www_prefix = ""; | |
| global $App; | |
| if (isset($App)) { | |
| $www_prefix = $App->getWWWPrefix(); | |
| } | |
| } | |
| /** | |
| * Get $HTMLBlockSuffix | |
| * | |
| * @return string | |
| */ | |
| public function getHtmlBlockSuffix() { | |
| return $this->HTMLBlockSuffix; | |
| } | |
| /** | |
| * Set $HTMLBlockSuffix | |
| * | |
| * @return string | |
| */ | |
| public function setHtmlBlockSuffix($html = "") { | |
| if (!empty($html) && is_string($html)) { | |
| $this->HTMLBlockSuffix = $html; | |
| } | |
| return $this->HTMLBlockSuffix; | |
| } | |
| function getLinkList() { | |
| return $this->LinkList; | |
| } | |
| function setLinkList($_LinkList) { | |
| $this->LinkList = $_LinkList; | |
| } | |
| function getHTMLBlock() { | |
| return $this->HTMLBlock; | |
| } | |
| function setHTMLBlock($html) { | |
| $this->HTMLBlock = $html; | |
| } | |
| /** | |
| * Get the Nav type | |
| * | |
| * @return string | |
| */ | |
| function getType() { | |
| return $this->type; | |
| } | |
| /** | |
| * Set the Nav type | |
| * | |
| * @param string $type | |
| */ | |
| function setType($type) { | |
| $this->type = $type; | |
| } | |
| function addCustomNav($_Text, $_URL, $_Target, $_Level, $_CSS = NULL) { | |
| if ($_Level == "") { | |
| $_Level = 0; | |
| } | |
| $Link = new Link($_Text, $_URL, $_Target, $_Level, $_CSS); | |
| # Add incoming Nav Item | |
| $this->LinkList[count($this->LinkList)] = $Link; | |
| } | |
| function addNavSeparator($_Text, $_URL) { | |
| $Link = new Link($_Text, $_URL, "__SEPARATOR", 1); | |
| # Add incoming Nav Item | |
| $this->LinkList[count($this->LinkList)] = $Link; | |
| } | |
| function addMetaNav($_Project) { | |
| if (!class_exists("projectInfoList")) { | |
| require_once ($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/classes/projects/projectInfoList.class.php"); | |
| } | |
| # set the default depth | |
| $depth = 1; | |
| # New info data instance | |
| $MetaNav = new projectInfoList(); | |
| # get the data | |
| $MetaNav->selectProjectInfoList($_Project, "projectleftnav"); | |
| # sort the data & extract the data, which in this case should always be at 0 | |
| $MetaLeftNav = $this->orderNavList($MetaNav->list[0]->projectleftnav); | |
| # is there something there? | |
| if ($MetaLeftNav != NULL) { | |
| # loop through the leftnav items and add them to the output array | |
| foreach ($MetaLeftNav as $item) { | |
| # the url has to start with http(s):// and be an eclipse.org site, or | |
| # we'll ignore it | |
| if (preg_match("/^http[s]{0,1}:\/\/(\S.+eclipse.org(\/|$)|eclipseplugincentral.com)/i", $item->url) >= 1) { | |
| if ($item->separator == 1) { | |
| $this->addNavSeparator($item->title, $item->url); | |
| } | |
| else { | |
| $this->addCustomNav($item->title, $item->url, "", $depth + $item->indent); | |
| $depth = 1; | |
| } | |
| } | |
| } | |
| } | |
| } | |
| # remove list function from projectInfoList class, and put it here where it | |
| # really belongs | |
| function orderNavList($_InfoList) { | |
| if (!function_exists("cmp_navobj")) { | |
| function cmp_navobj($a, $b) { | |
| $al = $a->order; | |
| $bl = $b->order; | |
| if ($al == $bl) { | |
| return 0; | |
| } | |
| return ($al > $bl) ? +1 : -1; | |
| } | |
| } | |
| usort($_InfoList, "cmp_navobj"); | |
| return $_InfoList; | |
| } | |
| function getLinkCount() { | |
| return count($this->LinkList); | |
| } | |
| function getLinkAt($_Pos) { | |
| if ($_Pos < $this->getLinkCount()) { | |
| return $this->LinkList[$_Pos]; | |
| } | |
| } | |
| } |