. /** * Automatic update of Timezones from a new source * * @package tool * @subpackage timezoneimport * @copyright 1999 onwards Martin Dougiamas {@link http://moodle.com} * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ require_once('../../../config.php'); require_once($CFG->libdir.'/adminlib.php'); require_once($CFG->libdir.'/filelib.php'); require_once($CFG->libdir.'/olson.php'); admin_externalpage_setup('tooltimezoneimport'); $ok = optional_param('ok', 0, PARAM_BOOL); /// Print headings $strimporttimezones = get_string('importtimezones', 'tool_timezoneimport'); echo $OUTPUT->header(); echo $OUTPUT->heading($strimporttimezones); if (!$ok or !confirm_sesskey()) { $message = '

'; $message .= $CFG->tempdir.'/olson.txt
'; $message .= $CFG->tempdir.'/timezone.txt
'; $message .= 'https://download.moodle.org/timezone/
'; $message .= ''.$CFG->dirroot.'/lib/timezone.txt
'; $message .= '
'; $message = get_string("configintrotimezones", 'tool_timezoneimport', $message); echo $OUTPUT->confirm($message, 'index.php?ok=1', new moodle_url('/admin/index.php')); echo $OUTPUT->footer(); exit; } /// Try to find a source of timezones to import from $importdone = false; /// First, look for an Olson file locally $source = $CFG->tempdir.'/olson.txt'; if (!$importdone and is_readable($source)) { if ($timezones = olson_to_timezones($source)) { update_timezone_records($timezones); $importdone = $source; } } /// Next, look for a CSV file locally $source = $CFG->tempdir.'/timezone.txt'; if (!$importdone and is_readable($source)) { if ($timezones = get_records_csv($source, 'timezone')) { update_timezone_records($timezones); $importdone = $source; } } /// Otherwise, let's try moodle.org's copy $source = 'https://download.moodle.org/timezone/'; if (!$importdone && ($content=download_file_content($source))) { if ($file = fopen($CFG->tempdir.'/timezone.txt', 'w')) { // Make local copy fwrite($file, $content); fclose($file); if ($timezones = get_records_csv($CFG->tempdir.'/timezone.txt', 'timezone')) { // Parse it update_timezone_records($timezones); $importdone = $source; } unlink($CFG->tempdir.'/timezone.txt'); } } /// Final resort, use the copy included in Moodle $source = $CFG->dirroot.'/lib/timezone.txt'; if (!$importdone and is_readable($source)) { // Distribution file if ($timezones = get_records_csv($source, 'timezone')) { update_timezone_records($timezones); $importdone = $source; } } /// That's it! if ($importdone) { $a = new stdClass(); $a->count = count($timezones); $a->source = $importdone; echo $OUTPUT->heading(get_string('importtimezonescount', 'tool_timezoneimport', $a), 3); echo $OUTPUT->continue_button(new moodle_url('/admin/index.php')); $timezonelist = array(); foreach ($timezones as $timezone) { if (is_array($timezone)) { $timezone = (object)$timezone; } if (isset($timezonelist[$timezone->name])) { $timezonelist[$timezone->name]++; } else { $timezonelist[$timezone->name] = 1; } } ksort($timezonelist); echo "
"; echo $OUTPUT->box_start(); foreach ($timezonelist as $name => $count) { echo "$name ($count)
"; } echo $OUTPUT->box_end(); } else { echo $OUTPUT->heading(get_string('importtimezonesfailed', 'tool_timezoneimport'), 3); echo $OUTPUT->continue_button(new moodle_url('/admin/index.php')); } echo $OUTPUT->footer();