blob: d0001afa16627b2841758f7529105ab8fe41ae3a [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();}
class DownloadsProject {
private $title = "";
private $description = "";
private $download_url_64_bit = "";
private $download_url_32_bit = "";
private $learn_more_url = "";
private $project_type = "";
private $logo = "";
private $attributes = "";
public function __construct() {
// Set default classes for container
$this->setProjectsAttributes('container','class','col-md-5th col-sm-8 col-xs-16 col-xs-offset-4 col-sm-offset-0 downloads-items');
}
/**
* Return the Title of a project
*
* @return string
*/
public function getTitle() {
return $this->title;
}
/**
* Set the Title of a project
*
* @param string $title
*/
public function setTitle($title = "") {
if (filter_var($title, FILTER_SANITIZE_STRING)) {
$this->title = $title;
}
}
/**
* Return the Description of a project
*
* @return string
*/
public function getDescription() {
return $this->description;
}
/**
* Set the Description of a project
*
* @param string $description
*/
public function setDescription($description = "") {
if (filter_var($description, FILTER_SANITIZE_STRING)) {
$this->description = $description;
}
}
/**
* Return the 64 bit Download URL of a project
*
* @return string
*/
public function getDownloadUrl64Bit() {
return $this->download_url_64_bit;
}
/**
* Set the 64 bit Download URL of a project
*
* @param string $url
*/
public function setDownloadUrl64Bit($url = "") {
if (filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED)) {
$this->download_url_64_bit = $url;
}
}
/**
* Return the 32 bit Download URL of a project
*
* @return string
*/
public function getDownloadUrl32Bit() {
return $this->download_url_32_bit;
}
/**
* Set the 32 bit Download URL of a project
*
* @param string $url
*/
public function setDownloadUrl32Bit($url = "") {
if (filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED)) {
$this->download_url_32_bit = $url;
}
}
/**
* Return the Learn More URL of a project
*
* @return string
*/
public function getLearnMoreUrl() {
return $this->learn_more_url;
}
/**
* Set the Learn More URL of a project
*
* @param string $url
*/
public function setLearnMoreUrl($url = "") {
if (filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_HOST_REQUIRED)) {
$this->learn_more_url = $url;
}
}
/**
* Return the Project Type of a project
*
* @return string
*/
public function getProjectType() {
return $this->project_type;
}
/**
* Set the Project Type of a project
*
* @param string $type
*/
public function setProjectType($type = "") {
if (filter_var($type, FILTER_SANITIZE_STRING)) {
$this->project_type = $type;
}
}
/**
* Return the Logo of a project
*
* @return string
*/
public function getLogo() {
return $this->logo;
}
/**
* Set the Logo of a project
*
* @param string $logo
*/
public function setLogo($logo = "") {
// Check if the string is ending by either png, jpg, jpeg or gif
if (preg_match("/(.+)\.(png|jpg|jpeg|gif)/i", $logo)) {
$this->logo = $logo;
}
}
/**
* Set Attributes for specific elements
*
* @param string $element - HTML element
*
* @param string $type - HTML attributes (Ex: class)
*
* @param string $value
*/
public function setProjectsAttributes($element = '', $type = 'class', $value = "") {
$allowed_type = array(
'class',
'height',
'style',
);
$type = strtolower($type);
$value = explode(' ', $value);
foreach ($value as $val) {
if (in_array($type, $allowed_type) && is_string($element) && !empty($element) && !empty($val)) {
switch ($type) {
case 'class':
// Append classes instead of overriting them.
// This way we can set multiple classes for differents contexts.
if (!isset($this->attributes[$type][$element]) || !in_array($val, $this->attributes[$type][$element])) {
$this->attributes['class'][$element][] = $val;
}
break;
// For everything else, we only keep the last value set.
default:
$this->attributes[$type][$element] = array(
$val
);
break;
}
}
}
}
/**
* Return Attributes based on the Element and the Type
*
* @param string $element - html element
*
* @param string $type - html attribute - Example: class
*
* @return string
*/
public function getProjectsAttributes($element = "", $type = "") {
$allowed_type = array(
'class',
'height',
'style',
);
// If type is null, we shall return the string with both class and id.
if (is_null($type)) {
$html = array();
if (is_string($element) && !empty($element)) {
foreach ($allowed_type as $type) {
if (isset($this->attributes[$type][$element]) && is_array($this->attributes[$type][$element])) {
$html[] = $type . '="' . implode(' ', $this->attributes[$type][$element]) . '"';
}
}
}
// Add a space if we have someting to return.
$prefix = "";
if (!empty($html)) {
$prefix = " ";
}
return $prefix . implode(" ", $html);
}
// If type is set, return only class or id values.
if (in_array($type, $allowed_type) && is_string($element) && !empty($element)) {
if (isset($this->attributes[$type][$element]) && is_array($this->attributes[$type][$element])) {
return implode(' ', $this->attributes[$type][$element]);
}
}
return '';
}
/**
* Determines if a project is valid or not
*
* @return bool
*/
public function validProject($Project = NULL) {
if ($Project == NULL) {
return FALSE;
}
$logo = $Project->getLogo();
$download_url = $Project->getDownloadUrl64Bit();
$title = $Project->getTitle();
$type = $Project->getProjectType();
if ($title == "" || $logo ="" || $download_url = "" || $type == "") {
return FALSE;
}
return TRUE;
}
}