1 <?php
2
3 4 5 6 7
8
9 10 11 12 13 14 15 16 17 18 19 20
21 function rex_getUrl($id = null, $clang = null, array $params = [], $separator = '&')
22 {
23 $id = (int) $id;
24 $clang = (int) $clang;
25
26
27 if ($id == 0) {
28 $id = rex_article::getCurrentId();
29 }
30
31
32
33
34 if (!rex_clang::exists($clang) && (rex_clang::count() > 1 || rex_extension::isRegistered('URL_REWRITE'))) {
35 $clang = rex_clang::getCurrentId();
36 }
37
38
39 $url = rex_extension::registerPoint(new rex_extension_point('URL_REWRITE', '', ['id' => $id, 'clang' => $clang, 'params' => $params, 'separator' => $separator]));
40
41 if ($url == '') {
42 if (rex_clang::count() > 1) {
43 $clang = $separator . 'clang=' . $clang;
44 } else {
45 $clang = '';
46 }
47
48 $params = rex_string::buildQuery($params, $separator);
49 $params = $params ? $separator . $params : '';
50
51 $url = rex_url::frontendController() . '?article_id=' . $id . $clang . $params;
52 }
53
54 return $url;
55 }
56
57 58 59 60 61 62 63 64 65 66
67 function rex_redirect($article_id, $clang = null, array $params = [])
68 {
69 if (null !== $article_id && '' !== $article_id && !is_int($article_id) && $article_id !== (string) (int) $article_id) {
70 throw new InvalidArgumentException(sprintf('"%s" is not a valid article_id!', $article_id));
71 }
72
73 rex_response::sendRedirect(rex_getUrl($article_id, $clang, $params, '&'));
74 }
75