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