| <?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); |
| ?> |