blob: a8da76b60440ae29b383f7ab00640cd4a6d01060 [file] [log] [blame]
<?php
/*******************************************************************************
* Copyright (c) 2013, 2017 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
*******************************************************************************/
require_once dirname(__FILE__) . '/classes/Forge.class.inc';
require_once dirname(__FILE__) . '/classes/common.php';
require_once dirname(__FILE__) . '/classes/debug.php';
$actions = array(
array('name' => 'Project Information', 'code' => 'pmi', 'resource' => ''),
array('name' => 'Nominate a Committer', 'code' => 'cm', 'resource' => '/nominate/CM'),
array('name' => 'Nominate a Project Lead', 'code' => 'pl', 'resource' => '/nominate/PL'),
array('name' => 'Create a CQ', 'code' => 'cq', 'resource' => '/cq/create'),
array('name' => 'Generate IP Log', 'code' => 'iplog', 'resource' => '/generate-iplog'),
);
if (isset($_GET['id'])) $id = $_GET['id'];
else if (isset($_GET['projectid'])) $id = $_GET['projectid'];
function getAction($code) {
global $actions;
foreach($actions as $action) {
if ($code == $action['code']) return $action['resource'];
}
return '';
}
// If we've been passed a valid project id, then jump to
// that project. If we've been passed an action code, then
// qualify the target URL appropriately.
if (isValidProjectId($id)) {
if ($forge = Forge::getForgeForProjectId($id)) {
$url = $forge->getUrl();
$id = $forge->getLocalProjectId($id);
$action = getAction(@$_GET['action']);
header("Location:$url/projects/{$id}{$action}");
return;
}
}
// We don't have a valid project id, so we need
// to be more clever.
require_once dirname(__FILE__) . '/classes/Project.class.php';
require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/classes/friends/friend.class.php");
$App = new App();
function getUserId() {
global $App;
// This call will exit() if there's no logged in user, but check anyway
// because sometimes APIs change.
if (!$Session = $App->useSession(TRUE)) return null;
if (!$Friend = $Session->getFriend()) return null;
if (!$userId = $Friend->getLDAPUID()) return null;
return $userId;
}
function getProjectsForUser() {
if (!$userId = getUserId()) return array();
return Project::getProjectsForCommitter($userId);
}
// If we cannot figure out any projects for which the user is
// a committer, then bail out. Depending on how the required
// session stuff works, this may never actually happen.
if (!$projects = getProjectsForUser()) {
// There's nothing that we can do for an unauthenticated user.
header("Location:index.php");
exit();
}
// If the user is a committer on exactly one project, then
// just jump to that project. Note that we use a recursive
// redirect to this file that should not result in repeated
// recursion given that we're pulling out what will very certainly
// be a valid project id.
if (count($projects) == 1) {
$project = $projects[0];
$parameters = array('id=' . $project->getId());
if (isset($_GET['action'])) $parameters[] = 'action=' . $_GET['action'];
$url = 'project.php?' . implode('&', $parameters);
header("Location:$url");
exit();
}
// The user is associated with more than one project, render
// a page with a list of projects and links to the sorts of things
// they can do.
require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/nav.class.php");
require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/menu.class.php");
$Nav = new Nav();
$Menu = new Menu();
$App->preventCaching();
include($App->getProjectCommon());
$pageTitle = "Eclipse Projects";
$pageAuthor = "";
$pageKeywords = "";
ob_start();
?>
<div class='homeitem'>
<h3>Pick a Project</h3>
<p>Our records show that you are a committer on the following projects:
<?php
foreach($projects as $project) {
$name = $project->getFormalName();
$id = $project->getId();
$url = $project->getUrl();
echo "<h3>$name</h3>";
echo "<p>";
foreach($actions as $action) {
$title = $action['name'];
$code = $action['code'];
$resource = $action['resource'];
echo " <a href=\"{$url}{$resource}\"><img width=\"75px\" alt=\"$title\" src=\"images/{$code}.png\"/></a>";
}
echo "</p>";
}
?>
</div>
<?php
$html = ob_get_contents();
ob_end_clean();
$App->generatePage($theme, $Menu, $Nav, $pageAuthor, $pageKeywords, $pageTitle, $html);
?>