| <?php | |
| /******************************************************************************* | |
| * Copyright (c) 2009 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: | |
| * Eclipse Foundation- initial API and implementation | |
| *******************************************************************************/ | |
| require_once(dirname(__FILE__) . "/../classes/common.php"); | |
| require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php"); | |
| $App = new App(); | |
| include($App->getProjectCommon()); | |
| /* | |
| * This file generates XML content describing the hierarchy of projects. | |
| * All projects are reported regardless of their state (i.e. archived projects | |
| * are included). | |
| */ | |
| //require_once("../common/shared_functions.php"); | |
| //ini_set('error_reporting', E_ALL); | |
| //ini_set('display_errors', 1); | |
| require_once("iplog_licenses.php"); | |
| require_once("iplog_contribution_questionnaires.php"); | |
| require_once("iplog_committers.php"); | |
| require_once("iplog_contributors.php"); | |
| //define("PROJECT_ID_PATTERN", "/^[a-zA-Z0-9]+(\.[a-zA-Z0-9]+){0,2}$/"); | |
| /* | |
| * $projectids is an array containing the ids of the projects provided | |
| * via the http request. We take the value provided in the "id" parameter | |
| * and break the string into a collection of ids; each id is separated | |
| * from the next by a comma. The first value is assumed to be the | |
| * id of the project for which the log is generated. | |
| */ | |
| $ids = split(',', $_GET["id"]); | |
| $allProjects = clean_project_ids($ids); | |
| header("Content-type: text/xml"); | |
| header("Content-Disposition: inline; filename=project.iplog"); | |
| $filename = $_SERVER['DOCUMENT_ROOT'] . "/projects/xml/project_ip_data.php"; | |
| $last_modified = filemtime($filename); | |
| $modified_date = date ("Y-m-d H:i:s", $last_modified); | |
| echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"; | |
| echo "<iplog:iplog xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:iplog=\"http://www.eclipse.org/projects/xml/iplog\" xsi:schemaLocation=\"http://www.eclipse.org/projects/xml/iplog iplog.xsd\">\n"; | |
| dump_project_ids($allProjects); | |
| dump_project_licenses($allProjects); | |
| dump_project_cqs($allProjects); | |
| dump_project_committers($allProjects); | |
| dump_project_contributors($allProjects); | |
| echo "</iplog:iplog>"; | |
| /* | |
| * This function cleans up the given array of project ids to make | |
| * sure that they at least look like proper values. That is, the | |
| * array of ids provided is pruned to only include those that match | |
| * the conventions established for project ids. No actual check is | |
| * done by this function to see if the ids are real. | |
| */ | |
| function clean_project_ids(&$ids) { | |
| $projectids = array(); | |
| foreach ($ids as $id) { | |
| //$id = trim($id); | |
| if (isValidProjectId($id)) { | |
| $projectids[] = $id; | |
| } | |
| } | |
| return $projectids; | |
| } | |
| //function isValidProjectId($id) { | |
| // return preg_match(PROJECT_ID_PATTERN, $id) > 0; | |
| //} | |
| /* | |
| * Echo the list of projects we've received. We query the database | |
| * to find the names for the projects with the given ids. As a result | |
| * of the query, the output contains only those projects that actually | |
| * exist. | |
| * | |
| * This function assumes that the first id in the list is the "root" | |
| * project and renders it specially. Specifically, the first id is | |
| * rendered using the tag "iplog:root"; each subsequent project | |
| * is rendered as "iplog:project" per the XSD. | |
| */ | |
| function dump_project_ids(&$projectids) { | |
| global $App; | |
| $query = "SELECT Name, ProjectId FROM Projects where ProjectId in ('" . implode( "','", $projectids ) ."')"; | |
| $result = $App->foundation_sql($query); | |
| $tag = "project"; | |
| while( $row = mysql_fetch_assoc($result) ) { | |
| $projectid = $row['ProjectId']; | |
| $name = $row['Name']; | |
| echo "<iplog:$tag id=\"$projectid\" name=\"$name\"/>"; | |
| $tag = "includes"; | |
| } | |
| } | |
| function log_message($message) { | |
| //$message = htmlspecialchars($message); | |
| //echo "<!-- log message=\"$message\" -->"; | |
| } | |
| function log_query($sql) { | |
| log_message("sql: $sql"); | |
| } | |
| ?> |