t('Disabled'), self::WIDGET_TYPE_COMPACT_BUTTON => t('Compact button'), self::WIDGET_TYPE_LARGE_BUTTON => t('Large button'), self::WIDGET_TYPE_TOOLBOX => t('Toolbox'), self::WIDGET_TYPE_SHARECOUNT => t('Sharecount'), ); } public static function getBlockWidgetType() { return variable_get(self::BLOCK_WIDGET_TYPE_KEY, self::WIDGET_TYPE_COMPACT_BUTTON); } public static function getWidgetMarkup($widgetType = '', $entity = NULL) { $href = 'href'; switch ($widgetType) { case self::WIDGET_TYPE_LARGE_BUTTON: $markup = ''
          . t('Bookmark and Share')
          . '' . self::getWidgetScriptElement(); break; case self::WIDGET_TYPE_COMPACT_BUTTON: $markup = ''
          . t('Bookmark and Share')
          . '' . self::getWidgetScriptElement(); break; case self::WIDGET_TYPE_TOOLBOX: $markup = '
' . t('Share') . '|' . '' . '' . '' . '
' . self::getWidgetScriptElement(); break; case self::WIDGET_TYPE_SHARECOUNT: $markup = '
' . self::getWidgetScriptElement(); break; default: $markup = ''; break; } return $markup; } public static function getProfileId() { return check_plain(variable_get(AddThis::PROFILE_ID_KEY)); } public static function getServicesCssUrl() { return check_url(variable_get(AddThis::SERVICES_CSS_URL_KEY, self::DEFAULT_SERVICES_CSS_URL)); } public static function getServicesJsonUrl() { return check_url(variable_get(AddThis::SERVICES_JSON_URL_KEY, self::DEFAULT_SERVICES_JSON_URL)); } public static function getServiceOptions() { return self::getServices(); } public static function getEnabledServiceOptions() { return self::getEnabledServices(); } public static function addStylesheets() { drupal_add_css(self::getServicesCssUrl(), 'external'); drupal_add_css(self::getAdminCssFilePath(), 'file'); } public static function addConfigurationOptionsJs() { $enabledServices = self::getServiceNamesAsCommaSeparatedString(); drupal_add_js( "var addthis_config = {services_compact: '" . $enabledServices . "more'" . self::getUiHeaderColorConfigurationOptions() . '}', 'inline' ); } public static function areLargeIconsEnabled() { return variable_get(self::LARGE_ICONS_KEY, FALSE); } public static function getUiHeaderColor() { return check_plain(variable_get(self::UI_HEADER_COLOR_KEY)); } public static function getUiHeaderBackgroundColor() { return check_plain(variable_get(self::UI_HEADER_BACKGROUND_COLOR_KEY)); } private static function getUiHeaderColorConfigurationOptions() { $configurationOptions = ','; $uiHeaderColor = self::getUiHeaderColor(); $uiHeaderBackgroundColor = self::getUiHeaderBackgroundColor(); if ($uiHeaderColor != NULL) { $configurationOptions .= "ui_header_color: '$uiHeaderColor'"; } if ($uiHeaderBackgroundColor != NULL) { $configurationOptions .= ", ui_header_background: '$uiHeaderBackgroundColor'"; } return $configurationOptions; } private static function getLargeButtonsClass() { return self::areLargeIconsEnabled() ? ' addthis_32x32_style ' : ''; } private static function getServiceNamesAsCommaSeparatedString() { $enabledServiceNames = array_values(self::getEnabledServices()); $enabledServicesAsCommaSeparatedString = ''; foreach ($enabledServiceNames as $enabledServiceName) { if ($enabledServiceName != '0') { $enabledServicesAsCommaSeparatedString .= $enabledServiceName . ','; } } return $enabledServicesAsCommaSeparatedString; } private static function getAdminCssFilePath() { return drupal_get_path('module', self::MODULE_NAME) . '/' . self::ADMIN_CSS_FILE; } private static function getServices() { $rows = array(); $json = new Json(); $services = $json->decode(self::getServicesJsonUrl()); if ($services != NULL) { foreach ($services['data'] AS $service) { $serviceCode = check_plain($service['code']); $serviceName = check_plain($service['name']); $rows[$serviceCode] = ' ' . $serviceName; } } return $rows; } private static function getEnabledServices() { return variable_get(self::ENABLED_SERVICES_KEY, array()); } public static function getBaseBookmarkUrl() { return check_url(variable_get(self::BOOKMARK_URL_KEY, self::DEFAULT_BOOKMARK_URL)); } private static function getFullBookmarkUrl() { return check_url(self::getBaseBookmarkUrl() . self::getProfileIdQueryParameterPrefixedWithAmp()); } public static function getBaseWidgetJsUrl() { return check_url(variable_get(self::WIDGET_JS_URL_KEY, self::DEFAULT_WIDGET_JS_URL)); } private static function getProfileIdQueryParameter($prefix) { $profileId = self::getProfileId(); return $profileId != NULL ? $prefix . self::PROFILE_ID_QUERY_PARAMETER . '=' . $profileId : ''; } private static function getProfileIdQueryParameterPrefixedWithAmp() { return self::getProfileIdQueryParameter('&'); } private static function getProfileIdQueryParameterPrefixedWithHash() { return self::getProfileIdQueryParameter('#'); } private static function getAddThisAttributesMarkup($entity) { if (is_object($entity)) { return self::getAddThisTitleAttributeMarkup($entity) . ' '; } return ''; } private static function getAddThisTitleAttributeMarkup($entity) { return MarkupGenerator::generateAttribute(self::TITLE_ATTRIBUTE, drupal_get_title() . ' - ' . check_plain($entity->title)); } private static function getWidgetScriptElement() { return ''; } private static function getWidgetUrl() { return check_url(self::getBaseWidgetJsUrl() . self::getProfileIdQueryParameterPrefixedWithHash()); } }