From 9af9b042c7a1e9aca95de49815b82643fc006a85 Mon Sep 17 00:00:00 2001 From: Steve Sutton Date: Tue, 5 Mar 2019 10:52:22 -0500 Subject: [PATCH] Adding ajax call for lat lon comparison Comparing lat lon for uptra --- models/admin/ajax/verifyLatLon.php | 180 +++++++++++++++++++++++++++++ setup/validActions.php | 1 + 2 files changed, 181 insertions(+) create mode 100644 models/admin/ajax/verifyLatLon.php diff --git a/models/admin/ajax/verifyLatLon.php b/models/admin/ajax/verifyLatLon.php new file mode 100644 index 00000000..417c166e --- /dev/null +++ b/models/admin/ajax/verifyLatLon.php @@ -0,0 +1,180 @@ + + * @license http://www.gaslightmedia.com Gaslightmedia + * @version 0.1 + */ + + +// Load Members data abstract +// require_once GLM_MEMBERS_PLUGIN_CLASS_PATH . '/data/dataMemberInfo.php'; +/** + * + * This class exports the currently selected members list + * to a printable HTML file, to a CSV file, or otherwise. + */ +class GlmMembersAdmin_ajax_verifyLatLon // extends GlmDataMemberInfo +{ + + /** + * WordPress Database Object + * + * @var $wpdb + * @access public + */ + public $wpdb; + /** + * Plugin Configuration Data + * + * @var $config + * @access public + */ + public $config; + + /** + * Constructor + * + * This constructor sets up this model. At this time that only includes + * storing away the WordPress data object. + * + * @return object Class object + * + */ + public function __construct ( $wpdb, $config ) + { + + // Save WordPress Database object + $this->wpdb = $wpdb; + + // Save plugin configuration object + $this->config = $config; + + // parent::__construct( $wpdb, $config ); + + } + + public function modelAction( $actionData = false ) { + + $oldLat = array(); + $oldLon = array(); + $newLat = array(); + $newLon = array(); + // Counters + $totalMembers = 0; + $totalGood = 0; + $totalBad = 0; + + $dbh = new PDO( + 'pgsql: host=ds5 dbname=uptravel user=nobody', + null, + null, + array( + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC + ) + ); + $dbh->setAttribute( + PDO::ATTR_ERRMODE, + PDO::ERRMODE_EXCEPTION + ); + + $pSql = " + SELECT member_id,member_name,lat,lon + FROM members.member + ORDER BY member_id"; + + $oldMembers = $dbh->query($pSql)->fetchAll(); + + if ( isset( $oldMembers ) && is_array( $oldMembers ) ) { + foreach ( $oldMembers as $oldMember ) { + $oldLat[$oldMember['member_id']] = round( $oldMember['lat'], 4, PHP_ROUND_HALF_UP ); + $oldLon[$oldMember['member_id']] = round( $oldMember['lon'], 4, PHP_ROUND_HALF_UP ); + } + } + + + // echo '
$oldMembers: ' . print_r( $oldMembers, true ) . '
'; + // exit; + + $sql = " + SELECT MI.id,MI.member,MI.member_name,MI.lat,MI.lon,M.old_member_id + FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX. "member_info MI + LEFT OUTER JOIN " . GLM_MEMBERS_PLUGIN_DB_PREFIX . "members M + ON ( MI.member = M.id ) + WHERE status = ".$this->config['status_numb']['Active']." + AND ( + SELECT access + FROM ".GLM_MEMBERS_PLUGIN_DB_PREFIX."members + WHERE id = MI.member + ) IN ( + ".$this->config['access_numb']['NoAccess'].", + ".$this->config['access_numb']['Moderated'].", + ".$this->config['access_numb']['Full']." + ) + AND M.old_member_id IS NOT NULL + ORDER BY M.old_member_id + "; + + $members = $this->wpdb->get_results( $sql, ARRAY_A ); + + // echo '
$members: ' . print_r( $members, true ) . '
'; + // echo '

Number of members: ' . count( $members ) . '

'; + + if ( isset( $members ) && is_array( $members ) ) { + foreach ( $members as $member ) { + $newLat[] = $member['lat']; + $newLon[] = $member['lon']; + + if ( !$oldLon[$member['old_member_id']] ) { + continue; + } + + // echo '

Member: ' . $member['old_member_id'] . '

'; + + // Compare lats + if ( $oldLat[$member['old_member_id']] == $member['lat'] ) { + // echo '

Lat matches

'; + $totalGood++; + } else { + // check if off by one + $l = (float)$member['lat']; + $ol = (float)$oldLat[$member['old_member_id']]; + if ( (float)$ol > (float)$l ) { + $diff = ( (float)$ol - (float)$l ); + } else { + $diff = ( (float)$l - (float)$ol ); + } + if ( $diff <= (float).00011 ) { + $totalGood++; + } else { + $totalBad++; + echo '

Member: ' . $member['old_member_id'] . '

'; + echo '
$l: ' . print_r( $l, true ) . '
'; + echo '
$ol: ' . print_r( $ol, true ) . '
'; + echo '
$diff: ' . print_r( $diff, true ) . '
'; + } + } + } + } + + echo '
$totalMembers: ' . print_r( $totalMembers, true ) . '
'; + echo '
$totalGood: ' . print_r( $totalGood, true ) . '
'; + echo '
$totalBad: ' . print_r( $totalBad, true ) . '
'; + + // echo '
$oldLat: ' . print_r( $oldLat, true ) . '
'; + // echo '
$oldLon: ' . print_r( $oldLon, true ) . '
'; + // echo '
$newLat: ' . print_r( $newLat, true ) . '
'; + // echo '
$newLon: ' . print_r( $newLon, true ) . '
'; + + // header( 'Content-Type: application/json' ); + // echo json_encode( $members ); + } + +} diff --git a/setup/validActions.php b/setup/validActions.php index fea58a8e..05a28f8c 100644 --- a/setup/validActions.php +++ b/setup/validActions.php @@ -50,6 +50,7 @@ $glmMembersValidActions = array( 'countiesMapData' => 'glm-member-db', 'membersList' => 'glm-member-db', 'membersListJson' => 'glm-member-db', + 'verifyLatLon' => 'glm-member-db', ), 'dashboard' => array( 'index' => 'glm-member-db', -- 2.17.1