public $values = array();
/**
+ * Configuration object
+ *
* @var Config
*/
protected $config;
if (!isset($parts['host'])) {
throw new \InvalidArgumentException('URL host missing');
}
+
+ $rebuild = false;
+ if (strlen(preg_replace('#[[:ascii:]]#', '', $parts['host']))) {
+ //non-ascii characters in the host name
+ $host = idn_to_ascii($parts['host']);
+ if ($host === false) {
+ //incoming URL was not UTF-8 but some ISO dialect
+ $host = idn_to_ascii(utf8_encode($parts['host']));
+ if ($host === false) {
+ throw new \InvalidArgumentException(
+ 'Strange characters in host name'
+ );
+ }
+ }
+ $parts['host'] = $host;
+ $rebuild = true;
+ }
+ if (strlen(preg_replace('#[[:ascii:]]#', '', $parts['path']))) {
+ //non-ascii characters in the path
+ $parts['path'] = str_replace('%2F', '/', urlencode($parts['path']));
+ $rebuild = true;
+ }
+
+ if ($rebuild) {
+ $url = static::http_build_url($parts);
+ }
+
return $url;
}
$this->options['smaxage']['default'] = $this->config->screenshotMaxAge;
$this->options['smaxage']['min'] = $this->config->screenshotMinAge;
}
+
+ /**
+ * Re-build an URL parts array generated by parse_url()
+ *
+ * @param string $parts Array of URL parts
+ *
+ * @return string URL
+ */
+ protected static function http_build_url($parts)
+ {
+ $scheme = isset($parts['scheme'])
+ ? $parts['scheme'] . '://' : '';
+ $host = isset($parts['host'])
+ ? $parts['host'] : '';
+ $port = isset($parts['port'])
+ ? ':' . $parts['port'] : '';
+ $user = isset($parts['user'])
+ ? $parts['user'] : '';
+ $pass = isset($parts['pass'])
+
+ ? ':' . $parts['pass'] : '';
+ $pass = ($user || $pass)
+ ? "$pass@" : '';
+ $path = isset($parts['path'])
+ ? $parts['path'] : '';
+ $query = isset($parts['query'])
+ ? '?' . $parts['query'] : '';
+ $fragment = isset($parts['fragment'])
+ ? '#' . $parts['fragment'] : '';
+ return "$scheme$user$pass$host$port$path$query$fragment";
+ }
}
?>
}
}
+if (!function_exists('idn_to_ascii')) {
+ $messages[][] = array(
+ 'err', 'Function "idn_to_ascii" is not available'
+ );
+}
+
$out = <<<HTM
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en">
<head>
<title>phancap setup check</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<link rel="stylesheet" href="css/bootstrap.min.css"/>
<link rel="stylesheet" href="css/bootstrap-theme.min.css"/>
<link rel="stylesheet" href="css/phancap.css"/>