diff --git a/src/TwigMisuzu.php b/src/TwigMisuzu.php index 9e5a1b36..17c8cf98 100644 --- a/src/TwigMisuzu.php +++ b/src/TwigMisuzu.php @@ -15,7 +15,6 @@ final class TwigMisuzu extends Twig_Extension new Twig_Filter('first_paragraph', 'first_paragraph'), new Twig_Filter('byte_symbol', 'byte_symbol'), new Twig_Filter('html_link', 'html_link'), - new Twig_Filter('url_construct', 'url_construct'), new Twig_Filter('parse_line', 'parse_line'), new Twig_Filter('parse_text', 'parse_text'), new Twig_Filter('asset_url', 'asset_url'), @@ -35,6 +34,7 @@ final class TwigMisuzu extends Twig_Extension new Twig_Function('csrf_token', 'csrf_token'), new Twig_Function('csrf_input', 'csrf_html'), new Twig_Function('sql_query_count', 'db_query_count'), + new Twig_Function('url_construct', 'url_construct'), new Twig_Function('startup_time', function (float $time = MSZ_STARTUP) { return microtime(true) - $time; }), diff --git a/templates/changelog/index.twig b/templates/changelog/index.twig index cfb5a39c..93e14115 100644 --- a/templates/changelog/index.twig +++ b/templates/changelog/index.twig @@ -9,7 +9,7 @@ {% if is_valid %} {% - set canonical_url = '/changelog.php'|url_construct({ + set canonical_url = url_construct('/changelog.php', { 'd': changelog_date, 'u': changelog_user ? changelog_user : '', 'o': changelog_offset @@ -30,7 +30,7 @@ {% if not is_date %}
- {{ pagination(changelog_count, changelog_take, changelog_offset, '/changelog.php'|url_construct({ + {{ pagination(changelog_count, changelog_take, changelog_offset, url_construct('/changelog.php', { 'd': changelog_date, 'u': changelog_user ? changelog_user : '' })) }} diff --git a/templates/forum/forum.twig b/templates/forum/forum.twig index 66b78cf9..3624c6c3 100644 --- a/templates/forum/forum.twig +++ b/templates/forum/forum.twig @@ -2,7 +2,7 @@ {% from 'forum/macros.twig' import forum_category_listing, forum_topic_listing, forum_category_buttons, forum_header, forum_category_tools %} {% set title = forum_info.forum_name %} -{% set canonical_url = '/forum/forum.php'|url_construct({ +{% set canonical_url = url_construct('/forum/forum.php', { 'f': forum_info.forum_id, 'o': forum_offset, }) %} diff --git a/templates/forum/macros.twig b/templates/forum/macros.twig index fce9c447..bf1068b3 100644 --- a/templates/forum/macros.twig +++ b/templates/forum/macros.twig @@ -51,7 +51,7 @@
{% if perms|perms_check(constant('MSZ_FORUM_PERM_CREATE_TOPIC')) %} - New Topic + New Topic {% endif %}
@@ -60,7 +60,7 @@ info.forum_topic_count, take, offset, - '/forum/forum.php'|url_construct({'f':info.forum_id}), + url_construct('/forum/forum.php', {'f':info.forum_id}), false, null, 5 @@ -84,7 +84,7 @@ info.topic_post_count, take, offset, - '/forum/topic.php'|url_construct({'t':info.topic_id}), + url_construct('/forum/topic.php', {'t':info.topic_id}), false, null, 5 diff --git a/templates/forum/topic.twig b/templates/forum/topic.twig index f5daeb75..517870b8 100644 --- a/templates/forum/topic.twig +++ b/templates/forum/topic.twig @@ -12,7 +12,7 @@ %} {% set title = topic_info.topic_title %} -{% set canonical_url = '/forum/topic.php'|url_construct({ +{% set canonical_url = url_construct('/forum/topic.php', { 't': topic_info.topic_id, 'o': topic_offset, }) %} diff --git a/templates/news/category.twig b/templates/news/category.twig index 94f3a3d8..ea1ea5da 100644 --- a/templates/news/category.twig +++ b/templates/news/category.twig @@ -3,8 +3,8 @@ {% from 'news/macros.twig' import news_preview %} {% set title = category.category_name ~ ' :: News' %} -{% set manage_link = '/manage/news.php?v=category&c=' ~ category.category_id %} -{% set canonical_url = '/news.php'|url_construct({ +{% set manage_link = url_construct('/manage/news.php', {'v':'category','c':category.category_id}) %} +{% set canonical_url = url_construct('/news.php', { 'c': category.category_id, 'o': posts_offset, }) %} @@ -17,7 +17,7 @@ {% endfor %}
- {{ pagination(category.posts_count, posts_take, posts_offset, '/news.php'|url_construct({'c':category.category_id}), true) }} + {{ pagination(category.posts_count, posts_take, posts_offset, url_construct('/news.php', {'c':category.category_id}), true) }}
diff --git a/templates/news/index.twig b/templates/news/index.twig index 6f8a3ddf..4bf71074 100644 --- a/templates/news/index.twig +++ b/templates/news/index.twig @@ -3,7 +3,7 @@ {% from 'news/macros.twig' import news_preview %} {% set title = 'News' %} -{% set canonical_url = '/news.php'|url_construct({'o':posts_offset}) %} +{% set canonical_url = url_construct('/news.php', {'o':posts_offset}) %} {% set manage_link = '/manage/news.php?v=index' %} {% block content %} diff --git a/templates/user/listing.twig b/templates/user/listing.twig index 1ac78512..21ad35e8 100644 --- a/templates/user/listing.twig +++ b/templates/user/listing.twig @@ -3,14 +3,14 @@ {% from '_layout/input.twig' import input_select %} {% from 'user/macros.twig' import user_card %} -{% set canonical_url = '/members.php'|url_construct({ +{% set canonical_url = url_construct('/members.php', { 'r': role.role_id != 1 ? role.role_id : 0, 'ss': order_field == order_default ? '' : order_field, 'sd': order_fields[order_field]['default-dir'] == order_direction ? '' : order_direction, 'o': users_offset, 't': users_take == 15 ? 0 : users_take, }) %} -{% set full_url = '/members.php'|url_construct({ +{% set full_url = url_construct('/members.php', { 'r': role.role_id != 1 ? role.role_id : 0, 'ss': order_field == order_default ? '' : order_field, 'sd': order_fields[order_field]['default-dir'] == order_direction ? '' : order_direction, diff --git a/templates/user/settings.twig b/templates/user/settings.twig index c7219081..1e64054d 100644 --- a/templates/user/settings.twig +++ b/templates/user/settings.twig @@ -158,7 +158,7 @@ sessions.amount, sessions.take, sessions.offset, - ''|url_construct({ + url_construct('', { 'logins[offset]': logins.offset, 'logins[take]': logins.take == 15 ? 0 : logins.take, 'logs[offset]': logs.offset, @@ -205,7 +205,7 @@ logins.amount, logins.take, logins.offset, - ''|url_construct({ + url_construct('', { 'logins[take]': logins.take == 15 ? 0 : logins.take, 'logs[offset]': logs.offset, 'logs[take]': logs.take == 15 ? 0 : logs.take, @@ -241,7 +241,7 @@ logs.amount, logs.take, logs.offset, - ''|url_construct({ + url_construct('', { 'logins[offset]': logins.offset, 'logins[take]': logins.take == 15 ? 0 : logins.take, 'logs[take]': logs.take == 15 ? 0 : logs.take, diff --git a/utility.php b/utility.php index a1a16632..caf29b6d 100644 --- a/utility.php +++ b/utility.php @@ -330,7 +330,7 @@ function url_construct(string $path, array $query = [], string $host = ''): stri foreach ($query as $key => $value) { if ($value) { - $url .= urlencode($key) . '=' . urlencode($value) . '&'; + $url .= rawurlencode($key) . '=' . rawurlencode($value) . '&'; } } }