public function update_permission($task_set_id, $task_set_permission_id) { $this->load->library('form_validation'); $this->form_validation->set_rules('task_set_permission[group_id]', 'lang:admin_task_sets_form_field_group_id', 'required'); $task_set_permission_data = $this->input->post('task_set_permission'); $this->form_validation->set_rules('task_set_permission[deadline_notification_emails_handler]', 'lang:admin_task_sets_form_field_deadline_notification_emails_handler', 'required'); if (isset($task_set_permission_data['deadline_notification_emails_handler']) && $task_set_permission_data['deadline_notification_emails_handler'] == 2) { $this->form_validation->set_rules('task_set_permission[deadline_notification_emails]', 'lang:admin_task_sets_form_field_deadline_notification_emails', 'required|valid_emails'); } else { $this->form_validation->set_rules('task_set_permission[deadline_notification_emails]', 'lang:admin_task_sets_form_field_deadline_notification_emails', 'zero_or_more_valid_emails'); } if ($this->form_validation->run()) { $this->_transaction_isolation(); $this->db->trans_begin(); $task_set = new Task_set(); $task_set->get_by_id((int) $task_set_id); $task_set_permission = new Task_set_permission(); $task_set_permission->get_by_id((int) $task_set_permission_id); if ($task_set->exists() && !is_null($task_set->course_id)) { if ($task_set_permission->exists() && $task_set_permission->is_related_to($task_set)) { $task_set_permission_upload_end_time = $task_set_permission->upload_end_time; $task_set_permission->enabled = isset($task_set_permission_data['enabled']) ? 1 : 0; $task_set_permission->group_id = $task_set_permission_data['group_id']; $task_set_permission->room_id = intval($task_set_permission_data['room_id']) > 0 ? intval($task_set_permission_data['room_id']) : NULL; $task_set_permission->publish_start_time = preg_match(Task_sets::REGEXP_PATTERN_DATETYME, $task_set_permission_data['publish_start_time']) ? $task_set_permission_data['publish_start_time'] : NULL; $task_set_permission->upload_end_time = preg_match(Task_sets::REGEXP_PATTERN_DATETYME, $task_set_permission_data['upload_end_time']) ? $task_set_permission_data['upload_end_time'] : NULL; $task_set_permission->deadline_notification_emails = $task_set_permission_data['deadline_notification_emails']; $task_set_permission->deadline_notification_emails_handler = $task_set_permission_data['deadline_notification_emails_handler']; if ($task_set_permission->upload_end_time !== $task_set_permission_upload_end_time) { $task_set_permission->deadline_notified = 0; } if ($task_set_permission->save()) { $task_set_permissions = new Task_set_permission(); $task_set_permissions->where_related($task_set); $task_set_permissions->where('group_id', $task_set_permission->group_id); if ($task_set_permissions->count() > 1) { $this->db->trans_rollback(); $this->messages->add_message('lang:admin_task_set_permissions_error_message_cant_save_for_the_same_group', Messages::MESSAGE_TYPE_ERROR); } else { $this->db->trans_commit(); $this->messages->add_message('lang:admin_task_set_permissions_success_message_saved', Messages::MESSAGE_TYPE_SUCCESS); $this->_action_success(); } } else { $this->db->trans_rollback(); $this->messages->add_message('lang:admin_task_set_permissions_error_message_cant_save', Messages::MESSAGE_TYPE_ERROR); } } else { $this->db->trans_rollback(); $this->messages->add_message('lang:admin_task_set_permissions_error_message_cant_find_task_set_permission_or_is_not_related_to_task_set', Messages::MESSAGE_TYPE_ERROR); } } else { $this->db->trans_rollback(); $this->messages->add_message('lang:admin_task_set_permissions_error_message_cant_find_task_set_or_course', Messages::MESSAGE_TYPE_ERROR); } redirect(create_internal_url('admin_task_set_permissions/edit_permission/' . (int) $task_set_id) . '/' . (int) $task_set_permission_id); } else { $this->edit_permission($task_set_id, $task_set_permission_id); } }