Example #1
0
/**
 * Sets the value of the given configuration option to the given value
 * If the configuration option does not exist, an ERROR is triggered
 *
 * @param string  $p_option  Configuration option name.
 * @param string  $p_value   Configuration option value.
 * @param integer $p_user    A user identifier. Defaults to NO_USER.
 * @param integer $p_project A project identifier. Defaults to ALL_PROJECTS.
 * @param integer $p_access  Access level. Defaults to DEFAULT_ACCESS_LEVEL.
 * @return boolean
 */
function config_set($p_option, $p_value, $p_user = NO_USER, $p_project = ALL_PROJECTS, $p_access = DEFAULT_ACCESS_LEVEL)
{
    if ($p_access == DEFAULT_ACCESS_LEVEL) {
        $p_access = config_get_global('admin_site_threshold');
    }
    if (is_array($p_value) || is_object($p_value)) {
        $t_type = CONFIG_TYPE_COMPLEX;
        $c_value = json_encode($p_value);
    } else {
        if (is_float($p_value)) {
            $t_type = CONFIG_TYPE_FLOAT;
            $c_value = (double) $p_value;
        } else {
            if (is_int($p_value) || is_numeric($p_value)) {
                $t_type = CONFIG_TYPE_INT;
                $c_value = (int) $p_value;
            } else {
                $t_type = CONFIG_TYPE_STRING;
                $c_value = $p_value;
            }
        }
    }
    if (config_can_set_in_database($p_option)) {
        # before we set in the database, ensure that the user and project id exist
        if ($p_project !== ALL_PROJECTS) {
            project_ensure_exists($p_project);
        }
        if ($p_user !== NO_USER) {
            user_ensure_exists($p_user);
        }
        $t_query = 'SELECT COUNT(*) from {config}
				WHERE config_id = ' . db_param() . ' AND
					project_id = ' . db_param() . ' AND
					user_id = ' . db_param();
        $t_result = db_query($t_query, array($p_option, (int) $p_project, (int) $p_user));
        $t_params = array();
        if (0 < db_result($t_result)) {
            $t_set_query = 'UPDATE {config}
					SET value=' . db_param() . ', type=' . db_param() . ', access_reqd=' . db_param() . '
					WHERE config_id = ' . db_param() . ' AND
						project_id = ' . db_param() . ' AND
						user_id = ' . db_param();
            $t_params = array((string) $c_value, $t_type, (int) $p_access, $p_option, (int) $p_project, (int) $p_user);
        } else {
            $t_set_query = 'INSERT INTO {config}
					( value, type, access_reqd, config_id, project_id, user_id )
					VALUES
					(' . db_param() . ', ' . db_param() . ', ' . db_param() . ', ' . db_param() . ', ' . db_param() . ',' . db_param() . ' )';
            $t_params = array((string) $c_value, $t_type, (int) $p_access, $p_option, (int) $p_project, (int) $p_user);
        }
        db_query($t_set_query, $t_params);
    }
    config_set_cache($p_option, $c_value, $t_type, $p_user, $p_project, $p_access);
    return true;
}
Example #2
0
function project_delete($p_project_id)
{
    $t_email_notifications = config_get('enable_email_notification');
    # temporarily disable all notifications
    config_set_cache('enable_email_notification', OFF, CONFIG_TYPE_INT);
    $c_project_id = db_prepare_int($p_project_id);
    $t_project_table = db_get_table('project');
    # Delete the bugs
    bug_delete_all($p_project_id);
    # Delete associations with custom field definitions.
    custom_field_unlink_all($p_project_id);
    # Delete the project categories
    category_remove_all($p_project_id);
    # Delete the project versions
    version_remove_all($p_project_id);
    # Delete relations to other projects
    project_hierarchy_remove_all($p_project_id);
    # Delete the project files
    project_delete_all_files($p_project_id);
    # Delete the records assigning users to this project
    project_remove_all_users($p_project_id);
    # Delete all news entries associated with the project being deleted
    news_delete_all($p_project_id);
    # Delete project specific configurations
    config_delete_project($p_project_id);
    # Delete any user prefs that are project specific
    user_pref_delete_project($p_project_id);
    # Delete the project entry
    $query = "DELETE FROM {$t_project_table}\n\t\t\t\t  WHERE id=" . db_param();
    db_query_bound($query, array($c_project_id));
    config_set_cache('enable_email_notification', $t_email_notifications, CONFIG_TYPE_INT);
    project_clear_cache($p_project_id);
    # db_query errors on failure so:
    return true;
}
Example #3
0
function config_set( $p_option, $p_value, $p_user = NO_USER, $p_project = ALL_PROJECTS, $p_access = DEFAULT_ACCESS_LEVEL ) {
	if( $p_access == DEFAULT_ACCESS_LEVEL ) {
		$p_access = config_get_global( 'admin_site_threshold' );
	}
	if( is_array( $p_value ) || is_object( $p_value ) ) {
		$t_type = CONFIG_TYPE_COMPLEX;
		$c_value = serialize( $p_value );
	} else if( is_float( $p_value ) ) {
		$t_type = CONFIG_TYPE_FLOAT;
		$c_value = (float) $p_value;
	} else if( is_int( $p_value ) || is_numeric( $p_value ) ) {
		$t_type = CONFIG_TYPE_INT;
		$c_value = db_prepare_int( $p_value );
	} else {
		$t_type = CONFIG_TYPE_STRING;
		$c_value = $p_value;
	}

	if( config_can_set_in_database( $p_option ) ) {
		$c_option = $p_option;
		$c_user = db_prepare_int( $p_user );
		$c_project = db_prepare_int( $p_project );
		$c_access = db_prepare_int( $p_access );

		$t_config_table = db_get_table( 'config' );
		$query = "SELECT COUNT(*) from $t_config_table
				WHERE config_id = " . db_param() . " AND
					project_id = " . db_param() . " AND
					user_id = " . db_param();
		$result = db_query_bound( $query, Array( $c_option, $c_project, $c_user ) );

		$t_params = Array();
		if( 0 < db_result( $result ) ) {
			$t_set_query = "UPDATE $t_config_table
					SET value=" . db_param() . ", type=" . db_param() . ", access_reqd=" . db_param() . "
					WHERE config_id = " . db_param() . " AND
						project_id = " . db_param() . " AND
						user_id = " . db_param();
			$t_params = Array(
				$c_value,
				$t_type,
				$c_access,
				$c_option,
				$c_project,
				$c_user,
			);
		} else {
			$t_set_query = "INSERT INTO $t_config_table
					( value, type, access_reqd, config_id, project_id, user_id )
					VALUES
					(" . db_param() . ', ' . db_param() . ', ' . db_param() . ', ' . db_param() . ', ' . db_param() . ',' . db_param() . ' )';
			$t_params = Array(
				$c_value,
				$t_type,
				$c_access,
				$c_option,
				$c_project,
				$c_user,
			);
		}

		$result = db_query_bound( $t_set_query, $t_params );
	}

	config_set_cache( $p_option, $c_value, $t_type, $p_user, $p_project, $p_access );

	return true;
}
Example #4
0
function config_set($p_option, $p_value, $p_user = NO_USER, $p_project = ALL_PROJECTS, $p_access = ADMINISTRATOR)
{
    if (is_array($p_value) || is_object($p_value)) {
        $t_type = CONFIG_TYPE_COMPLEX;
        $c_value = db_prepare_string(serialize($p_value));
    } else {
        if (is_int($p_value) || is_numeric($p_value)) {
            $t_type = CONFIG_TYPE_INT;
            $c_value = db_prepare_int($p_value);
        } else {
            $t_type = CONFIG_TYPE_STRING;
            $c_value = db_prepare_string($p_value);
        }
    }
    if (config_can_set_in_database($p_option)) {
        $c_option = db_prepare_string($p_option);
        $c_user = db_prepare_int($p_user);
        $c_project = db_prepare_int($p_project);
        $c_access = db_prepare_int($p_access);
        $t_config_table = config_get_global('mantis_config_table');
        $query = "SELECT COUNT(*) from {$t_config_table}\r\n\t\t\t\tWHERE config_id = '{$c_option}' AND\r\n\t\t\t\t\tproject_id = {$c_project} AND\r\n\t\t\t\t\tuser_id = {$c_user}";
        $result = db_query($query);
        if (0 < db_result($result)) {
            $t_set_query = "UPDATE {$t_config_table}\r\n\t\t\t\t\tSET value='{$c_value}', type={$t_type}, access_reqd={$c_access}\r\n\t\t\t\t\tWHERE config_id = '{$c_option}' AND\r\n\t\t\t\t\t\tproject_id = {$c_project} AND\r\n\t\t\t\t\t\tuser_id = {$c_user}";
        } else {
            $t_set_query = "INSERT INTO {$t_config_table}\r\n\t\t\t\t\t( value, type, access_reqd, config_id, project_id, user_id )\r\n\t\t\t\t\tVALUES \r\n\t\t\t\t\t('{$c_value}', {$t_type}, {$c_access}, '{$c_option}', {$c_project}, {$c_user} )";
        }
        $result = db_query($t_set_query);
    }
    config_set_cache($p_option, $p_value, $p_user, $p_project, $p_access);
    return true;
}
Example #5
0
/**
 * Delete a project
 * @param integer $p_project_id A project identifier.
 * @return void
 */
function project_delete($p_project_id)
{
    event_signal('EVENT_MANAGE_PROJECT_DELETE', array($p_project_id));
    $t_email_notifications = config_get('enable_email_notification');
    # temporarily disable all notifications
    config_set_cache('enable_email_notification', OFF, CONFIG_TYPE_INT);
    # Delete the bugs
    bug_delete_all($p_project_id);
    # Delete associations with custom field definitions.
    custom_field_unlink_all($p_project_id);
    # Delete the project categories
    category_remove_all($p_project_id);
    # Delete the project versions
    version_remove_all($p_project_id);
    # Delete relations to other projects
    project_hierarchy_remove_all($p_project_id);
    # Delete the project files
    project_delete_all_files($p_project_id);
    # Delete the records assigning users to this project
    project_remove_all_users($p_project_id);
    # Delete all news entries associated with the project being deleted
    news_delete_all($p_project_id);
    # Delete project specific configurations
    config_delete_project($p_project_id);
    # Delete any user prefs that are project specific
    user_pref_delete_project($p_project_id);
    # Delete the project entry
    $t_query = 'DELETE FROM {project} WHERE id=' . db_param();
    db_query($t_query, array($p_project_id));
    config_set_cache('enable_email_notification', $t_email_notifications, CONFIG_TYPE_INT);
    project_clear_cache($p_project_id);
}
Example #6
0
/**
 * Sets the value of the given config option to the given value
 *  If the config option does not exist, an ERROR is triggered
 *
 * @param string $p_option config option
 * @param string $p_value config value
 * @param int $p_user user id
 * @param int $p_project project id
 * @param int $p_access access level
 * @return bool
 */
function config_set($p_option, $p_value, $p_user = NO_USER, $p_project = ALL_PROJECTS, $p_access = DEFAULT_ACCESS_LEVEL)
{
    if ($p_access == DEFAULT_ACCESS_LEVEL) {
        $p_access = config_get_global('admin_site_threshold');
    }
    if (is_array($p_value) || is_object($p_value)) {
        $t_type = CONFIG_TYPE_COMPLEX;
        $c_value = serialize($p_value);
    } else {
        if (is_float($p_value)) {
            $t_type = CONFIG_TYPE_FLOAT;
            $c_value = (double) $p_value;
        } else {
            if (is_int($p_value) || is_numeric($p_value)) {
                $t_type = CONFIG_TYPE_INT;
                $c_value = (int) $p_value;
            } else {
                $t_type = CONFIG_TYPE_STRING;
                $c_value = $p_value;
            }
        }
    }
    if (config_can_set_in_database($p_option)) {
        # before we set in the database, ensure that the user and project id exist
        if ($p_project !== ALL_PROJECTS) {
            project_ensure_exists($p_project);
        }
        if ($p_user !== NO_USER) {
            user_ensure_exists($p_user);
        }
        $t_config_table = db_get_table('config');
        $t_query = "SELECT COUNT(*) from {$t_config_table}\n\t\t\t\tWHERE config_id = " . db_param() . " AND\n\t\t\t\t\tproject_id = " . db_param() . " AND\n\t\t\t\t\tuser_id = " . db_param();
        $t_result = db_query_bound($t_query, array($p_option, (int) $p_project, (int) $p_user));
        $t_params = array();
        if (0 < db_result($t_result)) {
            $t_set_query = "UPDATE {$t_config_table}\n\t\t\t\t\tSET value=" . db_param() . ", type=" . db_param() . ", access_reqd=" . db_param() . "\n\t\t\t\t\tWHERE config_id = " . db_param() . " AND\n\t\t\t\t\t\tproject_id = " . db_param() . " AND\n\t\t\t\t\t\tuser_id = " . db_param();
            $t_params = array($c_value, $t_type, (int) $p_access, $p_option, (int) $p_project, (int) $p_user);
        } else {
            $t_set_query = "INSERT INTO {$t_config_table}\n\t\t\t\t\t( value, type, access_reqd, config_id, project_id, user_id )\n\t\t\t\t\tVALUES\n\t\t\t\t\t(" . db_param() . ', ' . db_param() . ', ' . db_param() . ', ' . db_param() . ', ' . db_param() . ',' . db_param() . ' )';
            $t_params = array($c_value, $t_type, (int) $p_access, $p_option, (int) $p_project, (int) $p_user);
        }
        $result = db_query_bound($t_set_query, $t_params);
    }
    config_set_cache($p_option, $c_value, $t_type, $p_user, $p_project, $p_access);
    return true;
}