| | private $fields = []; |
| | private $missing = []; |
| | - private const KEEP = false; |
| | + private const NOOP = false; |
| | private const UPPER = true; |
| | + |
| | + private const REGION_MAP = [ |
| | + 'ALBERTA' => 'AB', |
| | + 'BRITISHCOLUMBIA' => 'BC', |
| | + 'MANITOBA' => 'MB', |
| | + 'NEWBRUNSWICK' => 'NB', |
| | + 'NEWFOUNDLAND' => 'NL', |
| | + 'NEWFOUNDLANDANDLABRADOR' => 'NL', |
| | + 'NORTHWESTTERRITORIES' => 'NT', |
| | + 'NOVASCOTIA' => 'NS', |
| | + 'NUNAVUT' => 'NU', |
| | + 'ONTARIO' => 'ON', |
| | + 'PRINCEEDWARDISLAND' => 'PE', |
| | + 'PEI' => 'PE', |
| | + 'QUEBEC' => 'QC', |
| | + 'QB' => 'QC', |
| | + 'SASKATCHEWAN' => 'SK', |
| | + 'YUKON' => 'YT', |
| | + 'ALABAMA' => 'AL', |
| | + 'ALASKA' => 'AK', |
| | + 'ARIZONA' => 'AZ', |
| | + 'ARKANSAS' => 'AR', |
| | + 'CALIFORNIA' => 'CA', |
| | + 'COLORADO' => 'CO', |
| | + 'CONNECTICUT' => 'CT', |
| | + 'DELAWARE' => 'DE', |
| | + 'FLORIDA' => 'FL', |
| | + 'GEORGIA' => 'GA', |
| | + 'HAWAII' => 'HI', |
| | + 'IDAHO' => 'ID', |
| | + 'ILLINOIS' => 'IL', |
| | + 'INDIANA' => 'IN', |
| | + 'IOWA' => 'IA', |
| | + 'KANSAS' => 'KS', |
| | + 'KENTUCKY' => 'KY', |
| | + 'LOUISIANA' => 'LA', |
| | + 'MAINE' => 'ME', |
| | + 'MARYLAND' => 'MD', |
| | + 'MASSACHUSETTS' => 'MA', |
| | + 'MICHIGAN' => 'MI', |
| | + 'MINNESOTA' => 'MN', |
| | + 'MISSISSIPPI' => 'MS', |
| | + 'MISSOURI' => 'MO', |
| | + 'MONTANA' => 'MT', |
| | + 'NEBRASKA' => 'NE', |
| | + 'NEVADA' => 'NV', |
| | + 'NEWHAMPSHIRE' => 'NH', |
| | + 'NEWJERSEY' => 'NJ', |
| | + 'NEWMEXICO' => 'NM', |
| | + 'NEWYORK' => 'NY', |
| | + 'NORTHCAROLINA' => 'NC', |
| | + 'NORTHDAKOTA' => 'ND', |
| | + 'OHIO' => 'OH', |
| | + 'OKLAHOMA' => 'OK', |
| | + 'OREGON' => 'OR', |
| | + 'PENNSYLVANIA' => 'PA', |
| | + 'RHODEISLAND' => 'RI', |
| | + 'SOUTHCAROLINA' => 'SC', |
| | + 'SOUTHDAKOTA' => 'SD', |
| | + 'TENNESSEE' => 'TN', |
| | + 'TEXAS' => 'TX', |
| | + 'UTAH' => 'UT', |
| | + 'VERMONT' => 'VT', |
| | + 'VIRGINIA' => 'VA', |
| | + 'WASHINGTON' => 'WA', |
| | + 'WESTVIRGINIA' => 'WV', |
| | + 'WISCONSIN' => 'WI', |
| | + 'WYOMING' => 'WY', |
| | + 'DISTRICTOFCOLUMBIA' => 'DC' |
| | + ]; |
| | |
| | public function __construct( array $input ) { |
 |
| | |
| | $rules = [ |
| | - 'name' => [ 100, self::KEEP ], |
| | + 'name' => [ 100, self::NOOP ], |
| | 'street1' => [ 100, self::UPPER ], |
| | 'street2' => [ 100, self::UPPER ], |
| | 'city' => [ 50, self::UPPER ], |
| | 'state' => [ 50, self::UPPER ], |
| | 'postcode' => [ 20, self::UPPER ], |
| | 'country' => [ 2, self::UPPER ], |
| | - 'phone' => [ 20, self::KEEP ], |
| | - 'email' => [ 254, self::KEEP ], |
| | - 'gifted' => [ 100, self::KEEP ] |
| | + 'phone' => [ 20, self::NOOP ], |
| | + 'email' => [ 254, self::NOOP ], |
| | + 'gifted' => [ 100, self::NOOP ] |
| | ]; |
| | |
| | $clean = []; |
| | foreach( $rules as $field => $config ) { |
| | $value = mb_substr( trim( $this->fields[ $field ] ?? '' ), 0, |
| | $config[ 0 ], 'UTF-8' ); |
| | |
| | $transform = [ |
| | - self::KEEP => $value, |
| | + self::NOOP => $value, |
| | self::UPPER => mb_strtoupper( $value, 'UTF-8' ) |
| | ]; |
| | |
| | - $clean[ $field ] = $transform[ $config[ 1 ] ]; |
| | + $finalValue = $transform[ $config[ 1 ] ]; |
| | + |
| | + if ( $field === 'state' ) { |
| | + $lookup = str_replace( ' ', '', $finalValue ); |
| | + $finalValue = self::REGION_MAP[ $lookup ] ?? $finalValue; |
| | + } |
| | + |
| | + $clean[ $field ] = $finalValue; |
| | } |
| | $this->fields = $clean; |