public static function findNearbyUsers($user) { $ret = array(); if (!($geonamesUsername = SiteInfo::findThis()->get('geonames'))) { throw new Exception('You must get a username from geonames.org before using the method AP_UserUtils::findNearbyUsers'); } if ($zip = $user->get('zip')) { $url = "http://api.geonames.org/findNearbyPostalCodesJSON?postalcode={$zip}&country=US&radius=30&username=" . $geonamesUsername; $zips = wp_cache_get($url, 'AP_UserUtils'); if (!$zips) { $zips = ap_curl_json($url); $zips = ap_map_method($zips->postalCodes, 'postalCode'); wp_cache_set($url, $zips, 'AP_UserUtils', self::$cache); } if ($zips) { if ($users = get_users(array('meta_query' => array(array('key' => 'zip', 'value' => $zips, 'compare' => 'IN'), array('key' => 'zip', 'compare' => 'EXISTS'))))) { foreach ($users as $u) { $ret[] = new AP_User($u); } } } } return $ret; }
$user = AP_User::create($userDetails); $id = $user->ID; $test->isTrue($id, "Create a new AP_User"); $user->set('olw', "yes"); $test->isEqual($user->get('olw'), 'yes', "Set and get AP_User"); $user->save(); $newUser = new AP_User($testLogin); $test->isEqual($id, $newUser->ID, "AP_User can be fetched using a login as the first param"); $test->isEqual($newUser->get('olw'), 'yes', "Save and retrieve AP_User custom field"); $newUser->suicide(); $findItAgainUser = new AP_User($id); $test->isTrue($findItAgainUser->ID === 0, "AP_User can be deleted with suicide"); $userDetails['metaData'] = 'hooray'; $userDetails['metaDataMulti'] = array('yes', 'no'); $user = AP_User::create($userDetails); $test->isEqual($user->get('metaData'), 'hooray', "You can create meta data by putting it in the creation array"); $newUser = new AP_User($testLogin); $test->isEqual($newUser->get('metaData'), 'hooray', "meta data created by AP_User::create is saved to the db"); $test->isTrue(is_array($newUser->get('metaDataMulti')), "meta data created by AP_User::create can be an array/multi is saved to the db"); // find nearby users $user->set('zip', 94610); $newUser = AP_User::create(array('user_login' => $testLogin2, 'zip' => 94622)); $test->isTrue(is_array(AP_UserUtils::findNearbyUsers($user)), "AP_UserUtils::findNearbyUsers exists"); $nearby = ap_map_method(AP_UserUtils::findNearbyUsers($user), 'id'); $test->isTrue(in_array($newUser->id(), $nearby), "AP_UserUtils::findNearbyUsers can find a nearby user"); $newUser->suicide(); $user->suicide(); echo $test->report(); ?> </pre>