| <?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 = ""; | |
| /** | |
| * 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; | |
| } | |
| } |