Custom blog settings

Here is part of a class I wrote for client recently:

if ( is_admin() )
    RevenueCalculatorAdminSettings::init();

/**
 * Call this class with:
 *
 *    RevenueCalculatorAdminSettings->init();
 *
 *     or
 *
 *    RevenueCalculatorAdminSettings->init( 'text_domain' );
 *
 */
class RevenueCalculatorAdminSettings {

    public static $text_domain = '';

    /**
     * Add actions to produce new settings.
     *
     * @param string $text_domain The text domain to use for localization. Default is ''.
     */
    public static function init( $text_domain = '' ) {

        self::$text_domain = $text_domain;

        add_action( 'admin_menu', array( __CLASS__, 'admin_settings_section' ) );
        add_action( 'admin_init', array( __CLASS__, 'register_settings' ) );
    }

    /**
     * Register new settings.
     */
    public static function register_settings() {
        register_setting( 'general', 'commissions_calculator_commission', array( __CLASS__, 'validate_commission' ) );
        register_setting( 'general', 'commissions_calculator_month_format', array( __CLASS__, 'validate_month_format' ) );
    }

    /**
     * Adds new settings section to the Settings - General page.
     */
    public static function admin_settings_section() {
        add_settings_section( 'commissions-calculator', __( 'Commissions Calculator', self::$text_domain ), array( __CLASS__, 'commissions_calculator_fields' ), 'general' );
    }

    /**
     * Adds new settings field(s).
     */
    public static function commissions_calculator_fields() {
        add_settings_field( 'commissions-calculator-commission', __( 'Commission', self::$text_domain ), array( __CLASS__, 'commission' ), 'general', 'commissions-calculator', array( 'label_for' => 'commissions-calculator-commission' ) );
        add_settings_field( 'commissions-calculator-month_format', __( 'Month Format', self::$text_domain ), array( __CLASS__, 'month_format' ), 'general', 'commissions-calculator', array( 'label_for' => 'commissions-calculator-month-format' ) );
    }

    /**
     * Echo markup for Commission setting field.
     */
    public static function commission() {

        /**
         * id    commissions-calculator-commission
         * value get_option( 'commissions_calculator_commission' )
         */

        printf( '<input id="commissions-calculator-commission" name="commissions_calculator_commission" type="text" value="%s" class="small-text" /><label for="commissions-calculator-commission">%s</label>', get_option( 'commissions_calculator_commission' ),  __( ' For 60%, use 0.60.', self::$text_domain ) );
    }

    /**
     * Validate Commission option.
     *
     * @param string|array $tainted_input Tainted input from the admin form. Do not use this data without cleaning.
     */
    public static function validate_commission( $tainted_input ) {

        if ( is_numeric( $tainted_input ) )
            return $tainted_input;

        add_settings_error( 'commissions-calculator', 'commissions-calculator-commission', __( 'Commission must be numeric. Defaulting to 60%', self::$text_domain ) );

        return '0.60';
    }

    /**
     * Echo markup for Month Format setting field.
     */
    public static function month_format() {

        /**
         * id    commissions-calculator-month_format
         * value get_option( 'commissions_calculator_month_format' )
         */

        /** Use 'F' in date for full long Month names.
            Use 'M' in date for short, 3-letter Month names. */

        printf(
            '<label><input name="commissions_calculator_month_format" type="radio" value="F" %s/> <span>%s</span></label><br />
             <label><input name="commissions_calculator_month_format" type="radio" value="M" %s/> <span>%s</span><label>',

             checked( get_option( 'commissions_calculator_month_format' ), 'F', false ),
             __( 'Full month names (January, Februrary, etc.) in top row.', self::$text_domain ),

             checked( get_option( 'commissions_calculator_month_format' ), 'M', false ),
             __( 'Short month names (Jan, Feb, etc.) in top row.', self::$text_domain )
        );
    }

    /**
     * Validate Month Format option.
     *
     * @param string|array $tainted_input Tainted input from the admin form. Do not use this data without cleaning.
     */
    public static function validate_month_format( $tainted_input ) {

        /** Default to 'M'. Convert formats other than 'M' and 'F' to 'M'. */
        if ( 'F' == $tainted_input )
            return 'F';
        else
            return 'M';
    }

}

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)