Pure provides an API to the data, and several people in the University have been investigating how to extract and make use of the information. It’s been interesting to see the variety of approaches taken, and it seems that different solutions may be suitable depending on the application. We plan to make use of some of these solutions in our sites. In the HSS Web Team, we’ve been particularly keen to make the information available in WordPress. We use WordPress for several sites and wanted a plugin to give users a nice profile page, automatically generated from the golden copy.
I’ve been working on a WordPress plugin to do this, which is now at a release stage: https://bitbucket.org/gmaxwell/pure-wordpress-plugin
There was a consensus in the University that REST was the best way forward (Pure also provides a SOAP API). I’ve written a couple of REST APIs in the past, and used the PHP cURL library to consume them. However, we recently discovered Guzzle, a library which makes things nice and easy, and abstracts things a little from the PHP cURL library. Guzzle is going to be part of Drupal 8 core, so well worth checking out.
It’s important that the data is cached locally, both to reduce the load on the server, and to ensure fast page load times. Therefore, when the plugin is enabled, it creates several custom WordPress tables. The API is then called periodically and the data stored in these tables until the next time we want to refresh the database.
The source code is available to browse or clone on Bitbucket.
To use the plugin, you should first download the latest version (currently 1.5) from the downloads page.
You can then go into your WordPress admin area, and Plugins->Add New->Upload to upload the zip file. After installing, click to enable the plugin.
Once the plugin is enabled, you have an additional option under Settings for Pure Profiles.
The first section in the Settings page is Connection Details. This is where the hostname, username and password go. It’s sensible to connect to the beta server to begin with.
You can currently specify which people to pull out by specifying the Pure UUID, Employee ID, or a combination of both. You can also specify an organisation’s UUID, to pull out all the people associated with it (to reduce server load, it’s best to do it this way only when you actually need all of the people in that organisation). All of these should be provided as comma separated lists. The system ignores line breaks, which means you can have the UUIDs on separate lines for readability.
I’ve found the easiest way is to search the Edinburgh Research Explorer for the person you want, and then retrieve their UUID from the URL (between the brackets). It’s also a way of checking that they are actually in Pure!
The next section allows you to specify the time of the cron job to update the database. Note that this is a WordPress pseudo-cron, and is actually triggered the next time the site is accessed. For this reason, it makes sense to set up an actual cron job to call the site shortly after the scheduled WordPress cron. This ensures that the update takes place overnight, rather than being triggered in the morning when someone visits the site.
There’s also an option to enable Development Mode. This calls the API on every page load. Enabling Development Mode slows the site down significantly and puts an unnecessary load on the Pure server, so it should be avoided, particularly with the live server. However, enabling it after you install the plugin and then disabling it immediately afterwards allows you to populate the database right away, rather than waiting overnight.
Under Appearance, there’s the option of whether or not to use the default stylesheet. The default stylesheet provided with the plugin gives some basic formatting, but these styles can be overridden in your theme’s stylesheet. The generated HTML has lots of classes provided, so there’s a fair amount of flexibility in how you can style the output.
Displaying the data using Shortcodes
Once the plugin has been configured in Settings, and the database has been populated, the next step is to add the shortcode to a page. The plugin adds an extra icon to TinyMCE, which brings up a dialog.
You can then select the person to include from a dropdown list, and optionally hide sections.
Clicking Create Shortcode inserts the shortcode into the page.
Then it’s just a case of saving the page, and the profile appears.
Note that you could have your publications or projects on separate pages, by using multiple shortcodes and hiding the appropriate sections.
The plugin is still very much in development. There may be some fields missing, and there’s no paging of publications, for example.
Please feel free to add issues in Bitbucket, make suggestions, etc., and to use it!