private function move_into_another($new_id) { switch ($this->parameter) { case 'type': //Update the type for the bugs of this type BugtrackerService::update_parameter(array('type' => $new_id), 'WHERE type=:id', array('id' => $this->id)); if (empty($new_id)) { //Delete history lines containing this type BugtrackerService::delete_history("WHERE updated_field='type' AND (old_value=:id OR new_value=:id)", array('id' => $this->id)); } else { //Update history lines containing this type BugtrackerService::update_history(array('old_value' => $new_id), "WHERE updated_field='type' AND old_value=:id", array('id' => $this->id)); BugtrackerService::update_history(array('new_value' => $new_id), "WHERE updated_field='type' AND new_value=:id", array('id' => $this->id)); } break; case 'category': //Update the category for the bugs of this category BugtrackerService::update_parameter(array('category' => $new_id), 'WHERE category=:id', array('id' => $this->id)); if (empty($new_id)) { //Delete history lines containing this type BugtrackerService::delete_history("WHERE updated_field='category' AND (old_value=:id OR new_value=:id)", array('id' => $this->id)); } else { //Update history lines containing this category BugtrackerService::update_history(array('old_value' => $new_id), "WHERE updated_field='category' AND old_value=:id", array('id' => $this->id)); BugtrackerService::update_history(array('new_value' => $new_id), "WHERE updated_field='category' AND new_value=:id", array('id' => $this->id)); } break; case 'version': //Update the version for the bugs of this version BugtrackerService::update_parameter(array('detected_in' => $new_id), 'WHERE detected_in=:id', array('id' => $this->id)); BugtrackerService::update_parameter(array('fixed_in' => $new_id), 'WHERE fixed_in=:id', array('id' => $this->id)); if (empty($new_id)) { //Delete history lines containing this type BugtrackerService::delete_history("WHERE updated_field='detected_in' OR updated_field='fixed_in' AND (old_value=:id OR new_value=:id)", array('id' => $this->id)); } else { //Update history lines containing this version BugtrackerService::update_history(array('old_value' => $new_id), "WHERE updated_field='detected_in' AND old_value=:id", array('id' => $this->id)); BugtrackerService::update_history(array('new_value' => $new_id), "WHERE updated_field='detected_in' AND new_value=:id", array('id' => $this->id)); BugtrackerService::update_history(array('old_value' => $new_id), "WHERE updated_field='fixed_in' AND old_value=:id", array('id' => $this->id)); BugtrackerService::update_history(array('new_value' => $new_id), "WHERE updated_field='fixed_in' AND new_value=:id", array('id' => $this->id)); } BugtrackerStatsCache::invalidate(); break; } }
private function save() { $now = new Date(); $current_user = AppContext::get_current_user(); if ($this->config->are_pm_enabled() && $this->config->are_pm_delete_enabled()) { //Add comment if needed $comment = !$this->form->field_is_disabled('comments_message') ? $this->form->get_value('comments_message', '') : ''; //Send PM with comment to updaters if the option is enabled BugtrackerPMService::send_PM_to_updaters('delete', $this->bug->get_id(), $comment); } //Delete bug BugtrackerService::delete("WHERE id=:id", array('id' => $this->bug->get_id())); //Delete bug history BugtrackerService::delete_history("WHERE bug_id=:id", array('id' => $this->bug->get_id())); //Delete comments CommentsService::delete_comments_topic_module('bugtracker', $this->bug->get_id()); //Delete admin alert if ($this->config->are_admin_alerts_enabled()) { $alerts = AdministratorAlertService::find_by_criteria($this->bug->get_id(), 'bugtracker'); if (!empty($alerts)) { AdministratorAlertService::delete_alert($alerts[0]); } } BugtrackerStatsCache::invalidate(); Feed::clear_cache('bugtracker'); }