#include <config.h>
/**
 * This method decides whether or not a specific object should be able
 * to use external databases.
 *
 * Arguments:
 *   ob is the object performing the db_* query
 *   action can be one of the following strings:
 *     connect, close, exec, commit, fetch, rollback
 *     these correspond to the db_* functions
 *   info is any extra information depending on the action
 *     For 'connect' it is an array of the form: ({ database, host, user })
 *     For 'exec' it is an array of the form: ({ exec string })
 *     For other types of action it is an empty array.
 *
 * Return value:
 *   For actions other than 'connect', a return value of 0 disallows the
 *   action and generates an error, while a return value of 1 allows the
 *   action.
 *   For 'connect', the return value can be a password for the
 *   database, or 1 if the database has no password or 0 to prevent
 *   connection.
 *
 * @param ob the object performing the db_* query
 * @param action "close", "commit", "connect", "exec", "fetch" or "rollback"
 * @param info additional data depending on the action
 * @return 1 to allow, 0 to deny, for action "connect" return the
 * password to send to the database as a string (or return 1 if no
 * password is needed)
 */
mixed valid_database( object ob, string action, mixed info ) {
    if( action == "connect") {
        switch( info[0] ) {
          case CONFIG_DB_CLUSTERS:
            return CONFIG_DB_PASS;
          case CONFIG_DB_ERRORS:
            return CONFIG_DB_PASS;
          default:
            return 0;
        }
    }
    return 1;
} /* valid_database() */