public static function getDistance($target_postcode, $contact_postcode) { require_once __DIR__ . '/QueryAPI.php'; $country_list = unserialize(ZWS_CDB_COUNTRY); $google_api_key = get_site_option(self::OPTIONS_LABEL)['zws_contacts_database_google_server_api_key']; $country_code = get_site_option(self::OPTIONS_LABEL)['zws_contacts_database_plugin_country_of_use']; $country_name = array_search($country_code, $country_list); $path = "?origins={$target_postcode}, {$country_name}\n &destinations={$contact_postcode}, {$country_name}\n &mode=driving\n &language=en-EN\n &components=country:{$country_code}\n &units=imperial\n &sensor=false\n &key={$google_api_key}"; // $data = file_get_contents($url); $data = \ZwsContactsDatabase\QueryAPI::makeQuery(self::DISTANCE_MATRIX_BASE_URL, $path); if ($data['returned_data'] && $data['returned_data']['status'] === 'OK' && $data['returned_data']['rows'][0]['elements'][0]['status'] === "OK") { if ($data['cached']) { // error_log('THE DATA WAS CACHED ...'); // debug } return round(sanitize_text_field($data['returned_data']['rows'][0]['elements'][0]['distance']['value']) * 0.000621371, 0, PHP_ROUND_HALF_UP); } else { error_log('An error occurred whilst attempting to get a distance, at \\ZwsContactsDatabase\\DistanceCalculator::getDistance'); return false; } }
private static function display_or_action() { $safe_values = array(); // checks if incoming POST, and that nonce was set, and that nonce details match if (isset($_POST['submitted']) && isset($_POST['my_nonce_field']) && wp_verify_nonce(apply_filters('zws_filter_basic_sanitize', $_POST['my_nonce_field']), 'submit_details_action')) { // sanitise values $safe_values['first_name'] = apply_filters('zws_filter_basic_sanitize', $_POST['first_name']); $safe_values['last_name'] = apply_filters('zws_filter_basic_sanitize', $_POST['last_name']); $safe_values['postcode'] = apply_filters('zws_filter_sanitize_postcode', $_POST['postcode']); $safe_values['phone'] = apply_filters('zws_filter_enforce_numeric', $_POST['phone']); $safe_values['email'] = apply_filters('zws_filter_basic_sanitize', $_POST['email']); $safe_values['max_radius'] = apply_filters('zws_filter_enforce_numeric', $_POST['max_radius']); $safe_values['extra_info'] = apply_filters('zws_filter_limit_chars', apply_filters('zws_filter_text_with_linebreak', $_POST['extra_info'])); $safe_values['pp_accepted'] = true ? isset($_POST['privacy_accept']) : false; foreach (unserialize(ZWS_CDB_DAYS) as $key => $day) { if (sanitize_text_field($_POST['earliest_time_' . $day]) !== 'Unavailable') { $safe_values['earliest_time_' . $day] = apply_filters('zws_filter_basic_sanitize', $_POST['earliest_time_' . $day]); } else { $safe_values['earliest_time_' . $day] = 'UNAVL'; } $safe_values['latest_time_' . $day] = apply_filters('zws_filter_basic_sanitize', $_POST['latest_time_' . $day]); } // verify privacy policy has been accepted if (!$safe_values['pp_accepted']) { return self::failure_view('privacy'); } // query google maps api to get longitute and latitude for the postcode, to pull back from db when displayed on map require_once __DIR__ . '/QueryAPI.php'; $google_api_key = apply_filters('zws_filter_basic_sanitize', get_site_option(self::OPTIONS_LABEL)['zws_contacts_database_google_server_api_key']); $country_code = get_site_option(self::OPTIONS_LABEL)['zws_contacts_database_plugin_country_of_use']; $country_list = unserialize(ZWS_CDB_COUNTRY); $country_name = array_search($country_code, $country_list); $path = '?address=' . $safe_values['postcode'] . ',' . $country_name . '&language=en-EN&sensor=false&key=' . $google_api_key; $data = \ZwsContactsDatabase\QueryAPI::makeQuery(self::MAPS_API_BASE_URL, $path); if ($data['returned_data'] && $data['returned_data']['status'] === 'OK') { if ($data['cached']) { // error_log('THE DATA WAS CACHED ...'); // debug } $safe_values['lat'] = sanitize_text_field($data['returned_data']['results'][0]['geometry']['location']['lat']); $safe_values['lng'] = sanitize_text_field($data['returned_data']['results'][0]['geometry']['location']['lng']); } else { return self::failure_view(); } // send to database require_once __DIR__ . '/Database.php'; if (\ZwsContactsDatabase\Database::insert($safe_values, $user_signup = True)) { // email admins if (!self::email_notifications($safe_values)) { error_log('Error sending email to administrator ...'); } // return success return self::success_view(); } else { return self::failure_view(); } } else { // if it wasn't a form submission, create / present the form return self::create_form(); } }
private static function getBaseCoordinates($postcode) { // returns an array for the coordinates (lat, lng). require_once __DIR__ . '/QueryAPI.php'; $country_code = get_site_option(self::OPTIONS_LABEL)['zws_contacts_database_plugin_country_of_use']; $base_url = 'https://maps.googleapis.com/maps/api/geocode/json'; $path = "?address={$postcode}&language=en-EN&components=country:{$country_code}&sensor=false"; $result = \ZwsContactsDatabase\QueryAPI::makeQuery($base_url, $path); // if successful return and there are some results ... if ($result !== false && !empty($result['returned_data']['results'])) { // grab and return the lat and lng return array(0 => $result['returned_data']['results'][0]['geometry']['location']['lat'], 1 => $result['returned_data']['results'][0]['geometry']['location']['lng']); } echo '<strong style="display:block;margin-top:1em;color:red;font-size:1.5em";>' . self::POSTCODE_FAILURE . '</strong>'; return false; }