]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Fixes for Yammer groups import: pulling explicit list, fixed avatar fetch
authorBrion Vibber <brion@pobox.com>
Wed, 22 Sep 2010 06:19:36 +0000 (23:19 -0700)
committerBrion Vibber <brion@pobox.com>
Tue, 28 Sep 2010 14:44:22 +0000 (07:44 -0700)
plugins/YammerImport/sn_yammerclient.php
plugins/YammerImport/yammer-import.php
plugins/YammerImport/yammerimporter.php

index 0f244ced6a466772f405e70d66d7db89ccbbae28..8f9f1d4131003f2f0024446a22320ca1758b4ffd 100644 (file)
@@ -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);
+    }
 }
index 7241809ba05733e4095604eb0d00821daf1c23af..4931d1bc520f10160a9e966f6dd9bf0cb194a93e 100644 (file)
@@ -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) {
index bfe486770c995f7a17ac473ee653a351034a2e72..9ce0d1e588e80aa2072154e5dc65780067c70eaa 100644 (file)
@@ -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);
     }
 
     /**