diff options
Diffstat (limited to 'includes/vendor/jakeasmith')
| -rw-r--r-- | includes/vendor/jakeasmith/http_build_url/readme.md | 20 | ||||
| -rw-r--r-- | includes/vendor/jakeasmith/http_build_url/src/http_build_url.php | 174 |
2 files changed, 194 insertions, 0 deletions
diff --git a/includes/vendor/jakeasmith/http_build_url/readme.md b/includes/vendor/jakeasmith/http_build_url/readme.md new file mode 100644 index 0000000..cdf10f4 --- /dev/null +++ b/includes/vendor/jakeasmith/http_build_url/readme.md @@ -0,0 +1,20 @@ +# http_build_url() for PHP + +[](https://travis-ci.org/jakeasmith/http_build_url) +[](https://codeclimate.com/github/jakeasmith/http_build_url) +[](https://packagist.org/packages/jakeasmith/http_build_url) +[](https://packagist.org/packages/jakeasmith/http_build_url) + +This simple library provides functionality for [`http_build_url()`](http://us2.php.net/manual/en/function.http-build-url.php) to environments without pecl_http. It aims to mimic the functionality of the pecl function in every way and ships with a full suite of tests that have been run against both the original function and the one in this package. + +## Installation + +The easiest way to install this library is to use [Composer](https://getcomposer.org/) from the command line. + +``` +$ composer require jakeasmith/http_build_url ^1 +``` + +## License + +This project is licensed under the MIT License - see the LICENSE file for details. diff --git a/includes/vendor/jakeasmith/http_build_url/src/http_build_url.php b/includes/vendor/jakeasmith/http_build_url/src/http_build_url.php new file mode 100644 index 0000000..0dfdbba --- /dev/null +++ b/includes/vendor/jakeasmith/http_build_url/src/http_build_url.php @@ -0,0 +1,174 @@ +<?php + +/** + * URL constants as defined in the PHP Manual under "Constants usable with + * http_build_url()". + * + * @see http://us2.php.net/manual/en/http.constants.php#http.constants.url + */ +if (!defined('HTTP_URL_REPLACE')) { + define('HTTP_URL_REPLACE', 1); +} +if (!defined('HTTP_URL_JOIN_PATH')) { + define('HTTP_URL_JOIN_PATH', 2); +} +if (!defined('HTTP_URL_JOIN_QUERY')) { + define('HTTP_URL_JOIN_QUERY', 4); +} +if (!defined('HTTP_URL_STRIP_USER')) { + define('HTTP_URL_STRIP_USER', 8); +} +if (!defined('HTTP_URL_STRIP_PASS')) { + define('HTTP_URL_STRIP_PASS', 16); +} +if (!defined('HTTP_URL_STRIP_AUTH')) { + define('HTTP_URL_STRIP_AUTH', 32); +} +if (!defined('HTTP_URL_STRIP_PORT')) { + define('HTTP_URL_STRIP_PORT', 64); +} +if (!defined('HTTP_URL_STRIP_PATH')) { + define('HTTP_URL_STRIP_PATH', 128); +} +if (!defined('HTTP_URL_STRIP_QUERY')) { + define('HTTP_URL_STRIP_QUERY', 256); +} +if (!defined('HTTP_URL_STRIP_FRAGMENT')) { + define('HTTP_URL_STRIP_FRAGMENT', 512); +} +if (!defined('HTTP_URL_STRIP_ALL')) { + define('HTTP_URL_STRIP_ALL', 1024); +} + +if (!function_exists('http_build_url')) { + + /** + * Build a URL. + * + * The parts of the second URL will be merged into the first according to + * the flags argument. + * + * @param mixed $url (part(s) of) an URL in form of a string or + * associative array like parse_url() returns + * @param mixed $parts same as the first argument + * @param int $flags a bitmask of binary or'ed HTTP_URL constants; + * HTTP_URL_REPLACE is the default + * @param array $new_url if set, it will be filled with the parts of the + * composed url like parse_url() would return + * @return string + */ + function http_build_url($url, $parts = array(), $flags = HTTP_URL_REPLACE, &$new_url = array()) + { + is_array($url) || $url = parse_url($url); + is_array($parts) || $parts = parse_url($parts); + + isset($url['query']) && is_string($url['query']) || $url['query'] = null; + isset($parts['query']) && is_string($parts['query']) || $parts['query'] = null; + + $keys = array('user', 'pass', 'port', 'path', 'query', 'fragment'); + + // HTTP_URL_STRIP_ALL and HTTP_URL_STRIP_AUTH cover several other flags. + if ($flags & HTTP_URL_STRIP_ALL) { + $flags |= HTTP_URL_STRIP_USER | HTTP_URL_STRIP_PASS + | HTTP_URL_STRIP_PORT | HTTP_URL_STRIP_PATH + | HTTP_URL_STRIP_QUERY | HTTP_URL_STRIP_FRAGMENT; + } elseif ($flags & HTTP_URL_STRIP_AUTH) { + $flags |= HTTP_URL_STRIP_USER | HTTP_URL_STRIP_PASS; + } + + // Schema and host are alwasy replaced + foreach (array('scheme', 'host') as $part) { + if (isset($parts[$part])) { + $url[$part] = $parts[$part]; + } + } + + if ($flags & HTTP_URL_REPLACE) { + foreach ($keys as $key) { + if (isset($parts[$key])) { + $url[$key] = $parts[$key]; + } + } + } else { + if (isset($parts['path']) && ($flags & HTTP_URL_JOIN_PATH)) { + if (isset($url['path']) && substr($parts['path'], 0, 1) !== '/') { + // Workaround for trailing slashes + $url['path'] .= 'a'; + $url['path'] = rtrim( + str_replace(basename($url['path']), '', $url['path']), + '/' + ) . '/' . ltrim($parts['path'], '/'); + } else { + $url['path'] = $parts['path']; + } + } + + if (isset($parts['query']) && ($flags & HTTP_URL_JOIN_QUERY)) { + if (isset($url['query'])) { + parse_str($url['query'], $url_query); + parse_str($parts['query'], $parts_query); + + $url['query'] = http_build_query( + array_replace_recursive( + $url_query, + $parts_query + ) + ); + } else { + $url['query'] = $parts['query']; + } + } + } + + if (isset($url['path']) && $url['path'] !== '' && substr($url['path'], 0, 1) !== '/') { + $url['path'] = '/' . $url['path']; + } + + foreach ($keys as $key) { + $strip = 'HTTP_URL_STRIP_' . strtoupper($key); + if ($flags & constant($strip)) { + unset($url[$key]); + } + } + + $parsed_string = ''; + + if (!empty($url['scheme'])) { + $parsed_string .= $url['scheme'] . '://'; + } + + if (!empty($url['user'])) { + $parsed_string .= $url['user']; + + if (isset($url['pass'])) { + $parsed_string .= ':' . $url['pass']; + } + + $parsed_string .= '@'; + } + + if (!empty($url['host'])) { + $parsed_string .= $url['host']; + } + + if (!empty($url['port'])) { + $parsed_string .= ':' . $url['port']; + } + + if (!empty($url['path'])) { + $parsed_string .= $url['path']; + } + + if (!empty($url['query'])) { + $parsed_string .= '?' . $url['query']; + } + + if (!empty($url['fragment'])) { + $parsed_string .= '#' . $url['fragment']; + } + + $new_url = $url; + + return $parsed_string; + } +} |