Explorar el Código

Merge branch 'master' of github.com:unaio/una

Alex Trofimov hace 9 años
padre
commit
a4c00ada4d

+ 13 - 3
install/sql/system.sql

@@ -2902,7 +2902,8 @@ INSERT INTO `sys_menu_templates` (`id`, `template`, `title`, `visible`) VALUES
 (14, 'menu_floating_blocks_big.html', '_sys_menu_template_title_floating_blocks_big', 1),
 (15, 'menu_custom.html', '_sys_menu_template_title_custom', 0),
 (16, 'menu_buttons_ver.html', '_sys_menu_template_title_buttons_ver', 1),
-(17, 'menu_inline_sbtn.html', '_sys_menu_template_title_inline_sbtn', 1);
+(17, 'menu_inline_sbtn.html', '_sys_menu_template_title_inline_sbtn', 1),
+(18, 'menu_icon_buttons_hor.html', '_sys_menu_template_title_icon_buttons_hor', 1);
 
 CREATE TABLE IF NOT EXISTS `sys_objects_menu` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
@@ -2941,7 +2942,8 @@ INSERT INTO `sys_objects_menu` (`object`, `title`, `set_name`, `module`, `templa
 ('sys_switch_language_popup', '_sys_menu_title_switch_language_popup', 'sys_switch_language', 'system', 6, 0, 1, 'BxTemplMenuSwitchLanguage', ''),
 ('sys_switch_language_inline', '_sys_menu_title_switch_language_inline', 'sys_switch_language', 'system', 3, 0, 1, 'BxTemplMenuSwitchLanguage', ''),
 ('sys_switch_template', '_sys_menu_title_switch_template', 'sys_switch_template', 'system', 6, 0, 1, 'BxTemplMenuSwitchTemplate', ''),
-('sys_set_acl_level', '_sys_menu_title_set_acl_level', '', 'system', 6, 0, 1, 'BxTemplMenuSetAclLevel', '');
+('sys_set_acl_level', '_sys_menu_title_set_acl_level', '', 'system', 6, 0, 1, 'BxTemplMenuSetAclLevel', ''),
+('sys_social_sharing', '_sys_menu_title_social_sharing', 'sys_social_sharing', 'system', 18, 0, 1, 'BxTemplMenuSocialSharing', '');
 
 CREATE TABLE IF NOT EXISTS `sys_menu_sets` (
   `set_name` varchar(64) NOT NULL,
@@ -2969,7 +2971,8 @@ INSERT INTO `sys_menu_sets` (`set_name`, `module`, `title`, `deletable`) VALUES
 ('sys_cmts_item_manage', 'system', '_sys_menu_set_title_cmts_item_manage', 0),
 ('sys_cmts_item_actions', 'system', '_sys_menu_set_title_cmts_item_actions', 0),
 ('sys_switch_language', 'system', '_sys_menu_set_title_switch_language', 0),
-('sys_switch_template', 'system', '_sys_menu_set_title_switch_template', 0);
+('sys_switch_template', 'system', '_sys_menu_set_title_switch_template', 0),
+('sys_social_sharing', 'system', '_sys_menu_set_title_sys_social_sharing', 0);
 
 CREATE TABLE IF NOT EXISTS `sys_menu_items` (
   `id` int(11) NOT NULL AUTO_INCREMENT,
@@ -3055,6 +3058,13 @@ INSERT INTO `sys_menu_items`(`set_name`, `module`, `name`, `title_system`, `titl
 ('sys_cmts_item_actions', 'system', 'item-vote', '_sys_menu_item_title_system_cmts_item_vote', '_sys_menu_item_title_cmts_item_vote', 'javascript:void(0)', '', '', '', '', '', 2147483647, 1, 0, 0, 1),
 ('sys_cmts_item_actions', 'system', 'item-reply', '_sys_menu_item_title_system_cmts_item_reply', '_sys_menu_item_title_cmts_item_reply', 'javascript:void(0)', 'javascript:{reply_onclick}', '_self', 'reply', '', '', 2147483647, 1, 0, 1, 2);
 
+-- social sharing menu
+INSERT INTO `sys_menu_items` (`set_name`, `module`, `name`, `title_system`, `title`, `link`, `onclick`, `target`, `icon`, `submenu_object`, `visible_for_levels`, `active`, `copyable`, `order`) VALUES
+('sys_social_sharing', 'system', 'social-sharing-facebook', '_sys_menu_item_title_system_social_sharing_facebook', '_sys_menu_item_title_social_sharing_facebook', 'https://www.facebook.com/sharer/sharer.php?u={url_encoded}', '', '', 'facebook', '', 2147483646, 1, 1, 1),
+('sys_social_sharing', 'system', 'social-sharing-googleplus', '_sys_menu_item_title_system_social_sharing_googleplus', '_sys_menu_item_title_social_sharing_googleplus', 'https://plus.google.com/share?url={url_encoded}', '', '', 'google-plus', '', 2147483646, 1, 1, 2),
+('sys_social_sharing', 'system', 'social-sharing-twitter', '_sys_menu_item_title_system_social_sharing_twitter', '_sys_menu_item_title_social_sharing_twitter', 'https://twitter.com/share?url={url_encoded}', '', '', 'twitter', '', 2147483646, 1, 1, 3),
+('sys_social_sharing', 'system', 'social-sharing-pinterest', '_sys_menu_item_title_system_social_sharing_pinterest', '_sys_menu_item_title_social_sharing_pinterest', 'http://pinterest.com/pin/create/button/?url={url_encoded}&media={img_url_encoded}&description={title_encoded}', '', '', 'pinterest', '', 2147483646, 1, 1, 4);
+
 -- --------------------------------------------------------
 
 

+ 12 - 2
modules/base/general/classes/BxBaseModGeneralModule.php

@@ -837,7 +837,7 @@ class BxBaseModGeneralModule extends BxDolModule
             ));
         }
 
