Skip to content

Commit

Permalink
MDL-11845 Support for config proxy options when downloading language …
Browse files Browse the repository at this point in the history
…packs (& other components), timezone file
  • Loading branch information
sam_marshall committed Dec 6, 2007
1 parent f9192b6 commit 3e93ea8
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 18 deletions.
24 changes: 13 additions & 11 deletions admin/timezoneimport.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,8 @@
require_once($CFG->libdir.'/adminlib.php');
require_once($CFG->libdir.'/filelib.php');
require_once($CFG->libdir.'/olson.php');

require_once($CFG->libdir.'/snoopy/Snoopy.class.inc');

admin_externalpage_setup('timezoneimport');

$ok = optional_param('ok', 0, PARAM_BOOL);
Expand Down Expand Up @@ -62,19 +63,20 @@
}

/// Otherwise, let's try moodle.org's copy
$snoopy = new Snoopy;
$snoopy->proxy_host = $CFG->proxyhost;
$snoopy->proxy_port = $CFG->proxyport;

$source = 'http://download.moodle.org/timezones/';
if (!$importdone and ini_get('allow_url_fopen')) {
if (is_readable($source) && $contents = file_get_contents($source)) { // Grab whole page
if ($file = fopen($CFG->dataroot.'/temp/timezones.txt', 'w')) { // Make local copy
fwrite($file, $contents);
fclose($file);
if ($timezones = get_records_csv($CFG->dataroot.'/temp/timezones.txt', 'timezone')) { // Parse it
update_timezone_records($timezones);
$importdone = $source;
}
unlink($CFG->dataroot.'/temp/timezones.txt');
if (!$importdone && $snoopy->fetch($source)) {
if ($file = fopen($CFG->dataroot.'/temp/timezones.txt', 'w')) { // Make local copy
fwrite($file, $snoopy->results);
fclose($file);
if ($timezones = get_records_csv($CFG->dataroot.'/temp/timezones.txt', 'timezone')) { // Parse it
update_timezone_records($timezones);
$importdone = $source;
}
unlink($CFG->dataroot.'/temp/timezones.txt');
}
}

Expand Down
31 changes: 24 additions & 7 deletions lib/componentlib.class.php
Original file line number Diff line number Diff line change
Expand Up @@ -124,6 +124,8 @@
// error to be retrieved by one standard get_string() call against the error.php lang file.
//
// That's all!
global $CFG;
require_once($CFG->libdir.'/snoopy/Snoopy.class.inc');

// Some needed constants
define('ERROR', 0);
Expand All @@ -141,7 +143,7 @@
*/
class component_installer {

var $sourcebase; /// Full http URL, base for downloadeable items
var $sourcebase; /// Full http URL, base for downloadable items
var $zippath; /// Relative path (from sourcebase) where the
/// downloadeable item resides.
var $zipfilename; /// Name of the .zip file to be downloaded
Expand Down Expand Up @@ -271,7 +273,14 @@ function install() {
/// Download zip file and save it to temp
$source = $this->sourcebase.'/'.$this->zippath.'/'.$this->zipfilename;
$zipfile= $CFG->dataroot.'/temp/'.$this->zipfilename;
if ($contents = file_get_contents($source)) {

/// Prepare Snoopy client and set up proxy info
$snoopy = new Snoopy;
global $CFG;
$snoopy->proxy_host = $CFG->proxyhost;
$snoopy->proxy_port = $CFG->proxyport;
if($snoopy->fetch($source)) {
$contents = $snoopy->results;
if ($file = fopen($zipfile, 'w')) {
if (!fwrite($file, $contents)) {
fclose($file);
Expand Down Expand Up @@ -458,12 +467,20 @@ function get_all_components_md5() {
} else {
/// Not downloaded, let's do it now
$availablecomponents = array();
if ($fp = fopen($source, 'r')) {
/// Read from URL, each line will be one component
while(!feof ($fp)) {
$availablecomponents[] = split(',', fgets($fp,1024));

/// Prepare Snoopy client and set up proxy info
$snoopy = new Snoopy;
global $CFG;
$snoopy->proxy_host = $CFG->proxyhost;
$snoopy->proxy_port = $CFG->proxyport;

if ($snoopy->fetch($source)) {
/// Split text into lines
$lines=preg_split('/\r?\n/',$snoopy->results);
/// Each line will be one component
foreach($lines as $line) {
$availablecomponents[] = split(',', $line);
}
fclose($fp);
/// If no components have been found, return error
if (empty($availablecomponents)) {
$this->errorstring='cannotdownloadcomponents';
Expand Down

0 comments on commit 3e93ea8

Please sign in to comment.