1<?php 2/** 3 * webtrees: online genealogy 4 * Copyright (C) 2019 webtrees development team 5 * This program is free software: you can redistribute it and/or modify 6 * it under the terms of the GNU General Public License as published by 7 * the Free Software Foundation, either version 3 of the License, or 8 * (at your option) any later version. 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * You should have received a copy of the GNU General Public License 14 * along with this program. If not, see <http://www.gnu.org/licenses/>. 15 */ 16declare(strict_types=1); 17 18namespace Fisharebest\Webtrees; 19 20/** 21 * Class Html - Add HTML markup to elements consistently. 22 */ 23class Html 24{ 25 /** 26 * Convert an array of HTML attributes to an HTML string. 27 * 28 * @param mixed[] $attributes 29 * 30 * @return string 31 */ 32 public static function attributes(array $attributes): string 33 { 34 $html = []; 35 foreach ($attributes as $key => $value) { 36 if (is_string($value)) { 37 $html[] = e($key) . '="' . e($value) . '"'; 38 } elseif (is_int($value)) { 39 $html[] = e($key) . '="' . (string) $value . '"'; 40 } elseif ($value !== false) { 41 $html[] = e($key); 42 } 43 } 44 45 return implode(' ', $html); 46 } 47 48 /** 49 * Encode a URL. 50 * 51 * @param string $path 52 * @param array $data 53 * 54 * @return string 55 */ 56 public static function url($path, array $data): string 57 { 58 $path = strtr($path, ' ', '%20'); 59 60 return $path . '?' . http_build_query($data, '', '&', PHP_QUERY_RFC3986); 61 } 62 63 /** 64 * Filenames are (almost?) always LTR, even on RTL systems. 65 * 66 * @param string $filename 67 * 68 * @return string 69 */ 70 public static function filename($filename): string 71 { 72 return '<samp class="filename" dir="ltr">' . e($filename) . '</samp>'; 73 } 74} 75