charset = $charset; return $this; } public function getCharset(){ $charset = $this->charset; return is_null($charset) ? static::DEFAULT_CHARSET : $charset; } protected function setContentType($contentType){ $this->contentType = $contentType; return $this; } protected function callContentType(){ header('Content-Type: ' . $this->contentType); } public function display(){ echo $this->stringify(); return $this; } public function setItems(array $items){ $this->items = array_map(array($this, 'array_trim'), $items); return $this; } public function getItems(){ if(!is_array($this->items)) throw new \LogicException('Feed the ' . get_class($this) . ' with "setItems" method before !'); return $this->items; } /** * Define common informations can be required by formats and set default value for unknown values * @param array $extraInfos array with know informations (there isn't merge !!!) * @return this */ public function setExtraInfos(array $extraInfos = array()){ foreach(array('name', 'uri', 'icon') as $infoName) { if(!isset($extraInfos[$infoName])) { $extraInfos[$infoName] = ''; } } $this->extraInfos = $extraInfos; return $this; } /** * Return extra infos * @return array See "setExtraInfos" detail method to know what extra are disponibles */ public function getExtraInfos(){ if(is_null($this->extraInfos)) { // No extra info ? $this->setExtraInfos(); // Define with default value } return $this->extraInfos; } /** * Sanitized html while leaving it functionnal. * The aim is to keep html as-is (with clickable hyperlinks) * while reducing annoying and potentially dangerous things. * Yes, I know sanitizing HTML 100% is an impossible task. * Maybe we'll switch to http://htmlpurifier.org/ * or http://www.bioinformatics.org/phplabware/internal_utilities/htmLawed/index.php */ protected function sanitizeHtml($html) { $html = str_replace(' $value) { if(is_string($value)) $elements[$key] = trim($value); } return $elements; } }