Overview & Requirements
This project was about integrating an extensive social media functionalities to an existing website. The website is about an organisation who undertakes various sports and trekking programmes and creates unique challenges for encouraging individuals to stay fit. They had an already existing drupal 7 website which had the basic content types and design ready. In this phase they wanted us to do an advanced social media integration work.
Users should be able to link their facebook, linkedin and twitter accounts to the site. Also the company admin and company partners (both created as separate roles) can link their company facebook account and page, twitter account and linkedin pages.
Everyday 4 times the cron would run and the linked facebook, twitter and linkedin accounts of each users and the admins would be scanned.
For facebook, all those posts and link shares will be picked which either does @mentions to the admin facebook account or the company page as well as mentions other users in the site. These posts will be converted into a separate content type and published into the site with the details of the facebook links and facebook image and the post content. This is true even for a comment posted with @mentions. For comments and excerpt of the original post has to be shown.
Similarly for twitter and linkedin, all those tweets and posts respectively will be picked which either mentions the company twitter account or posts from linkedin which mentions the company linkedin account.
All the feeds were supposed to be displayed into the site in a separate themed responsive sidebar widget as well as a separate page which pulls in additional details like likes and rating counts of the post for Facebook and number of re-tweets for the twitter.
Also, we needed to develop a notification system where after a tweet or post is published to the site, the owner of the account is notified to check and report if he has any issues. All the created content in the site could be disabled at will by the site maintainer.
An extensive youtube integration was required as company periodically posted different interview and promotional videos in youtube under various categories. Another feature that we needed to develop was based on user ages, auto provide a viewer access to the videos and bypass the youtube age restriction step.
Architectural Overview & Challenges
This project posed us with a number of challenges. First was the depth of the API integration required. Our development team needed to study in detail the Facebook, Twitter and Linkedin APIs and provide detailed suggestion to the client what was allowed and what not. Then we needed to develop a mechanism to be able to counter the expiring API keys for each of these social media APIs. Also, there was a requirement where a single user can associate multiple accounts of facebook, twitter and linkedin but at any point of time disable sync posts and tweets from those accounts with already pulled in tweets remaining unaffected but stopping subsequent sync of data from those accounts. the other major challenge was dealing with the huge amount of data and cron run sync. This was dealt with by employing the awesome queue API of drupal. The entire feature was mostly custom coded and Drupal’s core APIs provided us enough base and extendability to achieve the above features not only perfectly as per spec but also in a very efficient way so that load on the system can be reduced and error could be minimised. The displays and frontend was mainly done using views and email and notification sendouts using rules.
Client was really impressed by our work, especially with integration of API's of Social media accounts with the website.
Extensive Use of Drupal's queue API to Import Feeds Data on Cron run
Advanced social media integration work to import feeds from connected user's Facebook, Linkedin and Twitter
Extensive youtube integration for Videos and Video Channels
A Granular control of which cron runs and imports what data from which social network.
A Detailed Permission Scheme so that Admins can grant specific permissions to various users for connecting and displaying the social media data
An intuitive, clean and responsive social media widget to display and filter the social media data based on a detailed context integration
Lines of code
Members in the Team