Add a "create_or_update_user" function to hu_pin plugin, and have all places that create a user use it.  The "pin3_create_user" filter function now passes along API data to the aforementioned function.  pin3 authenticate function has been simplified to use the new filter.  Make "add_groups_to_blog" function in permission plugin into a filter that's used by xmlrpc create blog method.  Add an endpoint for xmlrpc and expose a new "create_blog" function for LTI, as well as the built-in "get_blog_details" function.
Add plugin that tracks course blogs at point of creation and deletion.  Plugin creates a table on the WP side that maps an external course id to a unique blog.  Add xmlrpc method that calls upon the plugin to get all blogs associated with a course.
Add xmlrpc method to create a feed of posts/pages using built-in method that queries post table.
Merge branch 'develop' into staging
Updates to some HTML in TOS pages.  I had to clean up some of this as relates to ending html tags and how the links were declared.
Rebrand "course blogs" plugin to be more generic idea of external blog mappings.  The fact that it's a course will be apparent by passing additional meta data from the LTI tool side.  this would allow mapping to other outside entities (courses or other) in the future.
Merge branch 'develop' into staging
Revert automatic email update on login back since we currently support users modifying their email through their profile in production.  Deal with exceptions that may occur due to API being down a little better in a few places.  Add a higher default priority to the template_redirect hooks in the members restriction plugin and do a bit of cleanup there.
Merge branch 'develop' into staging
Allow add_groups_to_blog method to pass in dictionaries with name and role, in order to allow some groups to be one permission level and others to be different.  Add an "active" column to external mappings plugin to facilitate dissociating a blog from a course while keeping logic used to determine next blog number in sequence to be simple.
Make function that retrieves groups associated with a blog use get_col since we just care about the group names.  Expose this function via a filter.  Add xmlrpc function that takes a user and a list of blogs (objects containing a blog_id or actual blog ids) and returns a narrowed down list of those blogs based on whether the user would be able to access them - i.e., they're a member, blog is public, or groups intersect.
Rename external mapping plugin to be external resource links - we may want to add urls to the external resource in the future and the name reads better anyway.  Update available actions to create, delete, and get.  Don't use option hooks since a blog can be associated with more than one course and using a single option doesn't cut it - even if multiple options were used it's easier to refer back to the table.  Expose link and unlink methods through xmlrpc - the link method takes a set of groups that it adds to the blog as well.
Migrate php::fpm setup to a separate qa environment YAML and simplify the "local" development module to use an apache mod for php.  Fix name of external resource links plugin.
Check in "original" version of subscribe2 plugin without any mods that we're going to make to it.  will at least provide a basis for changes we make.  For pin authenticated user creation, call method directly instead of using apply_filters.
Update README with some more info on initial login steps.  Check in mods to subscribe2 plugin.
Merge branch 'develop' into staging
Crude check for a base64 string before decoding a user login.  If not base64, then return an empty string.  attempting to decode a non-base64 string returns non ASCII characters.
update README instructions
Remove "Public Subscribers" tab and functionality.  Fix logic that allows admins to edit a user's subscriptions individually.  Change header of Subscribers section to be "User Subscriptions" instead of "Registered Users"
Merge branch 'develop' into staging