From acd76139333aa29a415de6103fc87e3955b232b1 Mon Sep 17 00:00:00 2001 From: Brion Vibber Date: Tue, 21 Sep 2010 23:19:36 -0700 Subject: [PATCH] Fixes for Yammer groups import: pulling explicit list, fixed avatar fetch --- plugins/YammerImport/sn_yammerclient.php | 18 ++++++++++++++++- plugins/YammerImport/yammer-import.php | 16 +++++++-------- plugins/YammerImport/yammerimporter.php | 25 ++++++++++++++---------- 3 files changed, 40 insertions(+), 19 deletions(-) diff --git a/plugins/YammerImport/sn_yammerclient.php b/plugins/YammerImport/sn_yammerclient.php index 0f244ced6a..8f9f1d4131 100644 --- a/plugins/YammerImport/sn_yammerclient.php +++ b/plugins/YammerImport/sn_yammerclient.php @@ -100,7 +100,7 @@ class SN_YammerClient * * @throws Exception for HTTP error or bad JSON return */ - protected function api($method, $params=array()) + public function api($method, $params=array()) { $body = $this->fetchApi("api/v1/$method.json", $params); $data = json_decode($body, true); @@ -217,4 +217,20 @@ class SN_YammerClient { return $this->api('users', $params); } + + /** + * High-level API hit: fetch all groups in the network (up to 20 at a time). + * Return data is the full JSON array returned, listing user items. + * + * The matching messages themselves will be in the 'users' item within. + * + * @param array $options optional set of additional params for the request. + * @return array of JSON-sourced user data arrays + * + * @throws Exception on low-level or HTTP error + */ + public function groups($params=array()) + { + return $this->api('groups', $params); + } } diff --git a/plugins/YammerImport/yammer-import.php b/plugins/YammerImport/yammer-import.php index 7241809ba0..4931d1bc52 100644 --- a/plugins/YammerImport/yammer-import.php +++ b/plugins/YammerImport/yammer-import.php @@ -21,18 +21,18 @@ foreach ($data as $item) { echo "Imported Yammer user " . $item['id'] . " as $user->nickname ($user->id)\n"; } -$data = $yam->messages(); -// @fixme pull the full group list; this'll be a partial list with less data -// and only for groups referenced in the message set. -foreach ($data['references'] as $item) { - if ($item['type'] == 'group') { - $group = $imp->importGroup($item); - echo "Imported Yammer group " . $item['id'] . " as $group->nickname ($group->id)\n"; - } +// Groups! +// @fixme follow paging -- we only get 20 at a time +$data = $yam->groups(); +foreach ($data as $item) { + $group = $imp->importGroup($item); + echo "Imported Yammer group " . $item['id'] . " as $group->nickname ($group->id)\n"; } +// Messages! // Process in reverse chron order... // @fixme follow paging -- we only get 20 at a time, and start at the most recent! +$data = $yam->messages(); $messages = $data['messages']; $messages = array_reverse($messages); foreach ($messages as $item) { diff --git a/plugins/YammerImport/yammerimporter.php b/plugins/YammerImport/yammerimporter.php index bfe486770c..9ce0d1e588 100644 --- a/plugins/YammerImport/yammerimporter.php +++ b/plugins/YammerImport/yammerimporter.php @@ -51,10 +51,12 @@ class YammerImporter } else { $user = User::register($data['options']); $profile = $user->getProfile(); - try { - $this->saveAvatar($data['avatar'], $profile); - } catch (Exception $e) { - common_log(LOG_ERROR, "Error importing Yammer avatar: " . $e->getMessage()); + if ($data['avatar']) { + try { + $this->saveAvatar($data['avatar'], $profile); + } catch (Exception $e) { + common_log(LOG_ERR, "Error importing Yammer avatar: " . $e->getMessage()); + } } $this->recordImportedUser($data['orig_id'], $profile->id); return $profile; @@ -76,10 +78,12 @@ class YammerImporter return User_group::staticGet('id', $groupId); } else { $group = User_group::register($data['options']); - try { - $this->saveAvatar($data['avatar'], $group); - } catch (Exception $e) { - common_log(LOG_ERROR, "Error importing Yammer avatar: " . $e->getMessage()); + if ($data['avatar']) { + try { + $this->saveAvatar($data['avatar'], $group); + } catch (Exception $e) { + common_log(LOG_ERR, "Error importing Yammer avatar: " . $e->getMessage()); + } } $this->recordImportedGroup($data['orig_id'], $group->id); return $group; @@ -111,7 +115,7 @@ class YammerImporter $content .= ' ' . $upload->shortUrl(); $uploads[] = $upload; } catch (Exception $e) { - common_log(LOG_ERROR, "Error importing Yammer attachment: " . $e->getMessage()); + common_log(LOG_ERR, "Error importing Yammer attachment: " . $e->getMessage()); } } @@ -254,7 +258,8 @@ class YammerImporter $options['local'] = true; return array('orig_id' => $origId, 'orig_url' => $origUrl, - 'options' => $options); + 'options' => $options, + 'avatar' => $avatar); } /** -- 2.39.5