You are here

socialmedia.platforms.inc in Social media 7

Defines social media platforms

File

socialmedia.platforms.inc
View source
<?php

/**
 * @file
 * Defines social media platforms
 */
function socialmedia_socialmedia_platform_info() {
  $platforms = array();
  $platforms = array_merge($platforms, socialmedia_twitter_platform_info());
  $platforms = array_merge($platforms, socialmedia_facebook_platform_info());
  $platforms = array_merge($platforms, socialmedia_flickr_platform_info());
  $platforms = array_merge($platforms, socialmedia_googleplus_platform_info());
  $platforms = array_merge($platforms, socialmedia_instagram_platform_info());
  $platforms = array_merge($platforms, socialmedia_linkedin_platform_info());
  $platforms = array_merge($platforms, socialmedia_pinterest_platform_info());
  $platforms = array_merge($platforms, socialmedia_rss_platform_info());
  $platforms = array_merge($platforms, socialmedia_slideshare_platform_info());
  $platforms = array_merge($platforms, socialmedia_vimeo_platform_info());
  $platforms = array_merge($platforms, socialmedia_youtube_platform_info());
  $platforms = array_merge($platforms, socialmedia_addthis_platform_info());
  return $platforms;
}
function socialmedia_addthis_platform_info() {
  $platforms = array();
  $platforms['addthis'] = array(
    'title' => t('AddThis'),
    'description' => t('URL to your Facebook profile or page'),
    'group' => t('Widget platforms'),
    'homepage' => 'http://www.addthis.com',
    'form callback' => 'socialmedia_addthis_form',
    'parser callback' => 'socialmedia_addthis_parser',
    'tokens callback' => 'socialmedia_addthis_tokens',
  );
  $platforms['addthis']['form'] = array(
    'title' => t('Facebook profile'),
    'description' => t('URL to your Facebook profile'),
  );
  $platforms['addthis']['tokens']['multi'] = array(
    'addthis_pubid' => array(
      'name' => t("AddThis pubid"),
      'description' => t("AddThis pubid"),
    ),
  );
  return $platforms;
}
function socialmedia_addthis_form($profile) {
  $fields['input_addthis_pubid'] = array(
    '#type' => 'textfield',
    '#title' => t('AddThis pub id'),
    '#default_value' => isset($profile['inputs']['pubid']) ? $profile['inputs']['pubid'] : '',
    '#description' => t('This is the pubid used to tie AddThis widgets back to your AddThis account.'),
    '#size' => 80,
  );
  return $fields;
}
function socialmedia_addthis_parser($values, $scope = 'site') {
  $profile['pubid'] = $values['pubid'];
  return $profile;
}
function socialmedia_addthis_tokens($key, $profile) {
  switch ($key) {
    case 'pubid':
      return isset($profile['pubid']) ? $profile['pubid'] : '';
  }
  return '';
}
function socialmedia_facebook_platform_info() {
  $platforms = array();
  $platforms['facebook'] = array(
    'title' => t('Facebook'),
    'description' => t('URL to your Facebook profile or page'),
    'homepage' => 'http://www.facebook.com',
    'redirect path' => 'facebook',
    'parser callback' => 'socialmedia_facebook_parser',
    'tokens callback' => 'socialmedia_facebook_tokens',
  );
  $platforms['facebook']['form'] = array(
    'title' => t('Facebook profile'),
    'description' => t('URL to your Facebook profile'),
  );
  $platforms['facebook']['tokens']['multi'] = array(
    'facebook_url' => array(
      'name' => t("Facebook profile url"),
      'description' => t("URL to Facebook profile."),
    ),
    'facebook_url-brief' => array(
      'name' => t("Facebook profile url (brief)"),
      'description' => t("URL to Facebook profile without protocol."),
    ),
    'facebook_username' => array(
      'name' => t("Facebook name"),
      'description' => t("Facebook profile name"),
    ),
  );
  return $platforms;
}
function socialmedia_facebook_parser($values, $scope = 'site') {
  $profile = array(
    'url' => '',
    'username' => '',
    'userid' => '',
  );
  $str = $values['url'];
  $pattern = '/(?:http:\\/\\/)?(www\\.)*(facebook\\.com\\/)(\\w+)+/i';

  //$pattern = '/^http:\/\/(www\.)?twitter\.com\/(#!\/)?(?<name>[^\/]+)(/\w+)*$/';
  if (!preg_match($pattern, $str, $matches, PREG_OFFSET_CAPTURE)) {
    if (trim($values['url'])) {
      form_set_error('input_facebook_url', t('Facebook URL invalid.'));
    }
    return FALSE;
  }
  $a = explode('facebook.com/', $str);
  $profile['url'] = 'www.facebook.com/' . $a[1];
  $b = explode('?', $a[1]);
  $c = explode('/', $b[0]);
  if (!isset($b[1]) && $b[0] != 'profile.php') {
    $profile['userid'] = $profile['username'] = $b[0];
  }
  elseif ($b[0] == 'pages') {
    $profile['userid'] = $profile['username'] = $b[1];
  }
  if (isset($values['username']) && trim($values['username'])) {
    $profile['username'] = $values['username'];
  }
  if (isset($profile['username'])) {
    return $profile;
  }
  form_set_error('input_facebook_username', t('Cannot derive username for this type URL. Please provide a username.'));
  return FALSE;
}
function socialmedia_facebook_tokens($key, $profile) {
  if (empty($profile['url'])) {
    return FALSE;
  }
  switch ($key) {

    // Simple key values on the node.
    case 'url':
      return 'http://' . $profile['url'];
    case 'url-brief':
      return $profile['url'];
    case 'username':
      return $profile['username'];
    case 'userid':
      return $profile['userid'];
  }
  return '';
}
function socialmedia_flickr_platform_info() {
  $platforms = array();
  $platforms['flickr'] = array(
    'title' => t('Flickr'),
    'description' => t('URL to your Flickr profile or page'),
    'homepage' => 'http://www.flickr.com',
    'redirect path' => 'flickr',
    'parser callback' => 'socialmedia_flickr_parser',
    'tokens callback' => 'socialmedia_flickr_tokens',
  );
  $platforms['flickr']['form'] = array(
    'title' => t('Flickr profile'),
    'description' => t('URL to your Flickr profile'),
  );
  $platforms['flickr']['tokens']['multi'] = array(
    'flickr_url' => array(
      'name' => t("Flickr profile url"),
      'description' => t("URL to Flickr profile."),
    ),
    'flickr_url-brief' => array(
      'name' => t("Flickr profile url (brief)"),
      'description' => t("URL to Flickr profile without protocol."),
    ),
    'flickr_username' => array(
      'name' => t("Flickr name"),
      'description' => t("Flickr profile name"),
    ),
  );
  return $platforms;
}
function socialmedia_flickr_parser($values, $scope = 'site') {
  $profile = array(
    'url' => '',
    'username' => '',
    'username' => '',
  );
  $str = $values['url'];
  $pattern = '/(?:http:\\/\\/)?(www\\.)*(flickr\\.com\\/)(\\w+)+/i';

  //$pattern = '/^http:\/\/(www\.)?twitter\.com\/(#!\/)?(?<name>[^\/]+)(/\w+)*$/';
  if (!preg_match($pattern, $str, $matches, PREG_OFFSET_CAPTURE)) {
    if (trim($values['url'])) {
      form_set_error('input_flickr_url', t('Flickr URL invalid.'));
    }
    return FALSE;
  }
  $a = explode('www.flickr.com/', $str);
  $profile['url'] = 'www.flickr.com/' . $a[1];
  $b = explode('/', $a[1]);
  if ($b[0] == 'people' || $b[0] == 'photos') {
    $profile['userid'] = $profile['username'] = $b[1];
  }
  if (isset($values['username']) && trim($values['username'])) {
    $profile['username'] = $values['username'];
  }
  if (isset($profile['username'])) {
    return $profile;
  }
  form_set_error('input_flickr_username', t('Cannot derive username for this type URL. Please provide a username.'));
  return FALSE;
}
function socialmedia_flickr_tokens($key, $profile) {
  if (empty($profile['url'])) {
    return FALSE;
  }
  switch ($key) {

    // Simple key values on the node.
    case 'url':
      return 'http://' . $profile['url'];
    case 'url-brief':
      return $profile['url'];
    case 'username':
      return $profile['username'];
    case 'userid':
      return $profile['useid'];
  }
  return '';
}
function socialmedia_foursquare_platform_info() {
  $platforms = array();
  $platforms['foursquare'] = array(
    'title' => t('Foursquare'),
    'description' => t('URL to your Foursquare profile'),
    'homepage' => 'http://foursquare.com/',
    'redirect path' => 'foursquare',
    'parser callback' => 'socialmedia_foursquare_parser',
    'tokens callback' => 'socialmedia_foursquare_tokens',
  );
  $platforms['foursquare']['form'] = array(
    'title' => t('Foursquare profile'),
    'description' => t('URL to your Foursquare profile'),
  );
  $platforms['foursquare']['tokens']['multi'] = array(
    'foursquare_url' => array(
      'name' => t("Foursquare profile url"),
      'description' => t("URL to Foursquare profile."),
    ),
    'foursquare_url-brief' => array(
      'name' => t("Foursquare profile url (brief)"),
      'description' => t("URL to Foursquare profile without protocol."),
    ),
    'foursquare_username' => array(
      'name' => t("Foursquare name"),
      'description' => t("Foursquare profile name"),
    ),
  );
  return $platforms;
}
function socialmedia_foursquare_parser($values, $scope = 'site') {
  $profile = array(
    'url' => '',
    'username' => '',
    'userid' => '',
  );
  $str = $values['url'];
  $pattern = '/(?:http:\\/\\/)?(www\\.)*(foursquare\\.com\\/)(\\w+)+/i';

  //$pattern = '/^http:\/\/(www\.)?twitter\.com\/(#!\/)?(?<name>[^\/]+)(/\w+)*$/';
  if (!preg_match($pattern, $str, $matches, PREG_OFFSET_CAPTURE)) {
    if (trim($values['url'])) {
      form_set_error('input_foursquare_url', t('Foursquare URL invalid.'));
    }
    return FALSE;
  }
  $a = explode('foursquare.com/', $str);
  $profile['url'] = 'foursquare.com/' . $a[1];
  $profile['userid'] = $profile['username'] = $a[1];
  if (isset($values['username']) && trim($values['username'])) {
    $profile['username'] = $values['username'];
  }
  if (isset($profile['username'])) {
    return $profile;
  }

  //dsm($profile['url']);
  form_set_error('input_foursquare_username', t('Cannot derive Foursquare username for this type URL. Please provide a username.'));
  return FALSE;
}
function socialmedia_foursquare_tokens($key, $profile) {
  if (empty($profile['url'])) {
    return FALSE;
  }
  switch ($key) {

    // Simple key values on the node.
    case 'url':
      return 'http://' . $profile['url'];
    case 'url-brief':
      return $profile['url'];
    case 'username':
      return $profile['username'];
    case 'userid':
      return $profile['userid'];
  }
  return '';
}
function socialmedia_googleplus_platform_info() {
  $platforms = array();
  $platforms['googleplus'] = array(
    'title' => t('Google+'),
    'description' => t('URL to your Google+ profile or page'),
    'homepage' => 'https://plus.google.com/',
    'redirect path' => 'google',
    'parser callback' => 'socialmedia_googleplus_parser',
    'tokens callback' => 'socialmedia_googleplus_tokens',
  );
  $platforms['googleplus']['form'] = array(
    'title' => t('Google+ profile'),
    'description' => t('URL to your Google+ profile'),
  );
  $platforms['googleplus']['tokens']['multi'] = array(
    'googleplus_url' => array(
      'name' => t("Google+ profile url"),
      'description' => t("URL to Google+ profile."),
    ),
    'googleplus_url-brief' => array(
      'name' => t("Google+ profile url (brief)"),
      'description' => t("URL to Google+ profile without protocol."),
    ),
    'googleplus_username' => array(
      'name' => t("Google+ name"),
      'description' => t("Google+ profile name"),
    ),
  );
  return $platforms;
}
function socialmedia_googleplus_parser($values, $scope = 'site') {
  $profile = array(
    'url' => '',
    'username' => '',
    'userid' => '',
  );
  $str = $values['url'];

  // check +name format
  $pattern = '/(?:http(?:s)?:\\/\\/)?(plus\\.)(google\\.com\\/)?(\\+)(\\w+)+/i';
  if (preg_match($pattern, $str, $matches, PREG_OFFSET_CAPTURE)) {
    $a = explode('plus.google.com/', $str);
    $profile['url'] = 'plus.google.com/' . $a[1];
    $b = explode('/', $a[1]);

    // check if + format name is used
    if (substr($b[0], 0, 1) == '+') {
      $profile['userid'] = $b[0];
      $values['username'] = substr($b[0], 1);
    }
  }
  else {

    // check numeric id format.
    $pattern = '/(?:http(?:s)?:\\/\\/)?(plus\\.)(google\\.com\\/)?([0-9]*)/i';
    if (!preg_match($pattern, $str, $matches, PREG_OFFSET_CAPTURE)) {
      if (trim($values['url']) && !isset($matches[3][0])) {
        form_set_error('input_googleplus_url', t('Google+ URL invalid.'));
      }
      return FALSE;
    }
    $a = explode('plus.google.com/', $str);
    $profile['url'] = 'plus.google.com/' . $a[1];
    $profile['userid'] = $matches[3][0];
  }
  if (isset($values['username']) && trim($values['username'])) {
    $profile['username'] = $values['username'];
  }
  if (isset($profile['username'])) {
    return $profile;
  }
  form_set_error('input_googleplus_username', t('Cannot derive username for this type URL. Please provide a username.'));
  return FALSE;
}
function socialmedia_googleplus_tokens($key, $profile) {
  if (empty($profile['url'])) {
    return FALSE;
  }
  switch ($key) {

    // Simple key values on the node.
    case 'url':
      return 'http://' . $profile['url'];
    case 'url-brief':
      return $profile['url'];
    case 'username':
      return $profile['username'];
    case 'userid':
      return $profile['userid'];
  }
  return '';
}
function socialmedia_instagram_platform_info() {
  $platforms = array();
  $platforms['instagram'] = array(
    'title' => t('Instagram'),
    'description' => t('URL to your Instagram profile'),
    'homepage' => 'http://instagram.com/',
    'redirect path' => 'instagram',
    'parser callback' => 'socialmedia_instagram_parser',
    'tokens callback' => 'socialmedia_instagram_tokens',
  );
  $platforms['instagram']['form'] = array(
    'title' => t('Instagram profile'),
    'description' => t('URL to your Instagram profile'),
  );
  $platforms['instagram']['tokens']['multi'] = array(
    'instagram_url' => array(
      'name' => t("Instagram profile url"),
      'description' => t("URL to Instagram profile."),
    ),
    'instagram_url-brief' => array(
      'name' => t("Instagram profile url (brief)"),
      'description' => t("URL to Instagram profile without protocol."),
    ),
    'instagram_username' => array(
      'name' => t("Instagram name"),
      'description' => t("Instagram profile name"),
    ),
  );
  return $platforms;
}
function socialmedia_instagram_parser($values, $scope = 'site') {
  $profile = array(
    'url' => '',
    'username' => '',
    'userid' => '',
  );
  $str = $values['url'];
  $pattern = '/(?:http:\\/\\/)?(www\\.)*(instagram\\.com\\/)(\\w+)+/i';

  //$pattern = '/^http:\/\/(www\.)?twitter\.com\/(#!\/)?(?<name>[^\/]+)(/\w+)*$/';
  if (!preg_match($pattern, $str, $matches, PREG_OFFSET_CAPTURE)) {
    if (trim($values['url'])) {
      form_set_error('input_instagram_url', t('Instagram URL invalid.'));
    }
    return FALSE;
  }
  $a = explode('instagram.com/', $str);
  $profile['url'] = 'instagram.com/' . $a[1];
  $profile['userid'] = $a[1];
  if (isset($values['username']) && trim($values['username'])) {
    $profile['username'] = $values['username'];
  }
  if (isset($profile['username'])) {
    return $profile;
  }

  //dsm($profile['url']);
  form_set_error('input_instagram_username', t('Cannot derive Instagram username for this type URL. Please provide a username.'));
  return FALSE;
}
function socialmedia_instagram_tokens($key, $profile) {
  if (empty($profile['url'])) {
    return FALSE;
  }
  switch ($key) {

    // Simple key values on the node.
    case 'url':
      return 'http://' . $profile['url'];
    case 'url-brief':
      return $profile['url'];
    case 'username':
      return $profile['username'];
    case 'userid':
      return $profile['userid'];
  }
  return '';
}
function socialmedia_linkedin_platform_info() {
  $platforms = array();
  $platforms['linkedin'] = array(
    'title' => t('LinkedIn'),
    'description' => t('URL to your LinkedIn profile or page'),
    'homepage' => 'http://www.linkedin.com/',
    'redirect path' => 'linkedin',
    'parser callback' => 'socialmedia_linkedin_parser',
    'tokens callback' => 'socialmedia_linkedin_tokens',
  );
  $platforms['linkedin']['form'] = array(
    'title' => t('LinkedIn profile'),
    'description' => t('URL to your LinkedIn profile'),
  );
  $platforms['linkedin']['tokens']['multi'] = array(
    'linkedin_url' => array(
      'name' => t("LinkedIn profile url"),
      'description' => t("URL to LinkedIn profile."),
    ),
    'linkedin_url-brief' => array(
      'name' => t("LinkedIn profile url (brief)"),
      'description' => t("URL to LinkedIn profile without protocol."),
    ),
    'linkedin_username' => array(
      'name' => t("LinkedIn name"),
      'description' => t("LinkedIn profile name"),
    ),
  );
  return $platforms;
}
function socialmedia_linkedin_parser($values, $scope = 'site') {
  $profile = array(
    'url' => '',
    'username' => '',
    'userid' => '',
  );
  $str = $values['url'];
  $pattern = '/(?:http:\\/\\/)?(www\\.)*(linkedin\\.com\\/)(\\w+)+/i';

  //$pattern = '/^http:\/\/(www\.)?twitter\.com\/(#!\/)?(?<name>[^\/]+)(/\w+)*$/';
  if (!preg_match($pattern, $str, $matches, PREG_OFFSET_CAPTURE)) {
    if (trim($values['url'])) {
      form_set_error('input_linkedin_url', t('LinkedIn URL invalid.'));
    }
    return FALSE;
  }
  $a = explode('linkedin.com/', $str);
  $profile['url'] = 'www.linkedin.com/' . $a[1];
  if (strpos($a[1], 'in/') === 0) {
    $profile['userid'] = $profile['username'] = substr($a[1], 3);
  }
  else {
    if (strpos($a[1], 'company/') === 0) {
      $profile['userid'] = $profile['username'] = substr($a[1], 8);
      $profile['type'] = 'company';
    }
    else {
      if (strpos($a[1], 'groups/') === 0) {

        // extract group id is encoded in query string value gid
        $c = explode('gid=', $str);
        $d = explode('&', $c[1]);
        $profile['userid'] = $profile['username'] = $d[0];
        $profile['type'] = 'group';
      }
    }
  }
  if (isset($values['username']) && trim($values['username'])) {
    $profile['username'] = $values['username'];
  }
  if (isset($profile['username'])) {
    return $profile;
  }
  form_set_error('input_linkedin_username', t('Cannot derive username for this type URL. Please provide a username.'));
  return FALSE;
}
function socialmedia_linkedin_tokens($key, $profile) {
  if (empty($profile['url'])) {
    return FALSE;
  }
  switch ($key) {

    // Simple key values on the node.
    case 'url':
      return 'http://' . $profile['url'];
    case 'url-brief':
      return $profile['url'];
    case 'username':
      return $profile['username'];
    case 'userid':
      return $profile['userid'];
    case 'type':
      return isset($profile['type']) ? $profile['type'] : '<none>';
  }
  return '';
}
function socialmedia_pinterest_platform_info() {
  $platforms = array();
  $platforms['pinterest'] = array(
    'title' => t('Pinterest'),
    'description' => t('URL to your Pinterest profile or board'),
    'homepage' => 'http://pinterest.com/',
    'redirect path' => 'pinterest',
    'parser callback' => 'socialmedia_pinterest_parser',
    'tokens callback' => 'socialmedia_pinterest_tokens',
  );
  $platforms['pinterest']['form'] = array(
    'title' => t('LinkedIn profile'),
    'description' => t('URL to your LinkedIn profile'),
  );
  $platforms['pinterest']['tokens']['multi'] = array(
    'pinterest_url' => array(
      'name' => t("Pinterest profile url"),
      'description' => t("URL to Pinterest profile."),
    ),
    'pinterest_url-brief' => array(
      'name' => t("Pinterest profile url (brief)"),
      'description' => t("URL to Pinterest profile without protocol."),
    ),
    'pinterest_username' => array(
      'name' => t("Pinterest name"),
      'description' => t("Pinterest profile name"),
    ),
  );
  return $platforms;
}
function socialmedia_pinterest_parser($values, $scope = 'site') {
  $profile = array(
    'url' => '',
    'username' => '',
    'userid' => '',
  );
  $str = $values['url'];
  $pattern = '/(?:http:\\/\\/)?(www\\.)*(pinterest\\.com\\/)(\\w+)+/i';

  //$pattern = '/^http:\/\/(www\.)?twitter\.com\/(#!\/)?(?<name>[^\/]+)(/\w+)*$/';
  if (!preg_match($pattern, $str, $matches, PREG_OFFSET_CAPTURE)) {
    if (trim($values['url'])) {
      form_set_error('input_pinterest_url', t('Pinterest URL invalid.'));
    }
    return FALSE;
  }
  $a = explode('pinterest.com/', $str);
  $profile['url'] = 'pinterest.com/' . $a[1];
  $profile['userid'] = $profile['username'] = $a[1];
  if (isset($values['username']) && trim($values['username'])) {
    $profile['username'] = $values['username'];
  }
  if (isset($profile['username'])) {
    return $profile;
  }
  form_set_error('input_pintrest_username', t('Cannot derive username for this type URL. Please provide a username.'));
  return FALSE;
}
function socialmedia_pinterest_tokens($key, $profile) {
  if (empty($profile['url'])) {
    return FALSE;
  }
  switch ($key) {

    // Simple key values on the node.
    case 'url':
      return 'http://' . $profile['url'];
    case 'url-brief':
      return $profile['url'];
    case 'username':
      return $profile['username'];
    case 'userid':
      return $profile['userid'];
  }
  return '';
}
function socialmedia_rss_platform_info() {
  $platforms = array();
  $platforms['rss'] = array(
    'title' => t('RSS'),
    'description' => t('URL to your RSS feed'),
    'group' => t('Syndication'),
    //'homepage' => '',
    'form callback' => 'socialmedia_rss_form',
    'parser callback' => 'socialmedia_rss_parser',
    'tokens callback' => 'socialmedia_rss_tokens',
  );
  $platforms['rss']['form'] = array(
    'title' => t('RSS'),
    'description' => t('URL to your RSS feed'),
  );
  $platforms['rss']['tokens']['multi'] = array(
    'rss_url' => array(
      'name' => t("RSS feed url"),
      'description' => t("URL to RSS feed."),
    ),
  );
  return $platforms;
}
function socialmedia_rss_form($profile) {
  $fields['input_rss_url'] = array(
    '#type' => 'textfield',
    '#title' => t('RSS url'),
    '#default_value' => isset($profile['inputs']['url']) ? $profile['inputs']['url'] : 'rss.xml',
    '#description' => t('This is the url to your rss feed. The default feed is located at rss.xml but you might want to link to another feed.'),
    '#size' => 80,
  );
  return $fields;
}
function socialmedia_rss_parser($values, $scope = 'site') {
  $profile = array(
    'url' => '',
    'username' => '',
    'userid' => '',
  );
  $profile['url'] = $values['url'];
  return $profile;
}
function socialmedia_rss_tokens($key, $profile) {
  if (empty($profile['url'])) {
    return FALSE;
  }
  switch ($key) {
    case 'url':

      // removed leading '/' if it exists. Used to support old format before url function added.
      if (substr($profile['url'], 0, 1) == '/') {
        $profile['url'] = substr($profile['url'], 1);
      }

      //return isset($profile['url']) ? $profile['url'] : '';
      return isset($profile['url']) ? url($profile['url']) : '';
    case 'username':
      return $profile['username'];
    case 'userid':
      return $profile['userid'];
  }
  return '';
}
function socialmedia_slideshare_platform_info() {
  $platforms = array();
  $platforms['slideshare'] = array(
    'title' => t('SlideShare'),
    'description' => t('URL to your SlideShare profile or page'),
    'homepage' => 'http://www.slideshare.net/',
    'redirect path' => 'slideshare',
    'parser callback' => 'socialmedia_slideshare_parser',
    'tokens callback' => 'socialmedia_slideshare_tokens',
  );
  $platforms['slideshare']['form'] = array(
    'title' => t('SlideShare profile'),
    'description' => t('URL to your SlideShare profile'),
  );
  $platforms['slideshare']['tokens']['multi'] = array(
    'slideshare_url' => array(
      'name' => t("SlideShare profile url"),
      'description' => t("URL to SlideShare profile."),
    ),
    'slideshare_url-brief' => array(
      'name' => t("SlideShare profile url (brief)"),
      'description' => t("URL to SlideShare profile without protocol."),
    ),
    'slideshare_username' => array(
      'name' => t("SlideShare name"),
      'description' => t("SlideShare profile name"),
    ),
  );
  return $platforms;
}
function socialmedia_slideshare_parser($values, $scope = 'site') {
  $profile = array(
    'url' => '',
    'username' => '',
  );
  $str = $values['url'];
  $pattern = '/(?:http:\\/\\/)?(www\\.)*(slideshare\\.net\\/)(\\w+)+/i';

  //$pattern = '/^http:\/\/(www\.)?twitter\.com\/(#!\/)?(?<name>[^\/]+)(/\w+)*$/';
  if (!preg_match($pattern, $str, $matches, PREG_OFFSET_CAPTURE)) {
    if (trim($values['url'])) {
      form_set_error('input_slideshare_url', t('SlideShare URL invalid.'));
    }
    return FALSE;
  }
  $a = explode('slideshare.net/', $str);
  $profile['url'] = 'www.slideshare.net/' . $a[1];
  $b = explode('/', $a[1]);
  $profile['userid'] = $profile['username'] = $b[0];
  if (isset($values['username']) && trim($values['username'])) {
    $profile['username'] = $values['username'];
  }
  if (isset($profile['username'])) {
    return $profile;
  }
  return $profile;
  form_set_error('input_slideshare_username', t('Cannot derive username for this type URL. Please provide a username.'));
  return FALSE;
}
function socialmedia_slideshare_tokens($key, $profile) {
  if (empty($profile['url'])) {
    return FALSE;
  }
  switch ($key) {

    // Simple key values on the node.
    case 'url':
      return 'http://' . $profile['url'];
    case 'url-brief':
      return $profile['url'];
    case 'username':
      return $profile['username'];
  }
  return '';
}
function socialmedia_tumblr_platform_info() {
  $platforms = array();
  $platforms['tumblr'] = array(
    'title' => t('Tumblr'),
    'description' => t('URL to your Tumblr profile'),
    'homepage' => 'http://tumblr.com/',
    'redirect path' => 'tumblr',
    'parser callback' => 'socialmedia_tumblr_parser',
    'tokens callback' => 'socialmedia_tumblr_tokens',
  );
  $platforms['tumblr']['form'] = array(
    'title' => t('Tumblr profile'),
    'description' => t('URL to your Tumblr profile'),
  );
  $platforms['tumblr']['tokens']['multi'] = array(
    'tumblr_url' => array(
      'name' => t("Tumblr profile url"),
      'description' => t("URL to Tumblr profile."),
    ),
    'tumblr_url-brief' => array(
      'name' => t("Tumblr profile url (brief)"),
      'description' => t("URL to Tumblr profile without protocol."),
    ),
    'tumblr_username' => array(
      'name' => t("Tumblr name"),
      'description' => t("Tumblr profile name"),
    ),
  );
  return $platforms;
}
function socialmedia_tumblr_parser($values, $scope = 'site') {
  $profile = array(
    'url' => '',
    'username' => '',
    'userid' => '',
  );
  $str = $values['url'];
  $pattern = '/(?:http:\\/\\/)?(www\\.)*(tumblr\\.com\\/)(\\w+)+/i';

  //$pattern = '/^http:\/\/(www\.)?twitter\.com\/(#!\/)?(?<name>[^\/]+)(/\w+)*$/';
  if (!preg_match($pattern, $str, $matches, PREG_OFFSET_CAPTURE)) {
    if (trim($values['url'])) {
      form_set_error('input_tumblr_url', t('Tumblr profile URL invalid.'));
    }
    return FALSE;
  }
  $profile['url'] = $matches[1][0] . $matches[2][0];
  $profile['userid'] = $profile['username'] = isset($values['username']) && $values['username'] ? $values['username'] : $matches[1][0];
  return FALSE;
}
function socialmedia_tumblr_tokens($key, $profile) {
  if (empty($profile['url'])) {
    return FALSE;
  }
  switch ($key) {

    // Simple key values on the node.
    case 'url':
      return 'http://' . $profile['url'];
    case 'url-brief':
      return $profile['url'];
    case 'username':
      return $profile['username'];
    case 'userid':
      return $profile['userid'];
  }
  return '';
}
function socialmedia_twitter_platform_info() {
  $platforms = array();
  $platforms['twitter'] = array(
    'title' => t('Twitter'),
    //'description' => t('URL to your Twitter account'),
    'homepage' => 'http://twitter.com/',
    'redirect path' => 'twitter',
    'parser callback' => 'socialmedia_twitter_parser',
    'tokens callback' => 'socialmedia_twitter_tokens',
  );
  $platforms['twitter']['form'] = array(
    'title' => t('Twitter profile'),
    'description' => t('URL to your Twitter profile'),
  );
  $platforms['twitter']['tokens']['multi'] = array(
    'twitter_url' => array(
      'name' => t("Twitter account url"),
      'description' => t("URL to twitter account."),
    ),
    'twitter_url-brief' => array(
      'name' => t("Twitter account url (brief)"),
      'description' => t("URL to twitter account without protocol."),
    ),
    'twitter_username' => array(
      'name' => t("Twitter username"),
      'description' => t("Twitter account username"),
    ),
    'twitter_amp-username' => array(
      'name' => t("Twitter @username"),
      'description' => t("Twitter account username preceded by @"),
    ),
    'twitter_user-timeline-widget-id' => array(
      'name' => t("Twitter user timeline widget ID"),
      'description' => t("Widget ID provided in Twitter widgets settings for the user timeline."),
    ),
  );
  return $platforms;
}
function socialmedia_twitter_parser($values, $scope = 'site') {
  $profile = array(
    'url' => '',
    'username' => '',
    'userid' => '',
  );
  $str = $values['url'];
  $pattern = '/(?:http:\\/\\/)?(www\\.)*(twitter\\.com\\/)(#!\\/)?(\\w+)+/i';

  //$pattern = '/^http:\/\/(www\.)?twitter\.com\/(#!\/)?(?<name>[^\/]+)(/\w+)*$/';
  if (!preg_match($pattern, $str, $matches, PREG_OFFSET_CAPTURE)) {
    if (trim($values['url'])) {
      form_set_error('input_twitter_url', t('Twitter profile URL invalid.'));
    }
    return FALSE;
  }
  $profile['url'] = $matches[2][0] . $matches[4][0];
  $profile['userid'] = $profile['username'] = isset($values['username']) && $values['username'] ? $values['username'] : $matches[4][0];
  if (isset($values['username']) && trim($values['username'])) {
    $profile['username'] = $values['username'];
  }
  if (isset($values['user_timeline_widget_id']) && trim($values['user_timeline_widget_id'])) {
    $profile['user_timeline_widget_id'] = $values['user_timeline_widget_id'];
  }
  return $profile;
}
function socialmedia_twitter_tokens($key, $profile) {
  if (empty($profile['url'])) {
    return FALSE;
  }
  switch ($key) {

    // Simple key values on the node.
    case 'url':
      return 'http://' . $profile['url'];
    case 'url-brief':
      return $profile['url'];
    case 'username':
      return $profile['username'] ? $profile['username'] : FALSE;
    case 'userid':
      return $profile['userid'] ? $profile['userid'] : FALSE;
    case 'amp-username':
      return '@' . $profile['username'];
    case 'user-timeline-widget-id':
      return isset($profile['user_timeline_widget_id']) ? $profile['user_timeline_widget_id'] : FALSE;
  }
  return '';
}
function socialmedia_vimeo_platform_info() {
  $platforms = array();
  $platforms['vimeo'] = array(
    'title' => t('Vimeo'),
    'description' => t('URL to your Vimeo profile or page'),
    'homepage' => 'http://vimeo.com/',
    'redirect path' => 'vimeo',
    'parser callback' => 'socialmedia_vimeo_parser',
    'tokens callback' => 'socialmedia_vimeo_tokens',
  );
  $platforms['vimeo']['form'] = array(
    'title' => t('Vimeo profile'),
    'description' => t('URL to your Vimeo profile'),
  );
  $platforms['vimeo']['tokens']['multi'] = array(
    'vimeo_url' => array(
      'name' => t("Vimeo profile url"),
      'description' => t("URL to Vimeo profile."),
    ),
    'vimeo_url-brief' => array(
      'name' => t("Vimeo profile url (brief)"),
      'description' => t("URL to Vimeo profile without protocol."),
    ),
    'vimeo_username' => array(
      'name' => t("Vimeo name"),
      'description' => t("Vimeo profile name"),
    ),
  );
  return $platforms;
}
function socialmedia_vimeo_parser($values, $scope = 'site') {
  $profile = array(
    'url' => '',
    'username' => '',
    'userid' => '',
  );
  $str = $values['url'];
  $pattern = '/(?:http:\\/\\/)?(www\\.)*(vimeo\\.com\\/)(\\w+)+/i';

  //$pattern = '/^http:\/\/(www\.)?twitter\.com\/(#!\/)?(?<name>[^\/]+)(/\w+)*$/';
  if (!preg_match($pattern, $str, $matches, PREG_OFFSET_CAPTURE)) {
    if (trim($values['url'])) {
      form_set_error('input_vimeo_url', t('Vimeo profile URL invalid.'));
    }
    return FALSE;
  }
  $a = explode('vimeo.com/', $str);
  $profile['url'] = 'vimeo.com/' . $a[1];
  $profile['userid'] = $profile['username'] = $a[1];
  if (isset($values['username']) && trim($values['username'])) {
    $profile['username'] = $values['username'];
  }
  if (isset($profile['username'])) {
    return $profile;
  }

  //dsm($profile['url']);
  form_set_error('input_vimeo_username', t('Cannot derive Vimeo username for this type URL. Please provide a username.'));
  return FALSE;
}
function socialmedia_vimeo_tokens($key, $profile) {
  if (empty($profile['url'])) {
    return FALSE;
  }
  switch ($key) {

    // Simple key values on the node.
    case 'url':
      return 'http://' . $profile['url'];
    case 'url-brief':
      return $profile['url'];
    case 'username':
      return $profile['username'];
    case 'userid':
      return $profile['userid'];
  }
  return '';
}
function socialmedia_youtube_platform_info() {
  $platforms = array();
  $platforms['youtube'] = array(
    'title' => t('YouTube'),
    'description' => t('URL to your YouTube profile or page'),
    'homepage' => 'http://www.youtube.com/',
    'redirect path' => 'youtube',
    'parser callback' => 'socialmedia_youtube_parser',
    'tokens callback' => 'socialmedia_youtube_tokens',
  );
  $platforms['youtube']['form'] = array(
    'title' => t('YouTube profile'),
    'description' => t('URL to your YouTube profile'),
  );
  $platforms['youtube']['tokens']['multi'] = array(
    'youtube_url' => array(
      'name' => t("YouTube profile url"),
      'description' => t("URL to YouTube profile."),
    ),
    'youtube_url-brief' => array(
      'name' => t("YouTube profile url (brief)"),
      'description' => t("URL to YouTube profile without protocol."),
    ),
    'youtube_username' => array(
      'name' => t("YouTube name"),
      'description' => t("YouTube profile name"),
    ),
    'youtube_userid' => array(
      'name' => t("YouTube user id"),
      'description' => t("YouTube profile id"),
    ),
  );
  return $platforms;
}
function socialmedia_youtube_parser($values, $scope = 'site') {
  $profile = array(
    'url' => '',
    'username' => '',
    'userid' => '',
  );
  $str = $values['url'];
  $pattern = '/(?:http:\\/\\/)?(www\\.)*(youtube\\.com\\/)(\\w+)+/i';

  //$pattern = '/^http:\/\/(www\.)?twitter\.com\/(#!\/)?(?<name>[^\/]+)(/\w+)*$/';
  if (!preg_match($pattern, $str, $matches, PREG_OFFSET_CAPTURE)) {
    if (trim($values['url'])) {
      form_set_error('input_youtube_url', t('YouTube profile URL invalid.'));
    }
    return FALSE;
  }
  $a = explode('youtube.com/', $str);
  $profile['url'] = 'www.youtube.com/' . $a[1];
  $b = explode('/', $a[1]);
  if (strpos($b[0], 'user') === 0 || strpos($b[0], 'channel') === 0) {
    $profile['userid'] = $profile['username'] = $b[1];

    //substr($a[1], 5);
    if (strpos($b[0], 'channel') === 0) {
      $profile['type'] = 'channel';
    }
  }
  elseif (count($b) == 1) {
    $profile['userid'] = $profile['username'] = $b[0];
  }
  if (isset($values['username']) && trim($values['username'])) {
    $profile['username'] = $values['username'];
  }
  if (isset($profile['username'])) {
    return $profile;
  }
  form_set_error('input_youtube_username', t('Cannot derive username for this type URL. Please provide a username.'));
  return FALSE;
}
function socialmedia_youtube_tokens($key, $profile) {
  if (empty($profile['url'])) {
    return FALSE;
  }
  switch ($key) {

    // Simple key values on the node.
    case 'url':
      return 'http://' . $profile['url'];
    case 'url-brief':
      return $profile['url'];
    case 'username':
      return $profile['username'];
    case 'userid':
      return $profile['userid'];
  }
  return '';
}