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');
 }