/** * Attaches all the tags to each bug in the group action. * @param integer Bug ID * @return boolean True if all tags attach properly */ function action_attach_tags_process($p_bug_id) { global $g_action_attach_tags_attach, $g_action_attach_tags_create; $t_user_id = auth_get_current_user_id(); foreach ($g_action_attach_tags_create as $t_tag_row) { $t_tag_row['id'] = tag_create($t_tag_row['name'], $t_user_id); $g_action_attach_tags_attach[] = $t_tag_row; } $g_action_attach_tags_create = array(); foreach ($g_action_attach_tags_attach as $t_tag_row) { if (!tag_bug_is_attached($t_tag_row['id'], $p_bug_id)) { tag_bug_attach($t_tag_row['id'], $p_bug_id, $t_user_id); } } return true; }
/** * Detach a tag from a bug. * @param integer Tag ID * @param integer Bug ID * @param boolean Add history entries to bug * @param integer User Id (or null for current logged in user) */ function tag_bug_detach($p_tag_id, $p_bug_id, $p_add_history = true, $p_user_id = null) { if ($p_user_id === null) { $t_user_id = auth_get_current_user_id(); } else { $t_user_id = $p_user_id; } if (!tag_bug_is_attached($p_tag_id, $p_bug_id)) { trigger_error(TAG_NOT_ATTACHED, ERROR); } $t_tag_row = tag_bug_get_row($p_tag_id, $p_bug_id); if ($t_user_id == tag_get_field($p_tag_id, 'user_id') || $t_user_id == $t_tag_row['user_id']) { $t_detach_level = config_get('tag_detach_own_threshold'); } else { $t_detach_level = config_get('tag_detach_threshold'); } access_ensure_bug_level($t_detach_level, $p_bug_id, $t_user_id); $c_tag_id = db_prepare_int($p_tag_id); $c_bug_id = db_prepare_int($p_bug_id); $t_bug_tag_table = config_get('mantis_bug_tag_table'); $query = "DELETE FROM {$t_bug_tag_table} \r\n\t\t\t\t\tWHERE tag_id='{$c_tag_id}' AND bug_id='{$c_bug_id}'"; db_query($query); if ($p_add_history) { $t_tag_name = tag_get_field($p_tag_id, 'name'); history_log_event_special($p_bug_id, TAG_DETACHED, $t_tag_name); } return true; }
/** * Detach a tag from a bug. * @param integer Tag ID * @param integer Bug ID * @param boolean Add history entries to bug * @param integer User Id (or null for current logged in user) */ function tag_bug_detach($p_tag_id, $p_bug_id, $p_add_history = true, $p_user_id = null) { if ($p_user_id === null) { $t_user_id = auth_get_current_user_id(); } else { $t_user_id = $p_user_id; } if (!tag_bug_is_attached($p_tag_id, $p_bug_id)) { trigger_error(TAG_NOT_ATTACHED, ERROR); } $t_tag_row = tag_bug_get_row($p_tag_id, $p_bug_id); if ($t_user_id == tag_get_field($p_tag_id, 'user_id') || $t_user_id == $t_tag_row['user_id']) { $t_detach_level = config_get('tag_detach_own_threshold'); } else { $t_detach_level = config_get('tag_detach_threshold'); } access_ensure_bug_level($t_detach_level, $p_bug_id, $t_user_id); $c_tag_id = db_prepare_int($p_tag_id); $c_bug_id = db_prepare_int($p_bug_id); $t_bug_tag_table = db_get_table('bug_tag'); $query = "DELETE FROM {$t_bug_tag_table}\n\t\t\t\t\tWHERE tag_id=" . db_param() . ' AND bug_id=' . db_param(); db_query_bound($query, array($c_tag_id, $c_bug_id)); if ($p_add_history) { $t_tag_name = tag_get_field($p_tag_id, 'name'); history_log_event_special($p_bug_id, TAG_DETACHED, $t_tag_name); } # updated the last_updated date bug_update_date($p_bug_id); return true; }
?> <tr class="spacer"><td colspan="2"></td></tr> <tr> <th class="category"><?php echo lang_get('tag_attach_long'); ?> </th> <td> <?php print_tag_attach_form($f_bug_id, $t_tag_string); ?> </td> </tr> </table> <?php html_page_bottom(); // end failed to attach tag } else { foreach ($t_tags_create as $t_tag_row) { $t_tag_row['id'] = tag_create($t_tag_row['name'], $t_user_id); $t_tags_attach[] = $t_tag_row; } foreach ($t_tags_attach as $t_tag_row) { if (!tag_bug_is_attached($t_tag_row['id'], $f_bug_id)) { tag_bug_attach($t_tag_row['id'], $f_bug_id, $t_user_id); } } event_signal('EVENT_TAG_ATTACHED', array($f_bug_id, $t_tags_attach)); form_security_purge('tag_attach'); print_successful_redirect_to_bug($f_bug_id); }