/**
  * 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);
             }
         }
     }
 }
Exemple #2
0
         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);
Exemple #3
0
        }
    } 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&amp;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 {
Exemple #6
0
$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();
                    }
                }
            }
Exemple #8
0
         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.');
         }
     }
 }
Exemple #10
0
$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&amp;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