<?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_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_username' => array( 'name' => t("AddThis username"), 'description' => t("AddThis account username"), ), ); return $platforms; } function socialmedia_addthis_form($profile) { $fields['input_addthis_username'] = array( '#type' => 'textfield', '#title' => t('AddThis username'), '#default_value' => (isset($profile['inputs']['username'])) ? $profile['inputs']['username'] : '', '#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['username'] = $values['username']; return $profile; } function socialmedia_addthis_tokens($key, $profile) { switch ($key) { case 'username': return isset($profile['username']) ? $profile['username'] : ''; } 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' => ''); $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]; if (isset($values['username']) && trim($values['username'])) { $profile['username'] = $values['username']; return $profile; } $b = explode('?', $a[1]); $c = explode('/', $b[0]); if (!isset($b[1]) && ($b[0] != 'profile.php')) { $profile['username'] = $b[0]; } elseif ($b[0] == 'pages') { $profile['username'] = $b[1]; } 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) { 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_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' => ''); $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]; if (isset($values['username']) && trim($values['username'])) { $profile['username'] = $values['username']; return $profile; } $b = explode('/', $a[1]); if (($b[0] == 'people') || ($b[0] == 'photos')) { $profile['username'] = $b[1]; 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) { 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_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' => ''); $str = $values['url']; $pattern = '/(?:http(?:s)?:\/\/)?(plus\.)(google\.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_googleplus_url', t('Google+ URL invalid.')); } return FALSE; } $a = explode('plus.google.com/', $str); $profile['url'] = 'plus.google.com/' . $a[1]; if (isset($values['username']) && trim($values['username'])) { $profile['username'] = $values['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) { 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_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' => ''); $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 (isset($values['username']) && trim($values['username'])) { $profile['username'] = $values['username']; return $profile; } if (strpos($a[1], 'in/') === 0) { $profile['username'] = substr($a[1], 3); 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) { 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_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( 'linkedin_url' => array( 'name' => t("Pinterest profile url"), 'description' => t("URL to LinkedIn profile."), ), 'linkedin_url-brief' => array( 'name' => t("Pinterest profile url (brief)"), 'description' => t("URL to LinkedIn profile without protocol."), ), 'linkedin_username' => array( 'name' => t("Pinterest name"), 'description' => t("LinkedIn profile name"), ), ); return $platforms; } function socialmedia_pinterest_parser($values, $scope = 'site') { $profile = array('url' => '', 'username' => ''); $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_linkedin_url', t('Pinterest URL invalid.')); } return FALSE; } $a = explode('pinterest.com/', $str); $profile['url'] = 'pinterest.com/' . $a[1]; if (isset($values['username']) && trim($values['username'])) { $profile['username'] = $values['username']; return $profile; } $b = explode('/', $a[1]); if (isset($b[1])) { $profile['username'] = $b[1]; 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) { 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_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['url'] = $values['url']; return $profile; } function socialmedia_rss_tokens($key, $profile) { 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']) : ''; } 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]; if (isset($values['username']) && trim($values['username'])) { $profile['username'] = $values['username']; return $profile; } $b = explode('/', $a[1]); $profile['username'] = $b[0]; 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) { 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_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 @"), ), ); return $platforms; } function socialmedia_twitter_parser($values, $scope = 'site') { $profile = array('url' => '', 'username' => ''); $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 URL invalid.')); } return FALSE; } $profile['url'] = $matches[2][0] . $matches[4][0]; $profile['username'] = (isset($values['username']) && $values['username']) ? $values['username'] : $matches[4][0]; return $profile; } function socialmedia_twitter_tokens($key, $profile) { 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 'amp-username': return '@' . $profile['username']; } 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' => ''); $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 URL invalid.')); } return FALSE; } $a = explode('vimeo.com/', $str); $profile['url'] = 'vimeo.com/' . $a[1]; if (isset($values['username']) && trim($values['username'])) { $profile['username'] = $values['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) { 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_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"), ), ); return $platforms; } function socialmedia_youtube_parser($values, $scope = 'site') { $profile = array('url' => '', 'username' => ''); $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 URL invalid.')); } return FALSE; } $a = explode('youtube.com/', $str); $profile['url'] = 'www.youtube.com/' . $a[1]; if (isset($values['username']) && trim($values['username'])) { $profile['username'] = $values['username']; return $profile; } $b = explode('/', $a[1]); if (strpos($b[0], 'user') === 0) { $profile['username'] = substr($a[1], 5); return $profile; } elseif (count($b) == 1) { $profile['username'] = $b[0]; 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) { 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 ''; }