/** * {@inheritdoc} */ public function run() { $this->db->sql_return_on_error(true); $languages = $this->language_helper->get_available_languages(); $installed_languages = array(); foreach ($languages as $lang_info) { $lang_pack = array('lang_iso' => $lang_info['iso'], 'lang_dir' => $lang_info['iso'], 'lang_english_name' => htmlspecialchars($lang_info['name']), 'lang_local_name' => htmlspecialchars($lang_info['local_name'], ENT_COMPAT, 'UTF-8'), 'lang_author' => htmlspecialchars($lang_info['author'], ENT_COMPAT, 'UTF-8')); $this->db->sql_query('INSERT INTO ' . LANG_TABLE . ' ' . $this->db->sql_build_array('INSERT', $lang_pack)); $installed_languages[] = (int) $this->db->sql_nextid(); if ($this->db->get_sql_error_triggered()) { $error = $this->db->sql_error($this->db->get_sql_error_sql()); $this->iohandler->add_error_message($error['message']); } } $sql = 'SELECT * FROM ' . PROFILE_FIELDS_TABLE; $result = $this->db->sql_query($sql); $insert_buffer = new \phpbb\db\sql_insert_buffer($this->db, PROFILE_LANG_TABLE); while ($row = $this->db->sql_fetchrow($result)) { foreach ($installed_languages as $lang_id) { $insert_buffer->insert(array('field_id' => $row['field_id'], 'lang_id' => $lang_id, 'lang_name' => strtoupper(substr($row['field_name'], 6)), 'lang_explain' => '', 'lang_default_value' => '')); } } $this->db->sql_freeresult($result); $insert_buffer->flush(); }
/** * Render language select form * * @param string $selected_language */ protected function render_language_select($selected_language = null) { $langs = $this->lang_helper->get_available_languages(); foreach ($langs as $lang) { $this->template->assign_block_vars('language_select_item', array('VALUE' => $lang['iso'], 'NAME' => $lang['local_name'], 'SELECTED' => $lang['iso'] === $selected_language)); } }
/** * Request data from the user * * @param bool $use_request_data Whether to use submited data * * @throws \phpbb\install\exception\user_interaction_required_exception When the user is required to provide data */ protected function request_form_data($use_request_data = false) { if ($use_request_data) { $board_name = $this->io_handler->get_input('board_name', '', true); $board_desc = $this->io_handler->get_input('board_description', '', true); } else { $board_name = '{L_CONFIG_SITENAME}'; $board_desc = '{L_CONFIG_SITE_DESC}'; } // Use language because we only check this to be valid $default_lang = $this->install_config->get('user_language', 'en'); $langs = $this->language_helper->get_available_languages(); $lang_options = array(); foreach ($langs as $lang) { $lang_options[] = array('value' => $lang['iso'], 'label' => $lang['local_name'], 'selected' => $default_lang === $lang['iso']); } $board_form = array('default_lang' => array('label' => 'DEFAULT_LANGUAGE', 'type' => 'select', 'options' => $lang_options), 'board_name' => array('label' => 'BOARD_NAME', 'type' => 'text', 'default' => $board_name), 'board_description' => array('label' => 'BOARD_DESCRIPTION', 'type' => 'text', 'default' => $board_desc), 'submit_board' => array('label' => 'SUBMIT', 'type' => 'submit')); $this->io_handler->add_user_form_group('BOARD_CONFIG', $board_form); throw new user_interaction_required_exception(); }