getMessage(); return $message ?? ''; } } function render_info_or_json(bool $json, string $message, int $httpCode = 200, string $template = 'errors.%d'): string { $error = $httpCode >= 400; http_response_code($httpCode); if ($json) { return json_encode([($error ? 'error' : 'message') => $message, 'success' => $error]); } return render_info($message, $httpCode, $template); } function html_link(string $url, ?string $content = null, $attributes = []): string { $content = $content ?? $url; $attributes = array_merge( is_string($attributes) ? ['class' => $attributes] : $attributes, ['href' => $url] ); if (mb_strpos($url, '://') !== false) { $attributes['target'] = '_blank'; $attributes['rel'] = 'noreferrer noopener'; } $html = ' $value) { $value = str_replace('"', '\"', $value); $html .= " {$name}=\"{$value}\""; } $html .= ">{$content}"; return $html; } function html_colour(?int $colour, $attribs = '--user-colour'): string { $colour = $colour ?? colour_none(); if (is_string($attribs)) { $attribs = [ $attribs => '%s', ]; } if (!$attribs) { $attribs = [ 'color' => '%s', '--user-colour' => '%s', ]; } $css = ''; $value = colour_get_css($colour); foreach ($attribs as $name => $format) { $css .= $name . ':' . sprintf($format, $value) . ';'; } return $css; }