gnu-social/plugins/YammerImport
Brion Vibber ae507b0485 Work in progress: most of the infrastructure for running import via BG queues or CLI script is now in place (untested, no UI, needs tweaks & fixes) 2010-09-28 07:44:24 -07:00
..
actions Work in progress: YammerRunner state machine wrapper for running the Yammer import in chunks. 2010-09-28 07:44:24 -07:00
classes Work in progress: YammerRunner state machine wrapper for running the Yammer import in chunks. 2010-09-28 07:44:24 -07:00
lib Work in progress: most of the infrastructure for running import via BG queues or CLI script is now in place (untested, no UI, needs tweaks & fixes) 2010-09-28 07:44:24 -07:00
scripts Work in progress: most of the infrastructure for running import via BG queues or CLI script is now in place (untested, no UI, needs tweaks & fixes) 2010-09-28 07:44:24 -07:00
README Work in progress: most of the infrastructure for running import via BG queues or CLI script is now in place (untested, no UI, needs tweaks & fixes) 2010-09-28 07:44:24 -07:00
YammerImportPlugin.php Work in progress: YammerRunner state machine wrapper for running the Yammer import in chunks. 2010-09-28 07:44:24 -07:00

README

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
* This YammerImport plugin enabled on your StatusNet instance

Setup
-----

The import process will be runnable through an administration panel on
your StatusNet site.

The user interface and OAuth setup has not yet been completed, you will
have to manually initiate the OAuth authentication to get a token.

Be patient, there will be a UI soon. ;)


Limitations
-----------

Paging has not yet been added, so the importer will only pull up to:
* first 50 users
* first 20 groups
* last 20 public messages


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.