blob: 770bcc4beb19e65e241212a8ed86bac26b662503 [file] [log] [blame]
<?php
/**
* Copyright (c) 2018 Eclipse Foundation.
*
* This program and the accompanying materials are made
* available under the terms of the Eclipse Public License 2.0
* which is available at https://www.eclipse.org/legal/epl-2.0/
*
* Contributors:
* Eric Poirier (Eclipse Foundation) - initial API and implementation
* Christopher Guindon (Eclipse Foundation)
*
* SPDX-License-Identifier: EPL-2.0
*/
//if name of the file requested is the same as the current file, the script will exit directly.
if(basename(__FILE__) == basename($_SERVER['PHP_SELF'])){exit();}
require_once("DownloadsProject.class.php");
require_once("eclipseInstaller.php");
class Downloads extends DownloadsProject {
protected $projects = array();
protected $banner_ads = array();
protected $promo_ad_type = "default";
private $Installer = NULL;
public function __construct() {
$this->Installer = new EclipseInstaller();
$this->Installer->setInstallerLayout('layout_a');
// Set the initial content of the Projects array
$this->_setProjectsArray();
// PROJECTS
$Project = new DownloadsProject();
$Project->setTitle('Eclipse Temurin');
$Project->setDescription('The Eclipse Temurin™ project provides high-quality, TCK certified OpenJDK runtimes and associated technology for use across the Java™ ecosystem.');
$Project->setLogo('assets/public/images/logo-temurin.png');
$Project->setProjectType($this->projects['tool_platforms']['title']);
$Project->setDownloadUrl64Bit('https://adoptium.net/');
$Project->setLearnMoreUrl('https://projects.eclipse.org/projects/adoptium.temurin');
$Project->setProjectsAttributes('image','height','70');
$Project->setProjectsAttributes('container','class','col-md-18 col-md-offset-3 downloads-items');
$this->newProject($Project);
$Project = new DownloadsProject();
$Project->setTitle('Eclipse Che');
$Project->setDescription('Eclipse Che is a developer workspace server and cloud IDE.');
$Project->setLogo('assets/public/images/logo-che.png');
$Project->setProjectType($this->projects['other_tools']['title']);
$Project->setDownloadUrl64Bit('https://www.eclipse.org/che/getting-started/download/');
$Project->setLearnMoreUrl('https://eclipse.org/che');
$Project->setProjectsAttributes('image','height','50');
$Project->setProjectsAttributes('container','class','col-md-12 downloads-items');
$this->newProject($Project);
$Project = new DownloadsProject();
$Project->setTitle('Theia');
$Project->setDescription('An open, flexible and extensible cloud & desktop IDE platform');
$Project->setLogo('assets/public/images/logo-theia.png');
$Project->setProjectType($this->projects['other_tools']['title']);
$Project->setDownloadUrl64Bit('https://theia-ide.org');
$Project->setLearnMoreUrl('https://theia-ide.org/#gettingstarted');
$Project->setProjectsAttributes('image','height','25');
$Project->setProjectsAttributes('container','class','col-md-12 downloads-items');
$this->newProject($Project);
$Project = new DownloadsProject();
$Project->setTitle('Jetty');
$Project->setDescription('Eclipse Jetty provides a web server and javax.servlet container.');
$Project->setLogo('assets/public/images/logo-jetty.png');
$Project->setProjectType($this->projects['other_runtimes']['title']);
$Project->setDownloadUrl64Bit('https://www.eclipse.org/jetty/download.html');
$Project->setLearnMoreUrl('http://www.eclipse.org/jetty/');
$Project->setProjectsAttributes('container','class','col-md-12 downloads-items');
$this->newProject($Project);
$Project = new DownloadsProject();
$Project->setTitle('GlassFish');
$Project->setDescription('Eclipse GlassFish provides a complete application server which serves as a compatible implementation for the Jakarta EE specification.');
$Project->setLogo('assets/public/images/logo-glassfish.png');
$Project->setProjectType($this->projects['other_runtimes']['title']);
$Project->setDownloadUrl64Bit('https://projects.eclipse.org/projects/ee4j.glassfish/downloads');
$Project->setLearnMoreUrl('https://projects.eclipse.org/projects/ee4j.glassfish');
$Project->setProjectsAttributes('image','height','75');
$Project->setProjectsAttributes('container','class','col-md-12 downloads-items');
$this->newProject($Project);
}
/**
* Set the initial content of the Projects Array
*/
private function _setProjectsArray() {
$this->projects = array(
'tool_platforms' => array(
'title' => 'OpenJDK Runtimes',
'items' => array(),
),
'other_tools' => array(
'title' => 'Other Tools',
'items' => array(),
),
'other_runtimes' => array(
'title' => 'Other Runtimes',
'items' => array(),
),
);
}
/**
* Adds a new Project to a specific array
*
* @param $Project object
*
* @return bool
*/
public function newProject($Project = NULL) {
// Prevent an invalid project to be entered
if (!$valid = $this->validProject($Project)) {
return FALSE;
}
// Add each projects to their own category
foreach ($this->projects as $key => $category) {
if ($Project->getProjectType() == $category['title']) {
$this->projects[$key]['items'][] = $Project;
}
}
return TRUE;
}
/**
* Makes the banner ad disapear
*
* @param $hide - bool
*/
public function hideBannerAd($hide = TRUE) {
if (filter_var($hide, FILTER_VALIDATE_BOOLEAN)) {
$this->hide_banner_ad = $hide;
}
}
/**
* Returns a promo ad block depending on the ad type
*
* @deprecated
* @return string
*/
public function getPromoAd() {
return "";
}
/**
* Returns the HTML output of a list of projects
*
* @param $projects - array
*
* @return string
*/
private function _projectsOutput($projects) {
ob_start();
foreach ($projects as $project) {
include 'views/view.projects.php';
}
return ob_get_clean();
}
/**
* Get all the projects
*
* @return string
*/
public function getAllDownloadsProjects() {
ob_start();
foreach ($this->projects as $key =>$category) {
include 'views/view.category.php';
}
return ob_get_clean();
}
/**
* Get the list of projects depending on the specified category
*
* @param $category - string
*
* @return string
*/
public function getProjectsList($category) {
if (filter_var($category, FILTER_SANITIZE_STRING)) {
return $this->_projectsOutput($this->projects[$category]['items']);
}
}
}