private function import_contact($user, $source = 'qaiku') { static $cached_contacts = array(); if (!isset($cached_contacts[$source])) { $cached_contacts[$source] = array(); } if (isset($cached_contacts[$source][$user->screen_name])) { return $cached_contacts[$source][$user->screen_name]; } $qb = new midgard_query_builder('net_nemein_avaudu_contact'); $qb->add_constraint("{$source}nick", '=', $user->screen_name); $contacts = $qb->execute(); if (count($contacts) > 0) { // We already know this contact $cached_contacts[$source][$user->screen_name] = $contacts[0]->id; return $cached_contacts[$source][$user->screen_name]; // TODO: Update? } $contact = new net_nemein_avaudu_contact(); $contact->name = $user->name; $contact->avatar = $user->profile_image_url; $nickfield = "{$source}nick"; $contact->{$nickfield} = $user->screen_name; $idfield = "{$source}id"; $contact->{$idfield} = $user->id; $contact->create(); $cached_contacts[$source][$user->screen_name] = $contact->id; return $cached_contacts[$source][$user->screen_name]; }
public function action_edit($route_id, &$data, $args) { midgardmvc_core::get_instance()->authorization->require_user(); $person = midgardmvc_core::get_instance()->authentication->get_person(); $contact = new net_nemein_avaudu_contact($person->guid); // Read current settings from host $data['qaiku_apikey'] = $person->get_parameter('net_nemein_avaudu', 'qaiku_apikey'); // Update things as we go if (isset($_POST['qaiku_apikey'])) { // Test the API key $qaiku_json = @file_get_contents('http://www.qaiku.com/api/statuses/user_timeline.json?apikey=' . $_POST['qaiku_apikey']); if (!$qaiku_json) { // Qaiku didn't accept the API key // TODO: UImessage throw new Exception("Invalid Qaiku API key"); } $data['qaiku_apikey'] = $_POST['qaiku_apikey']; // Get user info from Qaiku $qaikus = json_decode($qaiku_json); if (isset($qaikus[0])) { $qaiku_user = $qaikus[0]->user; $qb = new midgard_query_builder('net_nemein_avaudu_contact'); $qb->add_constraint('qaikunick', '=', $qaiku_user->screen_name); $contacts = $qb->execute(); if (count($contacts) > 0) { $person->set_parameter('net_nemein_avaudu', 'user', $contacts[0]->guid); } else { // Populate "Me" into database $contact->qaikunick = $qaiku_user->screen_name; $contact->name = $qaiku_user->name; $contact->avatar = $qaiku_user->profile_image_url; $contact->qaikuid = $qaiku_user->id; $contact->update(); } } // Save the settings $person->set_parameter('net_nemein_avaudu', 'qaiku_apikey', $data['qaiku_apikey']); } }