} // Ask for the admin email address. if ($interactive) { cli_separator(); cli_heading(get_string('cliadminemail', 'install')); $prompt = get_string('clitypevaluedefault', 'admin', $options['adminemail']); $options['adminemail'] = cli_input($prompt); } // Validate that the address provided was an e-mail address. if (!empty($options['adminemail']) && !validate_email($options['adminemail'])) { $a = (object) array('option' => 'adminemail', 'value' => $options['adminemail']); cli_error(get_string('cliincorrectvalueerror', 'admin', $a)); } if ($interactive) { if (!$options['agree-license']) { cli_separator(); cli_heading(get_string('copyrightnotice')); echo "Moodle - Modular Object-Oriented Dynamic Learning Environment\n"; echo get_string('gpl3') . "\n\n"; echo get_string('doyouagree') . "\n"; $prompt = get_string('cliyesnoprompt', 'admin'); $input = cli_input($prompt, '', array(get_string('clianswerno', 'admin'), get_string('cliansweryes', 'admin'))); if ($input == get_string('clianswerno', 'admin')) { exit(1); } } } else { if (!$options['agree-license']) { cli_error(get_string('climustagreelicense', 'install')); } }
/** * Install Moodle DB, * config.php must exist, there must not be any tables in db yet. * * @param array $options adminpass is mandatory * @param bool $interactive * @return void */ function install_cli_database(array $options, $interactive) { global $CFG, $DB; require_once $CFG->libdir . '/environmentlib.php'; require_once $CFG->libdir . '/upgradelib.php'; // show as much debug as possible @error_reporting(E_ALL | E_STRICT); @ini_set('display_errors', '1'); $CFG->debug = E_ALL | E_STRICT; $CFG->debugdisplay = true; $CFG->version = ''; $CFG->release = ''; $CFG->branch = ''; $version = null; $release = null; $branch = null; // read $version and $release require $CFG->dirroot . '/version.php'; if ($DB->get_tables()) { cli_error(get_string('clitablesexist', 'install')); } if (empty($options['adminpass'])) { cli_error('Missing required admin password'); } // test environment first list($envstatus, $environment_results) = check_moodle_environment(normalize_version($release), ENV_SELECT_RELEASE); if (!$envstatus) { $errors = environment_get_errors($environment_results); cli_heading(get_string('environment', 'admin')); foreach ($errors as $error) { list($info, $report) = $error; echo "!! {$info} !!\n{$report}\n\n"; } exit(1); } if (!$DB->setup_is_unicodedb()) { if (!$DB->change_db_encoding()) { // If could not convert successfully, throw error, and prevent installation cli_error(get_string('unicoderequired', 'admin')); } } if ($interactive) { cli_separator(); cli_heading(get_string('databasesetup')); } // install core install_core($version, true); set_config('release', $release); set_config('branch', $branch); if (PHPUNIT_TEST) { // mark as test database as soon as possible set_config('phpunittest', 'na'); } // install all plugins types, local, etc. upgrade_noncore(true); // set up admin user password $DB->set_field('user', 'password', hash_internal_user_password($options['adminpass']), array('username' => 'admin')); // rename admin username if needed if (isset($options['adminuser']) and $options['adminuser'] !== 'admin' and $options['adminuser'] !== 'guest') { $DB->set_field('user', 'username', $options['adminuser'], array('username' => 'admin')); } // indicate that this site is fully configured set_config('rolesactive', 1); upgrade_finished(); // log in as admin - we need do anything when applying defaults $admins = get_admins(); $admin = reset($admins); session_set_user($admin); // apply all default settings, do it twice to fill all defaults - some settings depend on other setting admin_apply_default_settings(NULL, true); admin_apply_default_settings(NULL, true); set_config('registerauth', ''); // set the site name if (isset($options['shortname']) and $options['shortname'] !== '') { $DB->set_field('course', 'shortname', $options['shortname'], array('format' => 'site')); } if (isset($options['fullname']) and $options['fullname'] !== '') { $DB->set_field('course', 'fullname', $options['fullname'], array('format' => 'site')); } }
mtrace('Judge daemon successfully created. PID = ' . $pid); die; } else { // child process // make the current process a session leader. $sid = posix_setsid(); if ($sid < 0) { cli_error('Can not setsid()'); } // reconnect DB unset($DB); setup_DB(); } } } verbose(cli_separator(true)); verbose('Judge daemon is running now.'); if ($CFG->ostype != 'WINDOWS' and function_exists('pcntl_signal')) { // Handle SIGTERM and SIGINT so that can be killed without pain declare (ticks=1); // tick use required as of PHP 4.3.0 pcntl_signal(SIGTERM, 'sigterm_handler'); pcntl_signal(SIGINT, 'sigterm_handler'); } // Run forever until being killed or the plugin was upgraded $lockfile = $CFG->dataroot . LOCK_FILE; if (!check_dir_exists(dirname($lockfile))) { throw new moodle_exception('errorcreatingdirectory', '', '', $lockfile); } $LOCK = fopen($lockfile, 'w'); if (!$LOCK) {