blob: cfbdc7919ae9de9bb3c9d4df2a8b1c3df6e4cebf [file] [log] [blame]
<?php
/**
* ********************************************************************
* Copyright (c) 2021, 2023 Eclipse Foundation and others.
*
* 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:
* Christopher Guindon (Eclipse Foundation) - initial API and implementation
* Olivier Goulet <olivier.goulet@eclipse-foundation.org>
*
* SPDX-License-Identifier: EPL-2.0
* ********************************************************************
*/
/**
* Class Director.
*
* This class represents an Eclipse Foundation director.
*/
class Director {
private $first_name = '';
private $last_name = '';
private $organization_name = '';
private $organization_id = '';
private $relation = '';
private $bio = '';
public function setFirstName($first_name) {
$this->first_name = ucwords(strtolower($first_name));
return $this;
}
public function getFirstName() {
return $this->first_name;
}
public function setLastName($last_name) {
$this->last_name = ucwords(strtolower($last_name));
return $this;
}
public function getLastName() {
return $this->last_name;
}
public function setOrganizationName($organization_name) {
$this->organization_name = $organization_name;
return $this;
}
public function getOrganizationName() {
return $this->organization_name;
}
public function setOrganizationId($organization_id) {
$this->organization_id = $organization_id;
return $this;
}
public function getOrganizationId() {
return $this->organization_id;
}
public function setRelation($relation) {
$this->relation = strtoupper($relation);
return $this;
}
public function getRelation() {
return $this->relation;
}
/**
* Replaces accented characters with their non-special character counterpart.
*
* @param string $str
* A string which may contain accents.
*
* @return string
* A string without accents.
*/
private function replace_accents($str) {
$str = htmlentities($str, ENT_COMPAT, "UTF-8");
// Replace umlaut, acute, grave, circ and tilde accents from a string
$str = preg_replace('/&([a-zA-Z])(uml|acute|grave|circ|tilde);/','$1',$str);
return html_entity_decode($str);
}
/**
* Get Bio from org repository
*
* @return string
*/
private function getBio() {
if (empty($this->bio)) {
// Handle special cases where first or last name had multiple words
$formatted_filename = str_replace(' ', '_', $this->getFirstName() . ' ' . $this->getLastName());
// Replace periods in name
$formatted_filename = str_replace('.', '', $formatted_filename);
$formatted_filename = $this->replace_accents($formatted_filename);
$formatted_filename = strtolower($formatted_filename);
if (file_exists($file = $_SERVER['DOCUMENT_ROOT'] . '/org/foundation/boardbios/' . $formatted_filename . '.php')) {
$this->bio = file_get_contents($file);
}
}
return $this->bio;
}
/**
* Get the html output of an Eclipse Foundation director.
*
* @return string
* The html output of an Eclipse Foundation director.
*/
function outputDirector() {
$is_aisbl_director = in_array($this->getRelation(), array("BRBE", "CBBE", "CMBE"));
return $is_aisbl_director ? $this->outputAISBLDirector() : $this->outputIncDirector();
}
/**
* Get the html output of an Eclipse Foundation AISBL director.
*
* @return string
* The html output of an Eclipse Foundation AISBL director.
*/
private function outputAISBLDirector() {
return "<h3>{$this->getFirstName()} {$this->getLastName()} <small>{$this->getOrganizationName()}</small></h3>
<div class=\"row\">
<div class=\"col-sm-20\">{$this->getBio()}</div>
<div class=\"col-sm-4\">{$this->getMemberLogo()}</div>
</div>
<hr>";
}
/**
* Get the html output of an Eclipse Foundation, Inc. director.
*
* @return string
* The html output of an Eclipse Foundation, Inc. director.
*/
private function outputIncDirector() {
return "<h3>{$this->getFirstName()} {$this->getLastName()}</h3>
<div class=\"row\">
<div class=\"col-sm-20\">{$this->getBio()}</div>
</div>
<hr>";
}
/**
* Get sortable array key name value
*
* @return string
*/
public function getArrayKey() {
return ucwords($this->getLastName() . ', ' . $this->getFirstName());
}
/**
* Get Member logo
*
* @return string
*/
function getMemberLogo() {
$img = "";
if ($this->getOrganizationId()) {
$img = "<img src='http://www.eclipse.org/membership/scripts/get_image.php?id=" . $this->getOrganizationId() . "&size=small'>";
}
return $img;
}
}