spivurno of Gravity Wiz
4/29/2014 - 2:57 PM

Gravity Wiz // Require Minimum Character Limit for Gravity Forms

Gravity Wiz // Require Minimum Character Limit for Gravity Forms

<?php
/**
* Gravity Wiz // Require Minimum Character Limit for Gravity Forms
* 
* Adds support for requiring a minimum number of characters for text-based Gravity Form fields.
* 
* @version	 1.0
* @author    David Smith <david@gravitywiz.com>
* @license   GPL-2.0+
* @link      http://gravitywiz.com/...
* @copyright 2013 Gravity Wiz
*/
class GW_Minimum_Characters {
    
    public function __construct( $args = array() ) {
        
        // make sure we're running the required minimum version of Gravity Forms
        if( ! property_exists( 'GFCommon', 'version' ) || ! version_compare( GFCommon::$version, '1.7', '>=' ) )
            return;
    	
    	// set our default arguments, parse against the provided arguments, and store for use throughout the class
    	$this->_args = wp_parse_args( $args, array( 
    		'form_id' => false,
    		'field_id' => false,
    		'min_chars' => 0,
            'validation_message' => __( 'Please enter at least %s characters.' )
    	) );
    	
        extract( $this->_args );
        
        if( ! $form_id || ! $field_id || ! $min_chars )
            return;
        
    	// time for hooks
    	add_filter( "gform_field_validation_{$form_id}_{$field_id}", array( $this, 'validate_character_count' ), 10, 4 );
        
    }
    
    public function validate_character_count( $result, $value, $form, $field ) {
        
        if( strlen( $value ) < $this->_args['min_chars'] ) {
            $result['is_valid'] = false;
            $result['message'] = sprintf( $this->_args['validation_message'], $this->_args['min_chars'] );
        }
        
        return $result;
    }
    
}

# Configuration

new GW_Minimum_Characters( array( 
    'form_id' => 385,
    'field_id' => 1,
    'min_chars' => 4,
    'validation_message' => __( 'Oops! You need to enter at least %s characters.' )
) );