-        $aCustomParams = false;
+        $aCustomParams = array();
         $iIdThumb = isset($aParams['id_thumb']) ? (int)$aParams['id_thumb'] : 0;
         $bSocialSharing = isset($aParams['social_sharing']) ? (bool)$aParams['social_sharing'] : true;
         if ($iIdThumb && $bSocialSharing) {
@@ -885,7 +885,17 @@ class BxBaseModGeneralModule extends BxDolModule
         if ($oReport)
             $sReport = $oReport->getElementBlock(array('show_do_report_as_button' => true));
 
-        $sSocial = $bSocialSharing ? BxTemplSocialSharing::getInstance()->getCode($iId, $this->_aModule['name'], BX_DOL_URL_ROOT . $sUrl, $sTitle, $aCustomParams) : '';
+        $sSocial = '';
+        if($bSocialSharing) {
+            $oSocial = BxDolMenu::getObjectInstance('sys_social_sharing');
+            $oSocial->addMarkers(array_merge(array(
+                'id' => $iId,
+            	'module' => $this->_aModule['name'],
+            	'url' => BX_DOL_URL_ROOT . $sUrl,
+            	'title' => $sTitle,
+            ), $aCustomParams));
+            $sSocial = $oSocial->getCode();
+        }
 
         if(empty($sComments) && empty($sVotes) && empty($sFavorites) && empty($sRepost) && empty($sReport) && empty($sSocial))
             return '';

+ 2 - 1
modules/base/general/template/css/main.css

@@ -9,7 +9,8 @@
 .bx-base-general-entity-share .bx-favorite,
 .bx-base-general-entity-share .bx-report,
 .bx-base-general-entity-share .bx-tl-repost,
-.bx-base-general-entity-share .bx-social-sharing {
+.bx-base-general-entity-share .bx-social-sharing,
+.bx-base-general-entity-share .bx-menu-btns-hor.bx-menu-object-sys_social_sharing {
 	position: relative;
 	float: left;
 }

+ 1 - 1
modules/boonex/albums/install/sql/install.sql

@@ -358,7 +358,7 @@ INSERT INTO `sys_objects_report` (`name`, `table_main`, `table_track`, `is_on`,
 -- VIEWS
 
 INSERT INTO `sys_objects_view` (`name`, `table_track`, `period`, `is_on`, `trigger_table`, `trigger_field_id`, `trigger_field_author`, `trigger_field_count`, `class_name`, `class_file`) VALUES 
-('bx_albums', 'bx_albums_views_track', '86400', '1', 'bx_albums_albums', 'id', 'views', '', ''),
+('bx_albums', 'bx_albums_views_track', '86400', '1', 'bx_albums_albums', 'id', '', 'views', '', ''),
 ('bx_albums_media', 'bx_albums_views_media_track', '86400', '1', 'bx_albums_files2albums', 'id', 'author', 'views', '', '');
 
 -- FAFORITES

+ 12 - 1
modules/boonex/english/data/langs/system/en.xml

@@ -1988,6 +1988,10 @@ If it is not enabled then please consider implement this optimization, since it
 	<string name="_sys_menu_item_title_set_acl_level"><![CDATA[Set membership]]></string>
 	<string name="_sys_menu_item_title_studio"><![CDATA[Studio]]></string>
 	<string name="_sys_menu_item_title_subscriptions"><![CDATA[Subscriptions]]></string>
+	<string name="_sys_menu_item_title_social_sharing_facebook"><![CDATA[Share in Facebook]]></string>
+    <string name="_sys_menu_item_title_social_sharing_googleplus"><![CDATA[Share in Google Plus]]></string>
+    <string name="_sys_menu_item_title_social_sharing_twitter"><![CDATA[Share in Twitter]]></string>
+    <string name="_sys_menu_item_title_social_sharing_pinterest"><![CDATA[Share in Pinterest]]></string>
 	<string name="_sys_menu_item_title_system_about"><![CDATA[About]]></string>
 	<string name="_sys_menu_item_title_system_privacy"><![CDATA[Privacy]]></string>
 	<string name="_sys_menu_item_title_system_switch_language"><![CDATA[Language]]></string>
@@ -2019,6 +2023,10 @@ If it is not enabled then please consider implement this optimization, since it
 	<string name="_sys_menu_item_title_system_set_acl_level"><![CDATA[Set membership]]></string>
 	<string name="_sys_menu_item_title_system_studio"><![CDATA[Studio]]></string>
 	<string name="_sys_menu_item_title_system_subscriptions"><![CDATA[Subscriptions]]></string>
+	<string name="_sys_menu_item_title_system_social_sharing_facebook"><![CDATA[Share in Facebook]]></string>
+    <string name="_sys_menu_item_title_system_social_sharing_googleplus"><![CDATA[Share in Google Plus]]></string>
+    <string name="_sys_menu_item_title_system_social_sharing_twitter"><![CDATA[Share in Twitter]]></string>
+    <string name="_sys_menu_item_title_system_social_sharing_pinterest"><![CDATA[Share in Pinterest]]></string>
 	<string name="_sys_menu_set_title_account"><![CDATA[Account]]></string>
 	<string name="_sys_menu_set_title_account_dashboard_manage_tools"><![CDATA[Account Dashboard Manage Tools]]></string>
 	<string name="_sys_menu_set_title_account_settings"><![CDATA[Account Settings]]></string>
@@ -2030,6 +2038,7 @@ If it is not enabled then please consider implement this optimization, since it
 	<string name="_sys_menu_set_title_cmts_item_manage"><![CDATA[Manage Comment]]></string>
 	<string name="_sys_menu_set_title_switch_language"><![CDATA[Switch Language]]></string>
 	<string name="_sys_menu_set_title_switch_template"><![CDATA[Switch Template]]></string>
+	<string name="_sys_menu_set_title_sys_social_sharing"><![CDATA[Social Sharing]]></string>
 	<string name="_sys_menu_set_title_footer"><![CDATA[Footer]]></string>
 	<string name="_sys_menu_set_title_profile_create_links"><![CDATA[Create Profile Links]]></string>
 	<string name="_sys_menu_set_title_profile_stats"><![CDATA[Profile Stats]]></string>
@@ -2037,12 +2046,13 @@ If it is not enabled then please consider implement this optimization, since it
 	<string name="_sys_menu_set_title_homepage"><![CDATA[Content modules]]></string>
 	<string name="_sys_menu_set_title_toolbar_member"><![CDATA[Toolbar Member]]></string>
 	<string name="_sys_menu_set_title_toolbar_site"><![CDATA[Toolbar Site]]></string>
-	<string name="_sys_menu_template_title_buttons_hor"><![CDATA[Horizontal Buttons]]></string>
+	<string name="_sys_menu_template_title_buttons_hor"><![CDATA[Horizontal Buttons]]></string>	
 	<string name="_sys_menu_template_title_buttons_ver"><![CDATA[Vertical Buttons]]></string>
 	<string name="_sys_menu_template_title_floating_blocks"><![CDATA[Floating Blocks]]></string>
 	<string name="_sys_menu_template_title_floating_blocks_big"><![CDATA[Floating Blocks Big]]></string>
 	<string name="_sys_menu_template_title_footer"><![CDATA[Footer Links]]></string>
 	<string name="_sys_menu_template_title_hor"><![CDATA[Horizontal Links]]></string>
+	<string name="_sys_menu_template_title_icon_buttons_hor"><![CDATA[Horizontal Icon Buttons]]></string>
 	<string name="_sys_menu_template_title_inline"><![CDATA[Inline]]></string>
 	<string name="_sys_menu_template_title_inline_sbtn"><![CDATA[Inline ('special' buttons)]]></string>
 	<string name="_sys_menu_template_title_interactive_vertical"><![CDATA[Interactive Vertical Links]]></string>
@@ -2071,6 +2081,7 @@ If it is not enabled then please consider implement this optimization, since it
 	<string name="_sys_menu_title_profile_stats"><![CDATA[Profile Stats]]></string>
 	<string name="_sys_menu_title_rss"><![CDATA[RSS]]></string>
 	<string name="_sys_menu_title_set_acl_level"><![CDATA[ACL Levels]]></string>
+	<string name="_sys_menu_title_social_sharing"><![CDATA[Social Sharing]]></string>
 	<string name="_sys_menu_title_submenu"><![CDATA[Site Submenu]]></string>
 	<string name="_sys_menu_title_toolbar_member"><![CDATA[Member Toolbar]]></string>
 	<string name="_sys_menu_title_toolbar_site"><![CDATA[Site Toolbar]]></string>

+ 21 - 0
modules/boonex/ocean/data/template/system/scripts/BxTemplMenuSocialSharing.php

@@ -0,0 +1,21 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    UnaTemplate UNA Template Classes
+ * @{
+ */
+
+/**
+ * @see BxDolMenu
+ */
+class BxTemplMenuSocialSharing extends BxBaseMenuSocialSharing
+{
+    public function __construct ($aObject, $oTemplate = false)
+    {
+        parent::__construct ($aObject, $oTemplate);
+    }
+}
+
+/** @} */

+ 21 - 0
modules/boonex/protean/data/template/system/scripts/BxTemplMenuSocialSharing.php

@@ -0,0 +1,21 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    UnaTemplate UNA Template Classes
+ * @{
+ */
+
+/**
+ * @see BxDolMenu
+ */
+class BxTemplMenuSocialSharing extends BxBaseMenuSocialSharing
+{
+    public function __construct ($aObject, $oTemplate = false)
+    {
+        parent::__construct ($aObject, $oTemplate);
+    }
+}
+
+/** @} */

+ 11 - 0
modules/boonex/russian/data/langs/system/ru.xml

@@ -1986,6 +1986,10 @@
 	<string name="_sys_menu_item_title_set_acl_level"><![CDATA[Назначить членство]]></string>
 	<string name="_sys_menu_item_title_studio"><![CDATA[Студия]]></string>
 	<string name="_sys_menu_item_title_subscriptions"><![CDATA[Подписки]]></string>
+	<string name="_sys_menu_item_title_social_sharing_facebook"><![CDATA[Поделиться в Facebook]]></string>
+    <string name="_sys_menu_item_title_social_sharing_googleplus"><![CDATA[Поделиться в Google Plus]]></string>
+    <string name="_sys_menu_item_title_social_sharing_twitter"><![CDATA[Поделиться в Twitter]]></string>
+    <string name="_sys_menu_item_title_social_sharing_pinterest"><![CDATA[Поделиться в Pinterest]]></string>
 	<string name="_sys_menu_item_title_system_about"><![CDATA[Об...]]></string>
 	<string name="_sys_menu_item_title_system_privacy"><![CDATA[Конфиденциальность]]></string>
 	<string name="_sys_menu_item_title_system_switch_language"><![CDATA[Язык]]></string>
@@ -2017,6 +2021,10 @@
 	<string name="_sys_menu_item_title_system_set_acl_level"><![CDATA[Назначить членство]]></string>
 	<string name="_sys_menu_item_title_system_studio"><![CDATA[Студия]]></string>
 	<string name="_sys_menu_item_title_system_subscriptions"><![CDATA[Подписки]]></string>
+	<string name="_sys_menu_item_title_system_social_sharing_facebook"><![CDATA[Поделиться в Facebook]]></string>
+    <string name="_sys_menu_item_title_system_social_sharing_googleplus"><![CDATA[Поделиться в Google Plus]]></string>
+    <string name="_sys_menu_item_title_system_social_sharing_twitter"><![CDATA[Поделиться в Twitter]]></string>
+    <string name="_sys_menu_item_title_system_social_sharing_pinterest"><![CDATA[Поделиться в Pinterest]]></string>
 	<string name="_sys_menu_set_title_account"><![CDATA[Аккаунт]]></string>
 	<string name="_sys_menu_set_title_account_dashboard_manage_tools"><![CDATA[Инструменты управления Панелью Аккаунта]]></string>
 	<string name="_sys_menu_set_title_account_settings"><![CDATA[Настройки Аккаунта]]></string>
@@ -2028,6 +2036,7 @@
 	<string name="_sys_menu_set_title_cmts_item_manage"><![CDATA[Управление Комментарием]]></string>
 	<string name="_sys_menu_set_title_switch_language"><![CDATA[Переключить Язык]]></string>
 	<string name="_sys_menu_set_title_switch_template"><![CDATA[Переключить Тему]]></string>
+	<string name="_sys_menu_set_title_sys_social_sharing"><![CDATA[Социальное распространение]]></string>
 	<string name="_sys_menu_set_title_footer"><![CDATA[Футер]]></string>
 	<string name="_sys_menu_set_title_profile_create_links"><![CDATA[Создать Ссылки Профиля]]></string>
 	<string name="_sys_menu_set_title_profile_stats"><![CDATA[Статистика Профиля]]></string>
@@ -2041,6 +2050,7 @@
 	<string name="_sys_menu_template_title_floating_blocks_big"><![CDATA[Подвесные Блоки - Большие]]></string>
 	<string name="_sys_menu_template_title_footer"><![CDATA[Футер - Ссылки]]></string>
 	<string name="_sys_menu_template_title_hor"><![CDATA[Горизонтальные Ссылки]]></string>
+	<string name="_sys_menu_template_title_icon_buttons_hor"><![CDATA[Горизонтальные Кнопки с Иконками]]></string>
 	<string name="_sys_menu_template_title_inline"><![CDATA[В тексте]]></string>
 	<string name="_sys_menu_template_title_inline_sbtn"><![CDATA[В тексте ('спец' кнопки)]]></string>
 	<string name="_sys_menu_template_title_interactive_vertical"><![CDATA[Интерактивные Вертикальные Ссылки]]></string>
@@ -2069,6 +2079,7 @@
 	<string name="_sys_menu_title_profile_stats"><![CDATA[Профиль - Статистика]]></string>
 	<string name="_sys_menu_title_rss"><![CDATA[RSS]]></string>
 	<string name="_sys_menu_title_set_acl_level"><![CDATA[Уровни доступа]]></string>
+	<string name="_sys_menu_title_social_sharing"><![CDATA[Социальное распространение]]></string>
 	<string name="_sys_menu_title_submenu"><![CDATA[Подменю Сайта]]></string>
 	<string name="_sys_menu_title_toolbar_member"><![CDATA[Пользователь - Панель Инструментов]]></string>
 	<string name="_sys_menu_title_toolbar_site"><![CDATA[Сайт - Панель Инструментов]]></string>

+ 15 - 0
modules/boonex/timeline/classes/BxTimelineMenuItemShare.php

@@ -69,6 +69,21 @@ class BxTimelineMenuItemShare extends BxTemplMenu
     	));
     }
 
+    public function getMenuItems ()
+    {
+        $aItems = parent::getMenuItems();
+
+        $oSocial = BxDolMenu::getObjectInstance('sys_social_sharing');
+        $oSocial->addMarkers(array(
+            'id' => $this->_iEvent,
+        	'module' => $this->_oModule->_oConfig->getName(),
+        	'url' => $this->_oModule->_oConfig->getItemViewUrl($this->_aEvent),
+        	'title' => $this->_aEvent['title'],
+        ));
+
+        return array_merge($aItems, $oSocial->getMenuItems());
+    }
+
     /**
      * Check if menu items is visible.
      * @param $a menu item array

+ 6 - 0
template/menu_icon_buttons_hor.html

@@ -0,0 +1,6 @@
+<ul class="bx-menu-btns-hor bx-menu-object-__object__ bx-clearfix">
+    <bx_repeat:menu_items><li class="bx-def-margin-thd-topbottom __class_add__"><a class="bx-btn bx-def-margin-right" href="__link__" target="__target__" onclick="__onclick__" <bx_if:title>title="__title_attr__"</bx_if:title>>
+        <bx_if:image><i style="background-image:url(__icon_url__)"></i></bx_if:image>
+        <bx_if:icon><i class="sys-icon __icon__"></i></bx_if:icon>
+    </a></li></bx_repeat:menu_items>
+</ul>

+ 4 - 1
template/scripts/BxBaseMenu.php

@@ -132,7 +132,10 @@ class BxBaseMenu extends BxDolMenu
 		);
 		$a['bx_if:title'] = array (
 			'condition' => (bool)$a['title'],
-			'content' => array('title' => $a['title']),
+			'content' => array(
+				'title' => $a['title'],
+		        'title_attr' => $a['title_attr']
+		    ),
 		);
 		$a['bx_if:addon'] = array (
 			'condition' => (bool)$mixedAddon,

+ 106 - 0
template/scripts/BxBaseMenuSocialSharing.php

@@ -0,0 +1,106 @@
+<?php defined('BX_DOL') or die('hack attempt');
+/**
+ * Copyright (c) UNA, Inc - https://una.io
+ * MIT License - https://opensource.org/licenses/MIT
+ *
+ * @defgroup    UnaBaseView UNA Base Representation Classes
+ * @{
+ */
+
+/**
+ * Menu for content social sharing
+ */
+class BxBaseMenuSocialSharing extends BxTemplMenu
+{
+    protected $_aNeedEncode = array(
+    	'url' => 'url_encoded',
+    	'title' => 'title_encoded'
+    );
+
+    public function __construct ($aObject, $oTemplate)
+    {
+        parent::__construct ($aObject, $oTemplate);
+
+        $sLang = BxDolLanguages::getInstance()->getCurrentLanguage();
+        $this->addMarkers(array (
+            'lang' => $sLang,
+            'locale' => $this->_getLocaleFacebook($sLang),
+        ));
+    }
+
+    public function addMarkers($a)
+    {
+        if(!empty($this->_aNeedEncode) && is_array($this->_aNeedEncode))
+            foreach($this->_aNeedEncode as $sKey1 => $sKey2)
+                if(array_key_exists($sKey1, $a))
+                    $a[$sKey2] = rawurlencode($a[$sKey1]);
+
+        return parent::addMarkers($a); 
+    }
+
+    public function getCode()
+    {
+        if (!isset($this->_aObject['menu_items']))
+            $this->_aObject['menu_items'] = $this->getMenuItemsRaw();
+
+        // alert
+        $sOverrideOutput = null;
+        $oAlert = new BxDolAlerts('system', 'social_sharing_display', '', '', array (
+        	'markers' => &$this->_aMarkers,
+            'buttons' => &$this->_aObject['menu_items'],
+            'override_output' => &$sOverrideOutput,
+        ));
+        $oAlert->alert();
+
+        // return custom code if there is one
+        if ($sOverrideOutput)
+            return $sOverrideOutput;
+
+        //return empty string of there is no buttons
+        if (empty($this->_aObject['menu_items']))
+            return '';
+
+        return parent::getCode();
+    }
+    
+	/**
+     * Get most facebook locale for provided language code.
+     * @param $sLang lang code
+     * @return locale string or empty string if no lacale is found
+     */
+    protected function _getLocaleFacebook ($sLang)
+    {
+        $aLocales = $this->_getLocalesFacebook();
+        if (!$aLocales || !isset($aLocales[$sLang]))
+            return '';
+        return $aLocales[$sLang];
+    }
+
+    /**
+     * Get facebook locales
+     * @return locales array, lang is array key and locale is array value
+     */
+    protected function _getLocalesFacebook ()
+    {
+        $oCache = $this->_oQuery->getDbCacheObject();
+        $sCacheKey = $this->_oQuery->genDbCacheKey('sys_social_sharing_locales_fb');
+        $aData = $oCache->getData($sCacheKey);
+        if (null === $aData) {
+            $sXML = bx_file_get_contents ('http://www.facebook.com/translations/FacebookLocales.xml');
+            if (!$sXML)
+                return false;
+            $xmlLocates = new SimpleXMLElement($sXML);
+            $aData = array ();
+            foreach ($xmlLocates->locale as $xmlLocale) {
+                $sLocale = (string)($xmlLocale->codes->code->standard->representation);
+                list ($sLang,) = explode('_', $sLocale);
+                if (!isset($aData[$sLang]))
+                    $aData[$sLang] = $sLocale;
+            }
+            $oCache->setData ($sCacheKey, $aData);
+        }
+        return $aData;
+    }
+}
+
+/** @} */