public function save() { $this->load->library('form_validation'); $this->form_validation->set_rules('config[language]', 'lang:admin_settings_form_field_language', 'required'); if (is_mod_rewrite_enabled()) { $this->form_validation->set_rules('config[rewrite_engine_enabled]', 'lang:admin_settings_form_field_rewrite_engine_enabled', 'required'); } $this->form_validation->set_rules('config[url_suffix]', 'lang:admin_settings_form_field_url_suffix', 'callback__url_suffix'); $this->form_validation->set_message('_url_suffix', $this->lang->line('admin_settings_form_error_message_url_suffix')); $this->form_validation->set_rules('config[teacher_login_security_timeout]', 'lang:admin_settings_form_field_teacher_login_security_timeout', 'required|integer|greater_than[0]'); $this->form_validation->set_rules('config[student_login_security_timeout]', 'lang:admin_settings_form_field_student_login_security_timeout', 'required|integer|greater_than[0]'); $this->form_validation->set_rules('config[teacher_login_security_allowed_attempts]', 'lang:admin_settings_form_field_teacher_login_security_allowed_attempts', 'required|integer|greater_than[0]'); $this->form_validation->set_rules('config[student_login_security_allowed_attempts]', 'lang:admin_settings_form_field_student_login_security_allowed_attempts', 'required|integer|greater_than[0]'); $this->form_validation->set_rules('config[maximum_solition_filesize]', 'lang:admin_settings_form_field_maximum_solition_filesize', 'required|integer|greater_than[0]'); $this->form_validation->set_rules('config[readable_file_extensions]', 'lang:admin_settings_form_field_readable_file_extensions', 'required|min_length[0]|regex_match[/^[a-z]+[0-9]*(\\,[a-z]+[0-9]*)*$/]'); $this->form_validation->set_rules('config[email][protocol]', 'lang:admin_settings_form_field_email_protocol', 'required'); $this->form_validation->set_rules('config[email][priority]', 'lang:admin_settings_form_field_email_priority', 'required|integer|greater_than[0]|lower_than[6]'); $this->form_validation->set_rules('config[email][smtp_port]', 'lang:admin_settings_form_field_email_smtp_port', 'integer|greater_than[0]'); $this->form_validation->set_rules('config[email][smtp_timeout]', 'lang:admin_settings_form_field_email_smtp_timeout', 'integer|greater_than[0]'); $this->form_validation->set_rules('moss[moss_user_id]', 'lang:admin_settings_form_field_moss_user_id', 'required|integer|greater_than[0]'); $this->form_validation->set_rules('config[test_aging_ticks_to_priority_increase]', 'lang:admin_settings_form_field_test_aging_ticks_to_priority_increase', 'required|integer|greater_than_equal[5]'); $this->form_validation->set_rules('config[test_aging_max_tests_to_raise_priority]', 'lang:admin_settings_form_field_test_aging_max_tests_to_raise_priority', 'required|integer|greater_than_equal[5]'); $this->form_validation->set_rules('config[test_maximum_enqueued_pe_student]', 'lang:admin_settings_form_field_test_maximum_enqueued_pe_student', 'required|integer|greater_than_equal[3]'); $this->form_validation->set_rules('config[test_queue_done_error_lifetime]', 'lang:admin_settings_form_field_test_queue_done_error_lifetime', 'required|integer|greater_than_equal[60]'); if ($this->form_validation->run()) { $config = $this->protect_config_array($this->input->post('config')); $moss = $this->protect_moss_array($this->input->post('moss')); if (is_mod_rewrite_enabled()) { $config['rewrite_engine_enabled'] = $this->bool_val($config['rewrite_engine_enabled']); } else { $config['rewrite_engine_enabled'] = FALSE; } $config['teacher_login_security_timeout'] = intval($config['teacher_login_security_timeout']); $config['student_login_security_timeout'] = intval($config['student_login_security_timeout']); $config['teacher_login_security_allowed_attempts'] = intval($config['teacher_login_security_allowed_attempts']); $config['student_login_security_allowed_attempts'] = intval($config['student_login_security_allowed_attempts']); $config['maximum_solition_filesize'] = intval($config['maximum_solition_filesize']); $config['student_registration']['enabled'] = $this->bool_val($config['student_registration']['enabled']); $config['student_mail_change'] = $this->bool_val($config['student_mail_change']); $config['email']['smtp_port'] = intval($config['email']['smtp_port']); $config['email']['smtp_timeout'] = intval($config['email']['smtp_timeout']); $config['email']['priority'] = intval($config['email']['priority']); $config['email_multirecipient_batch_mode'] = $this->bool_val($config['email_multirecipient_batch_mode']); $config['test_aging_ticks_to_priority_increase'] = intval($config['test_aging_ticks_to_priority_increase']); $config['test_aging_max_tests_to_raise_priority'] = intval($config['test_aging_max_tests_to_raise_priority']); $config['test_maximum_enqueued_pe_student'] = intval($config['test_maximum_enqueued_pe_student']); if (!in_array($config['test_sandbox'], array('implicit', 'docker'))) { $config['test_sandbox'] = 'implicit'; } $this->configurator->set_config_array('config', $config); $this->configurator->set_config_array('moss', $moss); sleep(3); redirect(create_internal_url('admin_settings/index')); } else { $this->index(); } }
/** * Creates internal url from relative url. * Function respects setting of rewrite engine from application/config/config.php. * @param string $relative_url relative url as controller/action/[parameters]. * @param boolean $force_simple_link if set to TRUE, link will not use rewrite engine and url suffix, even if they are configured. * @return string internal url. */ function create_internal_url($relative_url, $force_simple_link = FALSE) { $CI =& get_instance(); if (!$force_simple_link && $CI->config->item('rewrite_engine_enabled') && is_mod_rewrite_enabled()) { if (trim(trim($relative_url, '\\/')) == '') { return base_url('/'); } return base_url('/' . trim($relative_url, '/')) . $CI->config->item('url_suffix'); } else { return base_url($CI->config->item('index_page') . '/' . trim($relative_url, '/')) . (!$force_simple_link ? $CI->config->item('url_suffix') : ''); } }
/** * This function returns current url with respect to rewrite engien setting. * I.E. it clears $config['index_page'] from current url. * @return string current url. */ public function clear_current_url() { $current_url = current_url(); if ($this->CI->config->item('rewrite_engine_enabled') && is_mod_rewrite_enabled()) { $current_url = str_replace(array($this->CI->config->item('index_page') . '/', $this->CI->config->item('index_page')), array('', ''), $current_url); } return $current_url; }