private function delete_parameter_and_bugs() { $bugs_list = array(); switch ($this->parameter) { case 'type': $result = PersistenceContext::get_querier()->select_rows(BugtrackerSetup::$bugtracker_table, array('id'), 'WHERE type=:id', array('id' => $this->id)); while ($row = $result->fetch()) { $bugs_list[] = $row['id']; } //Delete bugs BugtrackerService::delete('WHERE type=:id', array('id' => $this->id)); break; case 'category': $result = PersistenceContext::get_querier()->select_rows(BugtrackerSetup::$bugtracker_table, array('id'), 'WHERE category=:id', array('id' => $this->id)); while ($row = $result->fetch()) { $bugs_list[] = $row['id']; } //Delete bugs BugtrackerService::delete('WHERE category=:id', array('id' => $this->id)); break; case 'version': $result = PersistenceContext::get_querier()->select_rows(BugtrackerSetup::$bugtracker_table, array('id'), 'WHERE detected_in=:id OR fixed_in=:id', array('id' => $this->id)); while ($row = $result->fetch()) { $bugs_list[] = $row['id']; } //Delete bugs BugtrackerService::delete('WHERE detected_in=:id OR fixed_in=:id', array('id' => $this->id)); BugtrackerStatsCache::invalidate(); break; } //Delete history lines containing this type BugtrackerService::delete_history("WHERE bug_id IN (:bugs_list)", array('bugs_list' => implode(',', $bugs_list))); }
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'); }