From 6e1cc99de75ad0e64d448d2ab15eafda264e5637 Mon Sep 17 00:00:00 2001 From: poltawski Date: Sat, 29 Dec 2007 20:03:03 +0000 Subject: [PATCH] MDL-12763 - proxy_url() in langimport was doing its own custom proxied download magic. Convert to use download_file_contents() for more robust downloads. And also add a more helpful error message while i'm at it. merged from MOODLE_19_STABLE --- admin/langimport.php | 38 +++++++++++--------------------------- lang/en_utf8/error.php | 1 + 2 files changed, 12 insertions(+), 27 deletions(-) diff --git a/admin/langimport.php b/admin/langimport.php index 5f8acbaf65..0ae768bd75 100755 --- a/admin/langimport.php +++ b/admin/langimport.php @@ -132,7 +132,7 @@ if (!$availablelangs = proxy_url($source)) { - error ('can not read from course'); + print_error('cannotdownloadlanguageupdatelist'); } //and build an associative array @@ -360,39 +360,23 @@ } //returns an array of languages, or false if can not read from source - //uses a socket if proxy is set as a config variable function proxy_url($url) { global $CFG; - if ($CFG->proxyhost && $CFG->proxyport) { + $availablelangs = array(); - $proxy_fp = fsockopen($CFG->proxyhost, $CFG->proxyport); - if (!$proxy_fp) { - return false; //failed - } - fputs($proxy_fp, "GET $url HTTP/1.0\r\nHost: $CFG->proxyhost\r\n\r\n"); - - $headers_done = false; - while(!feof($proxy_fp)) { - $string = fgets($proxy_fp, 1024); - if(!$headers_done){ - // A new line indicates end of HTTP headers - $headers_done = ("\r\n" == $string); - } else { - $availablelangs[] = split(',', $string); - } - } - fclose($proxy_fp); + if( $content = download_file_content($url) ){ - } else { //proxy not in use - if ($fp = fopen($url, 'r')){ /// attempt to get the list from Moodle.org. - while(!feof ($fp)) { - $availablelangs[] = split(',', fgets($fp,1024)); + $alllines = split("\n", $content); + foreach($alllines as $line){ + if(!empty($line)){ + $availablelangs[] = split(',', $line); } - } else { /// fopen failed, return false. - return false; } + + return $availablelangs; + }else{ + return false; } - return $availablelangs; } ?> diff --git a/lang/en_utf8/error.php b/lang/en_utf8/error.php index 864326dc6d..56ec11b7d0 100644 --- a/lang/en_utf8/error.php +++ b/lang/en_utf8/error.php @@ -8,6 +8,7 @@ $string['cannotcreatelangdir'] = 'Cannot create lang dir.'; $string['cannotcreatetempdir'] = 'Cannot create temp dir.'; $string['cannotcustomizelocallang'] = 'You do not have permission to customize the strings translation. This permission is controlled by the capability "moodle/site:langeditlocal". Set this capability to allow you to edit local language packages in case you want to modify translations for your site.'; $string['cannotdownloadcomponents'] = 'Cannot download components.'; +$string['cannotdownloadlanguageupdatelist'] = 'Cannot download list of language updates from download.moodle.org'; $string['cannotdownloadzipfile'] = 'Cannot download ZIP file.'; $string['cannoteditmasterlang'] = 'You do not have permission to edit master language package. This permission is controlled by the capability "moodle/site:langeditmaster". Set this capability to allow you to edit master language packages in case you are the maintainer of a package.'; $string['cannotfindcomponent'] = 'Cannot find component.'; -- 2.39.5