]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Initial semi-working yammer import :D
authorBrion Vibber <brion@pobox.com>
Tue, 21 Sep 2010 22:54:39 +0000 (15:54 -0700)
committerBrion Vibber <brion@pobox.com>
Tue, 28 Sep 2010 14:44:20 +0000 (07:44 -0700)
* no avatars
* no details of user accounts or their auth info
* no group memberships or subscriptions
* no attachments
* will probably esplode if >20 messages in your network *whistle innocently*

plugins/YammerImport/yammer-import.php [new file with mode: 0644]

diff --git a/plugins/YammerImport/yammer-import.php b/plugins/YammerImport/yammer-import.php
new file mode 100644 (file)
index 0000000..d6ec975
--- /dev/null
@@ -0,0 +1,59 @@
+<?php
+
+if (php_sapi_name() != 'cli') {
+    die('no');
+}
+
+define('INSTALLDIR', dirname(dirname(dirname(__FILE__))));
+
+require INSTALLDIR . "/scripts/commandline.inc";
+
+// temp stuff
+require 'yam-config.php';
+$yam = new SN_YammerClient($consumerKey, $consumerSecret, $token, $tokenSecret);
+$imp = new YammerImporter();
+
+$data = $yam->messages();
+/*
+  ["messages"]=>
+  ["meta"]=> // followed_user_ids, current_user_id, etc
+  ["threaded_extended"]=> // empty!
+  ["references"]=> // lists the users, threads, replied messages, tags
+*/
+
+// 1) we're getting messages in descending order, but we'll want to process ascending
+// 2) we'll need to pull out all those referenced items too?
+// 3) do we need to page over or anything?
+
+// 20 qualifying messages per hit...
+// use older_than to grab more
+// (better if we can go in reverse though!)
+// meta: The older-available element indicates whether messages older than those shown are available to be fetched. See the older_than parameter mentioned above.
+foreach ($data['references'] as $item) {
+    if ($item['type'] == 'user') {
+        $user = $imp->importUser($item);
+        echo "Imported Yammer user " . $item['id'] . " as $user->nickname ($user->id)\n";
+    } else if ($item['type'] == 'group') {
+        $group = $imp->importGroup($item);
+        echo "Imported Yammer group " . $item['id'] . " as $group->nickname ($group->id)\n";
+    } else if ($item['type'] == 'tag') {
+        // could need these if we work from the parsed message text
+        // otherwise, the #blarf in orig text is fine.
+    } else if ($item['type'] == 'thread') {
+        // Shouldn't need thread info; we'll reconstruct conversations
+        // from the reply-to chains.
+    } else if ($item['type'] == 'message') {
+        // If we're processing everything, then we don't need the refs here.
+    } else {
+        echo "(skipping unknown ref: " . $item['type'] . ")\n";
+    }
+}
+
+// Process in reverse chron order...
+// @fixme follow paging
+$messages = $data['messages'];
+$messages = array_reverse($messages);
+foreach ($messages as $item) {
+    $notice = $imp->importNotice($item);
+    echo "Imported Yammer notice " . $item['id'] . " as $notice->id\n";
+}