/** * Perform the actual language pack installation * * @uses component_installer * @param string $langcode * @return int return status */ protected function install_language_pack($langcode) { // initialise new component installer to process this language $installer = new component_installer('http://download.moodle.org', 'download.php/direct/langpack/' . $this->version, $langcode . '.zip', 'languages.md5', 'lang'); if (!$installer->requisitesok) { throw new lang_installer_exception('installer_requisites_check_failed'); } $status = $installer->install(); if ($status == COMPONENT_ERROR) { if ($installer->get_error() === 'remotedownloaderror') { return self::RESULT_DOWNLOADERROR; } else { throw new lang_installer_exception($installer->get_error(), $langcode); } } else { if ($status == COMPONENT_UPTODATE) { return self::RESULT_UPTODATE; } else { if ($status == COMPONENT_INSTALLED) { return self::RESULT_INSTALLED; } else { throw new lang_installer_exception('unexpected_installer_result', $status); } } } }
continue; } } if (file_exists($dest2)) { if (!remove_dir($dest2)) { $notice_error[] = 'Could not delete old directory ' . $dest2 . ', update of ' . $pack . ' failed, please check permissions.'; continue; } } //2. copy & unzip into new if ($cd = new component_installer('http://download.moodle.org', 'lang16', $pack . '.zip', 'languages.md5', 'lang')) { $status = $cd->install(); //returns COMPONENT_(ERROR | UPTODATE | INSTALLED) switch ($status) { case COMPONENT_ERROR: if ($cd->get_error() == 'remotedownloaderror') { $a = new stdClass(); $a->url = 'http://download.moodle.org/lang16/' . $pack . '.zip'; $a->dest = $CFG->dataroot . '/lang'; print_error($cd->get_error(), 'error', "", $a); // not probable } else { print_error($cd->get_error(), 'error'); // not probable } break; case COMPONENT_UPTODATE: //Print error string or whatever you want to do break; case COMPONENT_INSTALLED: $notice_ok[] = get_string('langpackupdated', 'admin', $pack);
} } while ($error !== ''); } else { if (is_dataroot_insecure()) { cli_error(get_string('pathsunsecuredataroot', 'install')); } if (!install_init_dataroot($CFG->dataroot, $CFG->directorypermissions)) { $a = (object) array('dataroot' => $CFG->dataroot); cli_error(get_string('pathserrcreatedataroot', 'install', $a)); } } //download lang pack with optional notification if ($CFG->lang != 'en') { if ($cd = new component_installer('http://download.moodle.org', 'langpack/2.0', $CFG->lang . '.zip', 'languages.md5', 'lang')) { if ($cd->install() == COMPONENT_ERROR) { if ($cd->get_error() == 'remotedownloaderror') { $a = new stdClass(); $a->url = 'http://download.moodle.org/langpack/2.0/' . $CFG->lang . '.zip'; $a->dest = $CFG->dataroot . '/lang'; cli_problem(get_string($cd->get_error(), 'error', $a)); } else { cli_problem(get_string($cd->get_error(), 'error')); } } else { // install parent lang if defined if ($parentlang = get_parent_language()) { if ($cd = new component_installer('http://download.moodle.org', 'langpack/2.0', $parentlang . '.zip', 'languages.md5', 'lang')) { $cd->install(); } } }
$strupwards = get_string('upwards', 'admin'); $strmisc = get_string('miscellaneous'); /// Print the header stuff admin_externalpage_print_header(); /// Print the component download link echo '<div class="reportlink"><a href="environment.php?action=updatecomponent&sesskey=' . $USER->sesskey . '">' . $strupdate . '</a></div>'; print_heading($strenvironment); /// Handle the 'updatecomponent' action if ($action == 'updatecomponent' && confirm_sesskey()) { /// Create component installer and execute it if ($cd = new component_installer('http://download.moodle.org', 'environment', 'environment.zip')) { $status = $cd->install(); //returns ERROR | UPTODATE | INSTALLED switch ($status) { case ERROR: if ($cd->get_error() == 'remotedownloadnotallowed') { $a = new stdClass(); $a->url = 'http://download.moodle.org/environment/environment.zip'; $a->dest = $CFG->dataroot . '/'; print_simple_box(get_string($cd->get_error(), 'error', $a), 'center', '', '', 5, 'errorbox'); } else { print_simple_box(get_string($cd->get_error(), 'error'), 'center', '', '', 5, 'errorbox'); } break; case UPTODATE: print_simple_box(get_string($cd->get_error(), 'error'), 'center'); break; case INSTALLED: print_simple_box(get_string('componentinstalled', 'admin'), 'center'); break; }
set_time_limit(0); @mkdir($CFG->dataroot . '/temp/', $CFG->directorypermissions); //make it in case it's a fresh install, it might not be there @mkdir($CFG->dataroot . '/lang/', $CFG->directorypermissions); if (is_array($pack)) { $packs = $pack; } else { $packs = array($pack); } foreach ($packs as $pack) { if ($cd = new component_installer('http://download.moodle.org', 'lang16', $pack . '.zip', 'languages.md5', 'lang')) { $status = $cd->install(); //returns COMPONENT_(ERROR | UPTODATE | INSTALLED) switch ($status) { case COMPONENT_ERROR: if ($cd->get_error() == 'remotedownloaderror') { $a = new object(); $a->url = 'http://download.moodle.org/lang16/' . $pack . '.zip'; $a->dest = $CFG->dataroot . '/lang'; print_error($cd->get_error(), 'error', 'langimport.php', $a); } else { print_error($cd->get_error(), 'error', 'langimport.php'); } break; case COMPONENT_INSTALLED: $notice_ok[] = get_string('langpackinstalled', 'admin', $pack); break; case COMPONENT_UPTODATE: break; } } else {
$version = optional_param('version', '', PARAM_FILE); // $extraurlparams = array(); if ($version) { $extraurlparams['version'] = $version; } admin_externalpage_setup('environment', '', $extraurlparams); // Handle the 'updatecomponent' action if ($action == 'updatecomponent' && confirm_sesskey()) { // Create component installer and execute it if ($cd = new component_installer('https://download.moodle.org', 'environment', 'environment.zip')) { $status = $cd->install(); //returns COMPONENT_(ERROR | UPTODATE | INSTALLED) switch ($status) { case COMPONENT_ERROR: if ($cd->get_error() == 'remotedownloaderror') { $a = new stdClass(); $a->url = 'https://download.moodle.org/environment/environment.zip'; $a->dest = $CFG->dataroot . '/'; print_error($cd->get_error(), 'error', $PAGE->url, $a); die; } else { print_error($cd->get_error(), 'error', $PAGE->url); die; } case COMPONENT_UPTODATE: redirect($PAGE->url, get_string($cd->get_error(), 'error')); die; case COMPONENT_INSTALLED: redirect($PAGE->url, get_string('componentinstalled', 'admin')); die;
if ($config->stage == INSTALL_DATABASETYPE) { // skip db selection if distro package supports only one db if (!empty($distro->dbtype)) { $config->stage = INSTALL_DATABASE; } } if ($config->stage == INSTALL_DOWNLOADLANG) { $downloaderror = ''; /// Create necessary lang dir if (!make_upload_directory('lang', false)) { $downloaderror = get_string('cannotcreatelangdir', 'error'); /// Download and install lang component } else { if ($cd = new component_installer('http://download.moodle.org', 'lang16', $CFG->lang . '.zip', 'languages.md5', 'lang')) { if ($cd->install() == COMPONENT_ERROR) { if ($cd->get_error() == 'remotedownloaderror') { $a = new stdClass(); $a->url = 'http://download.moodle.org/lang16/' . $INSTALL['language'] . '.zip'; $a->dest = $CFG->dataroot . '/lang'; $downloaderror = get_string($cd->get_error(), 'error', $a); } else { $downloaderror = get_string($cd->get_error(), 'error'); } } else { // install parent lang if defined if ($parentlang = get_parent_language()) { if ($cd = new component_installer('http://download.moodle.org', 'lang16', $parentlang . '.zip', 'languages.md5', 'lang')) { $cd->install(); } } }
continue; } } if (file_exists($dest2)) { if (!remove_dir($dest2)) { $notice_error[] = 'Could not delete old directory ' . $dest2 . ', update of ' . $pack . ' failed, please check permissions.'; continue; } } //2. copy & unzip into new if ($cd = new component_installer('http://download.moodle.org', 'lang16', $pack . '.zip', 'languages.md5', 'lang')) { $status = $cd->install(); //returns COMPONENT_(ERROR | UPTODATE | INSTALLED) switch ($status) { case COMPONENT_ERROR: if ($cd->get_error() == 'remotedownloaderror') { $a = new stdClass(); $a->url = 'http://download.moodle.org/lang16/' . $pack . '.zip'; $a->dest = $CFG->dataroot . '/lang'; error(get_string($cd->get_error(), 'error', $a)); // not probable } else { error(get_string($cd->get_error(), 'error')); // not probable } break; case COMPONENT_UPTODATE: //Print error string or whatever you want to do break; case COMPONENT_INSTALLED: $notice_ok[] = get_string('langpackupdated', 'admin', $pack);
public function installLangPack($pack) { global $CFG; require_once $CFG->libdir . '/adminlib.php'; require_once $CFG->libdir . '/filelib.php'; require_once $CFG->libdir . '/componentlib.class.php'; $thisversion = '2.0'; // TODO this information should be taken from version.php or similar source make_upload_directory('lang'); if (is_array($pack)) { $packs = $pack; } else { $packs = array($pack); } foreach ($packs as $pack) { if ($cd = new component_installer('http://download.moodle.org', 'langpack/' . $thisversion, $pack . '.zip', 'languages.md5', 'lang')) { $status = $cd->install(); switch ($status) { case COMPONENT_ERROR: if ($cd->get_error() == 'remotedownloaderror') { $a = new stdClass(); $a->url = 'http://download.moodle.org/langpack/' . $thisversion . '/' . $pack . '.zip'; $a->dest = $CFG->dataroot . '/lang'; print_error($cd->get_error(), 'error', 'langimport.php', $a); } else { print_error($cd->get_error(), 'error', 'langimport.php'); } break; case COMPONENT_INSTALLED: if ($parentlang = get_parent_language($pack)) { // install also parent pack if specified if ($cd = new component_installer('http://download.moodle.org', 'langpack/' . $thisversion, $parentlang . '.zip', 'languages.md5', 'lang')) { $cd->install(); } } break; } } else { echo $OUTPUT->notification('Had an unspecified error with the component installer, sorry.'); } } }
$strupwards = get_string('upwards', 'admin'); $strmisc = get_string('miscellaneous'); /// Print the header stuff echo $OUTPUT->header(); /// Print the component download link echo '<div class="reportlink"><a href="environment.php?action=updatecomponent&sesskey=' . sesskey() . '">' . $strupdate . '</a></div>'; echo $OUTPUT->heading($strenvironment); /// Handle the 'updatecomponent' action if ($action == 'updatecomponent' && confirm_sesskey()) { /// Create component installer and execute it if ($cd = new component_installer('http://download.moodle.org', 'environment', 'environment.zip')) { $status = $cd->install(); //returns COMPONENT_(ERROR | UPTODATE | INSTALLED) switch ($status) { case COMPONENT_ERROR: if ($cd->get_error() == 'remotedownloaderror') { $a = new stdClass(); $a->url = 'http://download.moodle.org/environment/environment.zip'; $a->dest = $CFG->dataroot . '/'; echo $OUTPUT->box(get_string($cd->get_error(), 'error', $a), 'errorbox'); } else { echo $OUTPUT->box(get_string($cd->get_error(), 'error'), 'errorbox'); } break; case COMPONENT_UPTODATE: echo $OUTPUT->box(get_string($cd->get_error(), 'error')); break; case COMPONENT_INSTALLED: echo $OUTPUT->box(get_string('componentinstalled', 'admin')); break; }
console_write("\n", '', false); console_write('downloadlanguagepack', 'install'); $download_lang_pack = read_yes_no(); if ($download_lang_pack == 'yes') { $downloadsuccess = false; /// Create necessary lang dir if (!make_upload_directory('lang', false)) { console_write_error(get_string('cannotcreatelangdir', 'error'), false); } /// Download and install component if (($cd = new component_installer('http://download.moodle.org', 'lang16', $INSTALL['lang'] . '.zip', 'languages.md5', 'lang')) && empty($errormsg)) { $status = $cd->install(); //returns ERROR | UPTODATE | INSTALLED switch ($status) { case ERROR: if ($cd->get_error() == 'remotedownloadnotallowed') { $a = new stdClass(); $a->url = 'http://download.moodle.org/lang16/' . $pack . '.zip'; $a->dest = $CFG->dataroot . '/lang'; console_write(get_string($cd->get_error(), 'error', $a), false); } else { $downloaderror = get_string($cd->get_error(), 'error'); console_write(get_string($cd->get_error(), 'error'), false); } break; case UPTODATE: case INSTALLED: $downloadsuccess = true; break; default: //We shouldn't reach this point