blob: 65e59e5de995c8d539805710f32e209949c661ea [file] [log] [blame]
<?php
/*******************************************************************************
* Copyright (c) 2012 EclipseSource 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
******************************************************************************/
class Builds {
private $builds;
function Builds( $version ) {
$buildsDirectory = $_SERVER['DOCUMENT_ROOT'] . "/rap/_builds/";
$buildsFile = $buildsDirectory . "builds-" . $version . ".xml";
$this->builds = simplexml_load_file( $buildsFile );
if( ! $this->builds ) {
trigger_error( "Could not initialize Builds object", E_USER_ERROR );
}
}
function findBuild( $buildName ) {
$result = NULL;
if( $buildName ) {
$selectedBuilds = $this->builds->xpath( "/builds/build[@shortname = '" . $buildName . "']" );
if( count( $selectedBuilds ) === 1 ) {
$result = new Build( $this, $selectedBuilds[ 0 ] );
}
}
return $result;
}
function getLastCompletedBuild() {
$result = NULL;
$selectedBuilds = $this->builds->xpath( "/builds/build[@status = 'completed']" );
if( count( $selectedBuilds ) > 0 ) {
$result = new Build( $this, end( $selectedBuilds ) );
}
return $result;
}
function getLastCompletedReleaseBuild() {
$result = NULL;
$selectedBuilds = $this->builds->xpath( "/builds/build[@status = 'completed' and ( @type = 'R' or @type = 'SR' ) ]" );
if( count( $selectedBuilds ) > 0 ) {
$result = new Build( $this, end( $selectedBuilds ) );
}
return $result;
}
function getPreviousBuilds( $buildName ) {
$result = array();
foreach( $this->builds->build as $build ) {
if( $build[ "shortname" ] == $buildName ) {
break;
}
$result[] = new Build( $this, $build );
}
return $result;
}
function getVersion() {
return (string) $this->builds[ "version" ];
}
function getSimultaneousRelease() {
return (string) $this->builds[ "simultaneousRelease" ];
}
function getUpdateSite( $featureId ) {
$feature = $this->_getFeature( $featureId );
return $feature ? (string) $feature->site : NULL;
}
function getDescription( $featureId ) {
$feature = $this->_getFeature( $featureId );
return $feature ? (string) $feature->description : NULL;
}
function _getFeature( $id ) {
$features = $this->builds->xpath( "/builds/feature[@id = '" . $id . "']" );
return count( $features ) === 1 ? $features[ 0 ] : NULL;
}
}
class Build {
private $parent;
private $build;
function Build( $parent, $element ) {
$this->parent = $parent;
$this->build = $element;
}
function getName() {
return (string) $this->build[ "name" ];
}
function getShortName() {
return (string) $this->build[ "shortname" ];
}
function isCompleted() {
return ( (string) $this->build[ "status" ] ) === "completed";
}
function getPublishDate() {
return (string) $this->build[ "publishDate" ];
}
function getNews() {
return (string) $this->build[ "news" ];
}
function getReleaseNotes() {
return (string) $this->build[ "relnotes" ];
}
function getZipFile( $featureId ) {
$feature = $this->parent->_getFeature( $featureId );
if( $feature ) {
return (string) $this->build[ $featureId . "Zip" ];
}
return NULL;
}
function getZipFileUrl( $featureId ) {
$filename = $this->getZipFile( $featureId );
if( $filename ) {
$feature = $this->parent->_getFeature( $featureId );
if( $feature ) {
$featurePath = (string) $feature->downloadPath;
$downloadPrefix = "http://www.eclipse.org/downloads/download.php?file=";
return $downloadPrefix . $featurePath . $filename;
}
}
return NULL;
}
function getType() {
$result = NULL;
if( $this->build[ "type" ] == "M" ) {
$result = "Milestone Build";
} else if( $this->build[ "type" ] == "RC" ) {
$result = "Release Candidate";
} else if( $this->build[ "type" ] == "R" ) {
$result = "Release";
} else if( $this->build[ "type" ] == "SR" ) {
$result = "Service Release";
}
return $result;
}
function getTargetMilestones() {
$result;
if( $this->build[ "type" ] == "R" ) {
$result = array();
foreach( $this->parent->getPreviousBuilds( "R" ) as $build ) {
$result[] = $build->getName();
}
$result[] = $this->build[ "name" ];
} else if( $this->build[ "type" ] == "SR" ) {
$result = "sr" . str_replace( ".", "", $this->build[ "name" ] );
} else {
$result = $this->build[ "name" ];
}
return $result;
}
}
?>