summaryrefslogtreecommitdiff
path: root/plugins/YammerImport/README
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/YammerImport/README')
-rw-r--r--plugins/YammerImport/README182
1 files changed, 182 insertions, 0 deletions
diff --git a/plugins/YammerImport/README b/plugins/YammerImport/README
new file mode 100644
index 000000000..975faa213
--- /dev/null
+++ b/plugins/YammerImport/README
@@ -0,0 +1,182 @@
+Yammer Import Plugin
+====================
+
+This plugin allows a one-time import pulling user accounts, groups, and
+public messages from an existing Yammer instance, using Yammer's public API.
+
+Requirements
+------------
+
+* An account on the Yammer network you wish to import from
+* An administrator account on the target StatusNet instance, or
+ command-line administrative access
+* This YammerImport plugin enabled on your StatusNet instance
+
+
+Limitations
+-----------
+
+Yammer API key registrations only work for your own network unless you make
+arrangements for a 'trusted app' key, so for now users will need to register
+the app themselves. There is a helper in the admin panel for this.
+
+In theory any number of users, groups, and messages should be supported, but
+it hasn't been fully tested on non-trivial-sized sites.
+
+No provision has yet been made for dealing with conflicting usernames or
+group names, or names which are not considered valid by StatusNet. Errors
+are possible.
+
+Running via the web admin interface requires having queueing enabled, and is
+fairly likely to have problems with the application key registration step in
+a small installation at this time.
+
+
+Web setup
+---------
+
+The import process is runnable through an administration panel on your
+StatusNet site. The user interface is still a bit flaky, however, and if
+errors occur during import the process may stop with no way to restart it
+visible.
+
+The admin interface will probably kinda blow up if JS/AJAX isn't working.
+
+You'll be prompted to register the application and authenticate into Yammer,
+after which a progress screen will display.
+
+Two big warnings:
+* The progress display does not currently auto-refresh.
+* If anything fails once actual import has begun, it'll just keep showing
+ the current state. You won't see an error message, and there's no way
+ to reset or restart from the web UI yet.
+
+You can continue or reset the import state using the command-line script.
+
+
+CLI setup
+---------
+
+You'll need to register an application consumer key to allow the importer
+to connect to your Yammer network; this requires logging into Yammer:
+
+ https://www.yammer.com/client_applications/new
+
+Check all the 'read' options; no 'write' options are required, but Yammer
+seems to end up setting them anyway.
+
+You can set the resulting keys directly in config.php:
+
+ $config['yammer']['consumer_key'] = '#####';
+ $config['yammer']['consumer_secret'] = '##########';
+
+Initiate authentication by starting up the importer script:
+
+ php plugins/YammerImport/scripts/yammer-import.php
+
+Since you haven't yet authenticated, this will request an auth token and
+give you a URL to open in your web browser. Once logged in and authorized
+there, you'll be given a confirmation code. Pass this back:
+
+ php plugins/YammerImport/scripts/yammer-import.php --verify=####
+
+If all is well, the import process will begin and run through the end.
+
+In case of error or manual abort, you should be able to continue the
+import from where you left off by running the script again:
+
+ php plugins/YammerImport/scripts/yammer-import.php
+
+To reset the Yammer import state -- without removing any of the items
+that have already been imported -- you can pass the --reset option:
+
+ php plugins/YammerImport/scripts/yammer-import.php --reset
+
+This'll let you start over from the requesting-authentication stage.
+Any users, groups, or notices that have already been imported will be
+retained.
+
+
+Subscriptions and group memberships
+-----------------------------------
+
+Yammer's API does not expose user/tag subscriptions or group memberships
+except for the authenticating user. As a result, users will need to re-join
+groups and re-follow their fellow users after the import.
+
+(This limitation may be lifted in future for sites on the Silver or Gold
+plans where the import is done by a verified admin, as it should be possible
+to fetch the information for each user via the admin account.)
+
+
+Authentication
+--------------
+
+Account passwords cannot be retrieved, but the primary e-mail address is
+retained so users can reset their passwords by mail if you're not using a
+custom authentication system like LDAP.
+
+
+Private messages and groups
+---------------------------
+
+At this time, only public messages are imported; private direct and group
+messages are ignored. (This may change with Silver and Gold plans in future.)
+
+Yammer groups may be either public or private. Groups in StatusNet currently
+have no privacy option, so any private groups will become public groups in the
+imported site.
+
+
+Attachments
+-----------
+
+Attached image and document files will be copied in as if they had been
+uploaded to the StatusNet site. Currently images do not display inline like
+they do on Yammer; they will be linked instead.
+
+File type and size limitations on attachments will be applied, so beware some
+attachments may not make it through.
+
+
+
+
+Code structure
+==============
+
+Standalone classes
+------------------
+
+YammerRunner: encapsulates the iterative process of retrieving the various users,
+ groups, and messages via SN_YammerClient and saving them locally
+ via YammerImporter.
+
+SN_YammerClient: encapsulates HTTP+OAuth interface to Yammer API, returns data
+ as straight decoded JSON object trees.
+
+YammerImporter: encapsulates logic to pull information from the returned API data
+ and convert them to native StatusNet users, groups, and messages.
+
+Web UI actions
+-------------
+
+YammeradminpanelAction: web panel for site administrator to initiate and monitor
+ the import process.
+
+Command-line scripts
+--------------------
+
+yammer-import.php: CLI script to start a Yammer import run in one go.
+
+Database objects
+----------------
+
+Yammer_state: data object storing YammerRunner's state between iterations.
+
+Yammer_notice_stub: data object for temporary storage of fetched Yammer messages
+ between fetching them (reverse chron order) and saving them
+ to local messages (forward chron order).
+Yammer_user,
+Yammer_group,
+Yammer_notice: data objects mapping original Yammer item IDs to their local copies.
+