summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrion Vibber <brion@pobox.com>2010-09-21 23:19:36 -0700
committerBrion Vibber <brion@pobox.com>2010-09-21 23:19:36 -0700
commitacd76139333aa29a415de6103fc87e3955b232b1 (patch)
tree2c2d5583d9f087a921982cb7c2c2141be32ed3da
parent7a381f2533c5f5da9702c6968655d52a76cb47dc (diff)
Fixes for Yammer groups import: pulling explicit list, fixed avatar fetch
-rw-r--r--plugins/YammerImport/sn_yammerclient.php18
-rw-r--r--plugins/YammerImport/yammer-import.php16
-rw-r--r--plugins/YammerImport/yammerimporter.php25
3 files changed, 40 insertions, 19 deletions
diff --git a/plugins/YammerImport/sn_yammerclient.php b/plugins/YammerImport/sn_yammerclient.php
index 0f244ced6..8f9f1d413 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 7241809ba..4931d1bc5 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 bfe486770..9ce0d1e58 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);
}
/**