|  | <?php | 
|  | /******************************************************************************* | 
|  | * Copyright (c) 2008, 2016 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 | 
|  | *******************************************************************************/ | 
|  |  | 
|  | /* | 
|  | * This file is deprecated. Calls to this file will redirect to the | 
|  | * corresponding functionality in the PMI when a valid project | 
|  | * id is provided, or to the project root otherwise. | 
|  | * | 
|  | * The PMI has its own links directly to the generator. | 
|  | */ | 
|  |  | 
|  | require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php"); | 
|  | $App = new App(); | 
|  |  | 
|  | require_once dirname(__FILE__) . "/classes/Project.class.php"; | 
|  | require_once dirname(__FILE__) . "/classes/common.php"; | 
|  | require_once dirname(__FILE__) . "/classes/debug.php"; | 
|  |  | 
|  | /** | 
|  | * Iterate through the list of project ids provided and | 
|  | * keep only those ids that map to actual existing projects. | 
|  | */ | 
|  | function getProjectIdsFromRequest() { | 
|  | if (!$params = split(',', getRawProjectIdsFromRequest())) return null; | 
|  | $ids = array(); | 
|  | foreach($params as $id) { | 
|  | if (isValidProjectId($id)) $ids[] = $id; | 
|  | } | 
|  | return $ids; | 
|  | } | 
|  |  | 
|  | /** | 
|  | * The ids of the projects that we're going to work with can | 
|  | * be specified in either the 'id' or 'projectid' parameters. | 
|  | * Regardless of which parameter is used, we expect a | 
|  | * comma-separated list of project ids. | 
|  | */ | 
|  | function getRawProjectIdsFromRequest() { | 
|  | if (isset($_REQUEST['id'])) return $_REQUEST['id']; | 
|  | if (isset($_REQUEST['projectid'])) return $_REQUEST['projectid']; | 
|  | return array(); | 
|  | } | 
|  |  | 
|  | /** | 
|  | * Answer the top-most project hierarchically in the list of project ids. | 
|  | * Most of the time, this will be exactly one project, but in some cases | 
|  | * (e.g. the Eclipse Project) multiples are provided. | 
|  | */ | 
|  | function getRootProjectId() { | 
|  | $ids = getProjectIdsFromRequest(); | 
|  | if (count($ids) == 1) return $ids[0]; | 
|  |  | 
|  | /** | 
|  | * Keep things very simple. Sort the list so that the | 
|  | * entry with the smallest number of segments (separated by | 
|  | * dots) is the first thing in the list. Assume that the | 
|  | * first entry after sorting is the top-most project | 
|  | * hierarchically. | 
|  | * | 
|  | * FIXME Determine how to deal with top-most siblings. | 
|  | * | 
|  | * This is pretty inefficient since we'll end up recomputing | 
|  | * values repeatedly. However, this script isn't called | 
|  | * very often, the check for a single value will bail us | 
|  | * out before we get to this point most of the time, and | 
|  | * the inefficiency really isn't that bad given that the | 
|  | * size of the array will always be pretty small. | 
|  | */ | 
|  | usort($ids, function($a, $b) { | 
|  | $oa = count(preg_split('/./', $a)); | 
|  | $ob = count(preg_split('/./', $b)); | 
|  |  | 
|  | return $oa == $ob ? 0 : ($oa > $ob ? 1 : -1); | 
|  | }); | 
|  |  | 
|  | return $ids[0]; | 
|  | } | 
|  |  | 
|  | /* | 
|  | * Search for the top-most project in the list of project ids. | 
|  | * If there is one, then redirect to the PMI instance for IP Log | 
|  | * generation. | 
|  | * | 
|  | * Note that we try to find the next release and generate the | 
|  | * IP Log based on that (releases may include subprojects and | 
|  | * we need to include them). If there is no next release, then | 
|  | * just open the IP Log generator on the project itself. | 
|  | */ | 
|  | $url = "/projects"; | 
|  | if ($parent = getRootProjectId()) { | 
|  | if ($project = get_project_from_pmi($parent)) { | 
|  | if ($release = $project->getNextRelease()) { | 
|  | $url = $release->getUrl(); | 
|  | } else { | 
|  | $url = $project->getUrl(); | 
|  | } | 
|  | $url = "$url/iplog/preview"; | 
|  | } | 
|  | } | 
|  |  | 
|  | header("Location: $url"); | 
|  | exit(); | 
|  |  | 
|  | ?> |