Exemple #1
0
/**
 * Remove all categories associated with a project
 * @param int $p_project_id Project ID
 * @param int $p_new_category_id new category id (to replace existing category)
 * @return bool
 * @access public
 */
 function category_remove_all( $p_project_id, $p_new_category_id = 0 ) {

	project_ensure_exists( $p_project_id );
	if( 0 != $p_new_category_id ) {
		category_ensure_exists( $p_new_category_id );
	}

	# cache category names
	category_get_all_rows( $p_project_id );

	$t_category_table = db_get_table( 'category' );
	$t_bug_table = db_get_table( 'bug' );

	# get a list of affected categories
	$t_query = "SELECT id FROM $t_category_table WHERE project_id=" . db_param();
	$t_result = db_query_bound( $t_query, array( $p_project_id ) );

	$t_category_ids = array();
	while( $t_row = db_fetch_array( $t_result ) ) {
		$t_category_ids[] = $t_row['id'];
	}

	# Handle projects with no categories
	if( count( $t_category_ids ) < 1 ) {
		return true;
	}

	$t_category_ids = join( ',', $t_category_ids );

	# update bug history entries
	$t_query = "SELECT id, category_id FROM $t_bug_table WHERE category_id IN ( $t_category_ids )";
	$t_result = db_query_bound( $t_query );

	while( $t_bug_row = db_fetch_array( $t_result ) ) {
		history_log_event_direct( $t_bug_row['id'], 'category', category_full_name( $t_bug_row['category_id'], false ), category_full_name( $p_new_category_id, false ) );
	}

	# update bug data
	$t_query = "UPDATE $t_bug_table SET category_id=" . db_param() . " WHERE category_id IN ( $t_category_ids )";
	db_query_bound( $t_query, array( $p_new_category_id ) );

	# delete categories
	$t_query = "DELETE FROM $t_category_table WHERE project_id=" . db_param();
	db_query_bound( $t_query, array( $p_project_id ) );

	return true;
}
function category_remove($p_project_id, $p_category, $p_new_category = '')
{
    $c_project_id = db_prepare_int($p_project_id);
    $c_category = db_prepare_string($p_category);
    $c_new_category = db_prepare_string($p_new_category);
    category_ensure_exists($p_project_id, $p_category);
    if (!is_blank($p_new_category)) {
        category_ensure_exists($p_project_id, $p_new_category);
    }
    $t_project_category_table = config_get('mantis_project_category_table');
    $t_bug_table = config_get('mantis_bug_table');
    $query = "DELETE FROM {$t_project_category_table}\n\t\t\t\t  WHERE project_id='{$c_project_id}' AND\n\t\t\t\t\t\tcategory='{$c_category}'";
    db_query($query);
    $query = "UPDATE {$t_bug_table}\n\t\t\t\t  SET category='{$c_new_category}'\n\t\t\t\t  WHERE category='{$c_category}' AND\n\t\t\t\t  \t\tproject_id='{$c_project_id}'";
    db_query($query);
    # db_query() errors on failure so:
    return true;
}
Exemple #3
0
	/**
	 * validate current bug object for database insert/update
	 * triggers error on failure
	 * @param boolean $p_update_extended Whether to validate extended fields.
	 * @return void
	 */
	function validate( $p_update_extended = true ) {
		# Summary cannot be blank
		if( is_blank( $this->summary ) ) {
			error_parameters( lang_get( 'summary' ) );
			trigger_error( ERROR_EMPTY_FIELD, ERROR );
		}

		if( $p_update_extended ) {
			# Description field cannot be empty
			if( is_blank( $this->description ) ) {
				error_parameters( lang_get( 'description' ) );
				trigger_error( ERROR_EMPTY_FIELD, ERROR );
			}
		}

		# Make sure a category is set
		if( 0 == $this->category_id && !config_get( 'allow_no_category' ) ) {
			error_parameters( lang_get( 'category' ) );
			trigger_error( ERROR_EMPTY_FIELD, ERROR );
		}

		# Ensure that category id is a valid category
		if( $this->category_id > 0 ) {
			category_ensure_exists( $this->category_id );
		}

		if( !is_blank( $this->duplicate_id ) && ( $this->duplicate_id != 0 ) && ( $this->id == $this->duplicate_id ) ) {
			trigger_error( ERROR_BUG_DUPLICATE_SELF, ERROR );
			# never returns
		}
	}
/**
 * Remove all categories associated with a project.
 * This will skip processing of categories that can't be deleted.
 * @param integer $p_project_id      A Project identifier.
 * @param integer $p_new_category_id New category id (to replace existing category).
 * @return boolean
 * @access public
 */
function category_remove_all($p_project_id, $p_new_category_id = 0)
{
    project_ensure_exists($p_project_id);
    if (0 != $p_new_category_id) {
        category_ensure_exists($p_new_category_id);
    }
    # cache category names
    category_get_all_rows($p_project_id);
    # get a list of affected categories
    db_param_push();
    $t_query = 'SELECT id FROM {category} WHERE project_id=' . db_param();
    $t_result = db_query($t_query, array($p_project_id));
    $t_category_ids = array();
    while ($t_row = db_fetch_array($t_result)) {
        # Don't add category to the list if it can't be deleted
        if (!category_can_remove($t_row['id'])) {
            continue;
        }
        $t_category_ids[] = $t_row['id'];
    }
    # Handle projects with no categories
    if (count($t_category_ids) < 1) {
        return true;
    }
    $t_category_ids = join(',', $t_category_ids);
    # update bug history entries
    $t_query = 'SELECT id, category_id FROM {bug} WHERE category_id IN ( ' . $t_category_ids . ' )';
    $t_result = db_query($t_query);
    while ($t_bug_row = db_fetch_array($t_result)) {
        history_log_event_direct($t_bug_row['id'], 'category', category_full_name($t_bug_row['category_id'], false), category_full_name($p_new_category_id, false));
    }
    # update bug data
    db_param_push();
    $t_query = 'UPDATE {bug} SET category_id=' . db_param() . ' WHERE category_id IN ( ' . $t_category_ids . ' )';
    db_query($t_query, array($p_new_category_id));
    # delete categories
    db_param_push();
    $t_query = 'DELETE FROM {category} WHERE project_id=' . db_param();
    db_query($t_query, array($p_project_id));
    return true;
}