diff --git a/.gitignore b/.gitignore index 8d86b9587..9e6504184 100644 --- a/.gitignore +++ b/.gitignore @@ -9,6 +9,7 @@ include/jquery-1.4.2.min.js favicon.* home.html addon +*.orig *~ robots.txt @@ -57,4 +58,4 @@ venv/ /view/asset #ignore config files from JetBrains -/.idea \ No newline at end of file +/.idea diff --git a/mod/install.php b/mod/install.php index eb740c7b6..06f728729 100644 --- a/mod/install.php +++ b/mod/install.php @@ -303,12 +303,13 @@ function install_content(App $a) { * required : boolean * help : string optional */ -function check_add(&$checks, $title, $status, $required, $help) { +function check_add(&$checks, $title, $status, $required, $help, $error_msg = "") { $checks[] = [ 'title' => $title, 'status' => $status, 'required' => $required, 'help' => $help, + 'error_msg' => $error_msg, ]; } @@ -489,18 +490,24 @@ function check_smarty3(&$checks) { function check_htaccess(&$checks) { $status = true; $help = ""; + $error_msg = ""; if (function_exists('curl_init')) { - $test = Network::fetchUrl(System::baseUrl()."/install/testrewrite"); + $test = Network::fetchUrlFull(System::baseUrl()."/install/testrewrite"); - if ($test != "ok") { - $test = Network::fetchUrl(normalise_link(System::baseUrl()."/install/testrewrite")); + $url = normalise_link(System::baseUrl()."/install/testrewrite"); + if ($test['body'] != "ok") { + $test = Network::fetchUrlFull($url); } - if ($test != "ok") { + if ($test['body'] != "ok") { $status = false; $help = L10n::t('Url rewrite in .htaccess is not working. Check your server configuration.'); + $error_msg = []; + $error_msg['head'] = L10n::t('Error message from Curl when fetching'); + $error_msg['url'] = $test['redirect_url']; + $error_msg['msg'] = $test['error']; } - check_add($checks, L10n::t('Url rewrite is working'), $status, true, $help); + check_add($checks, L10n::t('Url rewrite is working'), $status, true, $help, $error_msg); } else { // cannot check modrewrite if libcurl is not installed /// @TODO Maybe issue warning here? diff --git a/src/Util/Network.php b/src/Util/Network.php index 4a11f9259..f0338e048 100644 --- a/src/Util/Network.php +++ b/src/Util/Network.php @@ -36,7 +36,30 @@ class Network */ public static function fetchUrl($url, $binary = false, &$redirects = 0, $timeout = 0, $accept_content = null, $cookiejar = 0) { - $ret = self::curl( + $ret = fetchUrlFull($url, $binary, $redirects, $timeout, $accept_content, $cookiejar); + + return $ret['body']; + } + + /** + * @brief Curl wrapper with array of return values. + * + * Inner workings and parameters are the same as @ref fetchUrl but returns an array with + * all the information collected during the fetch. + * + * @param string $url URL to fetch + * @param boolean $binary default false + * TRUE if asked to return binary results (file download) + * @param integer $redirects The recursion counter for internal use - default 0 + * @param integer $timeout Timeout in seconds, default system config value or 60 seconds + * @param string $accept_content supply Accept: header with 'accept_content' as the value + * @param string $cookiejar Path to cookie jar file + * + * @return array With all relevant information, 'body' contains the actual fetched content. + */ + public static function fetchUrlFull($url, $binary = false, &$redirects = 0, $timeout = 0, $accept_content = null, $cookiejar = 0) + { + return self::curl( $url, $binary, $redirects, @@ -45,8 +68,6 @@ class Network 'cookiejar'=>$cookiejar ] ); - - return($ret['body']); } /** diff --git a/view/install/style.css b/view/install/style.css index 2f995d599..d6140a1bb 100644 --- a/view/install/style.css +++ b/view/install/style.css @@ -32,6 +32,9 @@ td.help { td.help blockquote { margin-left: 60px; } +.error_header { + margin-left: 60px; +} input[type="submit"] { margin: 2em 0; } diff --git a/view/templates/install_checks.tpl b/view/templates/install_checks.tpl index 10a197482..f96072911 100644 --- a/view/templates/install_checks.tpl +++ b/view/templates/install_checks.tpl @@ -16,7 +16,13 @@ {{/if}} {{if $check.required}}(required){{/if}} {{if $check.help}} -
{{$check.help}}
+ +
{{$check.help}}
+ {{if $check.error_msg}} +
{{$check.error_msg.head}}
{{$check.error_msg.url}}
+
{{$check.error_msg.msg}}
+ {{/if}} + {{/if}} {{/foreach}}