public function validate($target, \FS\Components\Notifier $notifier) { preg_match('/^\\+?[1]?[-. ]?\\(?([0-9]{3})\\)?[-. ]?([0-9]{3})[-. ]?([0-9]{4})$/', $target, $matches); if (!$matches) { $notifier->warning('\'' . $target . '\'' . __(' is not a valid phone number.', FLAGSHIP_SHIPPING_TEXT_DOMAIN)); } }
public function validate($target, \FS\Components\Notifier $notifier) { $client = $this->getApplicationContext()->getComponent('\\FS\\Components\\Http\\Client'); $request = array('from' => array('country' => 'CA', 'state' => $target['freight_shipper_state'], 'city' => $target['freight_shipper_city'], 'postal_code' => $target['origin'], 'address' => $target['freight_shipper_street'], 'name' => $target['shipper_company_name'], 'attn' => $target['shipper_person_name'], 'phone' => $target['shipper_phone_number'], 'ext' => $target['shipper_phone_ext']), 'to' => array('name' => 'FLS Integrity Test', 'attn' => 'FLS Guard', 'address' => '148 Brunswick', 'city' => 'POINTE-CLAIRE', 'state' => 'QC', 'country' => 'CA', 'postal_code' => 'H9R5P9', 'phone' => '1 866 320 8383'), 'packages' => array('items' => array(array('width' => 5, 'height' => 4, 'length' => 3, 'weight' => 2, 'description' => 'For WooCommerce Plugin Settings Integrity')), 'units' => 'imperial', 'type' => 'package'), 'payment' => array('payer' => 'F')); $response = $client->post('/ship/rates', $request); if (!$response->isSuccessful()) { $notifier->error(__('<strong>Shipping Integrity Failure:</strong> <br/>', FLAGSHIP_SHIPPING_TEXT_DOMAIN)); $notifier->reverse_order('error'); } return $target; }
public function validate($target, \FS\Components\Notifier $notifier) { $client = $this->getApplicationContext()->getComponent('\\FS\\Components\\Http\\Client'); $response = $client->get('/addresses/integrity', $target); $body = $response->getBody(); if ($response->isSuccessful() && is_array($body) && $body['is_valid']) { return $target; } // the address is not valid but the api provide a correction if ($response->isSuccessful() && !$body['is_valid']) { $notifier->warning(__('Address corrected to match with shipper\'s postal code.', FLAGSHIP_SHIPPING_TEXT_DOMAIN)); $target['postal_code'] = $body['postal_code']; $target['state'] = $body['state']; $target['city'] = $body['city']; return $target; } foreach ($response->getError() as $error) { $notifier->warning($error); } return $target; }
public function validate($target, \FS\Components\Notifier $notifier) { // if user set/update token, we need to use the latest entered one if (isset($target['token'])) { $this->getApplicationContext()->getComponent('\\FS\\Components\\Http\\Client')->setToken($target['token']); } // enabled? if ($target['enabled'] != 'yes') { $notifier->warning(__('FlagShip Shipping is disabled.', FLAGSHIP_SHIPPING_TEXT_DOMAIN)); } // phone $phoneValidator = new PhoneValidator(); $phoneValidator->validate($target['shipper_phone_number'], $notifier); // address $addressValidator = $this->getApplicationContext()->getComponent('\\FS\\Components\\Validation\\AddressValidator'); $address = $addressValidator->validate(array('postal_code' => $target['origin'], 'state' => $target['freight_shipper_state'], 'city' => $target['freight_shipper_city'], 'country' => 'CA'), $notifier); $target['origin'] = $address['postal_code']; $target['freight_shipper_state'] = $address['state']; $target['freight_shipper_city'] = $address['city']; // credentials if (!$target['shipper_person_name']) { $notifier->warning(__('Shipper person name is missing.', FLAGSHIP_SHIPPING_TEXT_DOMAIN)); } if (!$target['shipper_company_name']) { $notifier->warning(__('Shipper company name is missing.', FLAGSHIP_SHIPPING_TEXT_DOMAIN)); } if (!$target['shipper_phone_number']) { $notifier->warning(__('Shipper phone number is missing.', FLAGSHIP_SHIPPING_TEXT_DOMAIN)); } if (!$target['freight_shipper_street']) { $notifier->warning(__('Shipper address\'s streetline is missing.', FLAGSHIP_SHIPPING_TEXT_DOMAIN)); } // overall integrity, send mock quote request $integrityValidator = $this->getApplicationContext()->getComponent('\\FS\\Components\\Validation\\SettingsIntegrityValidator'); $integrityValidator->validate($target, $notifier); return $target; }