diff --git a/composer.json b/composer.json index 2a10b92..64188ab 100644 --- a/composer.json +++ b/composer.json @@ -25,8 +25,11 @@ }, "autoload": { "files": [ - "lib/helpers.php", + "helpers/app.php", "helpers/csrf.php", + "helpers/favicon.php", + "helpers/form.php", + "helpers/template.php", "lib/Translator.php", "lib/Request.php", "lib/Response.php", diff --git a/helpers/app.php b/helpers/app.php new file mode 100644 index 0000000..12e5b79 --- /dev/null +++ b/helpers/app.php @@ -0,0 +1,55 @@ + '.png', + 'image/gif' => '.gif', + 'image/x-icon' => '.ico', + 'image/jpeg' => '.jpg', + 'image/jpg' => '.jpg' + ); + + if (array_key_exists($type, $types)) { + return $types[$type]; + } else { + return '.ico'; + } +} + +function favicon(array $favicons, $feed_id) +{ + if (! empty($favicons[$feed_id])) { + return ''; + } + + return ''; +} diff --git a/helpers/form.php b/helpers/form.php new file mode 100644 index 0000000..d60abee --- /dev/null +++ b/helpers/form.php @@ -0,0 +1,103 @@ +'; + + foreach ($errors[$name] as $error) { + $html .= '
  • '.escape($error).'
  • '; + } + + $html .= ''; + } + + return $html; +} + +function form_value($values, $name) +{ + if (isset($values->$name)) { + return 'value="'.escape($values->$name).'"'; + } + + return isset($values[$name]) ? 'value="'.escape($values[$name]).'"' : ''; +} + +function form_hidden($name, $values = array()) +{ + return ''; +} + +function form_select($name, array $options, $values = array(), array $errors = array(), $class = '') +{ + $html = ''; + $html .= error_list($errors, $name); + + return $html; +} + +function form_radio($name, $label, $value, $checked = false, $class = '') +{ + return ''; +} + +function form_checkbox($name, $label, $value, $checked = false, $class = '') +{ + return ''; +} + +function form_label($label, $name, $class = '') +{ + return ''; +} + +function form_input($type, $name, $values = array(), array $errors = array(), array $attributes = array(), $class = '') +{ + $class .= error_class($errors, $name); + + $html = ''; + $html .= error_list($errors, $name); + + return $html; +} + +function form_text($name, $values = array(), array $errors = array(), array $attributes = array(), $class = '') +{ + return form_input('text', $name, $values, $errors, $attributes, $class); +} + +function form_password($name, $values = array(), array $errors = array(), array $attributes = array(), $class = '') +{ + return form_input('password', $name, $values, $errors, $attributes, $class); +} + +function form_number($name, $values = array(), array $errors = array(), array $attributes = array(), $class = '') +{ + return form_input('number', $name, $values, $errors, $attributes, $class); +} diff --git a/helpers/template.php b/helpers/template.php new file mode 100644 index 0000000..a1a846f --- /dev/null +++ b/helpers/template.php @@ -0,0 +1,105 @@ + $max_length) { + $max = strpos($value, ' ', $max_length); + if ($max === false) { + $max = $max_length; + } + return substr($value, 0, $max).' '.$end; + } elseif ($length < $min_length) { + return ''; + } + + return $value; +} + +function relative_time($timestamp, $fallback_date_format = '%e %B %Y %k:%M') +{ + $diff = time() - $timestamp; + + if ($diff < 0) { + return \dt($fallback_date_format, $timestamp); + } + + if ($diff < 60) { + return \t('%d second ago', $diff); + } + + $diff = floor($diff / 60); + if ($diff < 60) { + return \t('%d minute ago', $diff); + } + + $diff = floor($diff / 60); + if ($diff < 24) { + return \t('%d hour ago', $diff); + } + + $diff = floor($diff / 24); + if ($diff < 7) { + return \t('%d day ago', $diff); + } + + $diff = floor($diff / 7); + if ($diff < 4) { + return \t('%d week ago', $diff); + } + + $diff = floor($diff / 4); + if ($diff < 12) { + return \t('%d month ago', $diff); + } + + return \dt($fallback_date_format, $timestamp); +} diff --git a/lib/helpers.php b/lib/helpers.php deleted file mode 100644 index 5e48cbe..0000000 --- a/lib/helpers.php +++ /dev/null @@ -1,285 +0,0 @@ - '.png', - 'image/gif' => '.gif', - 'image/x-icon' => '.ico', - 'image/jpeg' => '.jpg', - 'image/jpg' => '.jpg' - ); - - if (array_key_exists($type, $types)) { - return $types[$type]; - } else { - return '.ico'; - } -} - -function favicon(array $favicons, $feed_id) -{ - if (! empty($favicons[$feed_id])) { - return ''; - } - - return ''; -} - -function is_rtl(array $item) -{ - return ! empty($item['rtl']) || \PicoFeed\Parser\Parser::isLanguageRTL($item['language']); -} - -function css() -{ - $theme = \Model\Config\get('theme'); - - if ($theme !== 'original') { - $css_file = THEME_DIRECTORY.'/'.$theme.'/css/app.css'; - - if (file_exists($css_file)) { - return $css_file.'?version='.filemtime($css_file); - } - } - - return 'assets/css/app.css?version='.filemtime('assets/css/app.css'); -} - -function get_current_base_url() -{ - $url = is_secure_connection() ? 'https://' : 'http://'; - $url .= $_SERVER['HTTP_HOST']; - $url .= $_SERVER['SERVER_PORT'] == 80 || $_SERVER['SERVER_PORT'] == 443 ? '' : ':'.$_SERVER['SERVER_PORT']; - $url .= str_replace('\\', '/', dirname($_SERVER['PHP_SELF'])) !== '/' ? str_replace('\\', '/', dirname($_SERVER['PHP_SELF'])).'/' : '/'; - - return $url; -} - -function escape($value) -{ - return htmlspecialchars($value, ENT_QUOTES, 'UTF-8', false); -} - -function flash($type, $html) -{ - $data = ''; - - if (isset($_SESSION[$type])) { - $data = sprintf($html, escape($_SESSION[$type])); - unset($_SESSION[$type]); - } - - return $data; -} - -function format_bytes($size, $precision = 2) -{ - $base = log($size) / log(1024); - $suffixes = array('', 'k', 'M', 'G', 'T'); - - return round(pow(1024, $base - floor($base)), $precision).$suffixes[floor($base)]; -} - -function get_host_from_url($url) -{ - return escape(parse_url($url, PHP_URL_HOST)) ?: $url; -} - -function summary($value, $min_length = 5, $max_length = 120, $end = '[...]') -{ - $length = strlen($value); - - if ($length > $max_length) { - $max = strpos($value, ' ', $max_length); - if ($max === false) { - $max = $max_length; - } - return substr($value, 0, $max).' '.$end; - } elseif ($length < $min_length) { - return ''; - } - - return $value; -} - -function relative_time($timestamp, $fallback_date_format = '%e %B %Y %k:%M') -{ - $diff = time() - $timestamp; - - if ($diff < 0) { - return \dt($fallback_date_format, $timestamp); - } - - if ($diff < 60) { - return \t('%d second ago', $diff); - } - - $diff = floor($diff / 60); - if ($diff < 60) { - return \t('%d minute ago', $diff); - } - - $diff = floor($diff / 60); - if ($diff < 24) { - return \t('%d hour ago', $diff); - } - - $diff = floor($diff / 24); - if ($diff < 7) { - return \t('%d day ago', $diff); - } - - $diff = floor($diff / 7); - if ($diff < 4) { - return \t('%d week ago', $diff); - } - - $diff = floor($diff / 4); - if ($diff < 12) { - return \t('%d month ago', $diff); - } - - return \dt($fallback_date_format, $timestamp); -} - -function error_class(array $errors, $name) -{ - return ! isset($errors[$name]) ? '' : ' form-error'; -} - -function error_list(array $errors, $name) -{ - $html = ''; - - if (isset($errors[$name])) { - $html .= ''; - } - - return $html; -} - -function form_value($values, $name) -{ - if (isset($values->$name)) { - return 'value="'.escape($values->$name).'"'; - } - - return isset($values[$name]) ? 'value="'.escape($values[$name]).'"' : ''; -} - -function form_hidden($name, $values = array()) -{ - return ''; -} - -function form_select($name, array $options, $values = array(), array $errors = array(), $class = '') -{ - $html = ''; - $html .= error_list($errors, $name); - - return $html; -} - -function form_radio($name, $label, $value, $checked = false, $class = '') -{ - return ''; -} - -function form_checkbox($name, $label, $value, $checked = false, $class = '') -{ - return ''; -} - -function form_label($label, $name, $class = '') -{ - return ''; -} - -function form_input($type, $name, $values = array(), array $errors = array(), array $attributes = array(), $class = '') -{ - $class .= error_class($errors, $name); - - $html = ''; - $html .= error_list($errors, $name); - - return $html; -} - -function form_text($name, $values = array(), array $errors = array(), array $attributes = array(), $class = '') -{ - return form_input('text', $name, $values, $errors, $attributes, $class); -} - -function form_password($name, $values = array(), array $errors = array(), array $attributes = array(), $class = '') -{ - return form_input('password', $name, $values, $errors, $attributes, $class); -} - -function form_number($name, $values = array(), array $errors = array(), array $attributes = array(), $class = '') -{ - return form_input('number', $name, $values, $errors, $attributes, $class); -} diff --git a/vendor/composer/autoload_files.php b/vendor/composer/autoload_files.php index d769aaa..bcd8cef 100644 --- a/vendor/composer/autoload_files.php +++ b/vendor/composer/autoload_files.php @@ -6,8 +6,11 @@ $vendorDir = dirname(dirname(__FILE__)); $baseDir = dirname($vendorDir); return array( - '441b53696b2c1c13da1210b9b5d22213' => $baseDir . '/lib/helpers.php', + 'b799c009807ac0660ab624d18f619399' => $baseDir . '/helpers/app.php', '4b6f1c38c1cab2809f0444d3a253f8f7' => $baseDir . '/helpers/csrf.php', + '1ec82876b83b01f4d5d91ab48a9cf9df' => $baseDir . '/helpers/favicon.php', + '3956a461ed00a30b727001d1c861a9b9' => $baseDir . '/helpers/form.php', + 'f4ed4710801c5f157356a94c00aae76c' => $baseDir . '/helpers/template.php', '2ba60f191527015eb45c05a71d95b69f' => $baseDir . '/lib/Translator.php', '1d58cdba7ce052ff0ce0219a932c284a' => $baseDir . '/lib/Request.php', '8e1ed5229092ce48fdcef0a911fd739d' => $baseDir . '/lib/Response.php', diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index db80028..9342f3e 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -7,8 +7,11 @@ namespace Composer\Autoload; class ComposerStaticInitfd7e8d436e1dc450edc3153ac8bc31b4 { public static $files = array ( - '441b53696b2c1c13da1210b9b5d22213' => __DIR__ . '/../..' . '/lib/helpers.php', + 'b799c009807ac0660ab624d18f619399' => __DIR__ . '/../..' . '/helpers/app.php', '4b6f1c38c1cab2809f0444d3a253f8f7' => __DIR__ . '/../..' . '/helpers/csrf.php', + '1ec82876b83b01f4d5d91ab48a9cf9df' => __DIR__ . '/../..' . '/helpers/favicon.php', + '3956a461ed00a30b727001d1c861a9b9' => __DIR__ . '/../..' . '/helpers/form.php', + 'f4ed4710801c5f157356a94c00aae76c' => __DIR__ . '/../..' . '/helpers/template.php', '2ba60f191527015eb45c05a71d95b69f' => __DIR__ . '/../..' . '/lib/Translator.php', '1d58cdba7ce052ff0ce0219a932c284a' => __DIR__ . '/../..' . '/lib/Request.php', '8e1ed5229092ce48fdcef0a911fd739d' => __DIR__ . '/../..' . '/lib/Response.php',