You are here

function _likebtn_get_markup in Like Button 7

Same name and namespace in other branches
  1. 8.2 likebtn.module \_likebtn_get_markup()

Getting LikeBtn markup.

5 calls to _likebtn_get_markup()
likebtn_entity_view in ./likebtn.module
Implements hook_entity_view().
likebtn_field_formatter_view in ./likebtn.module
Implements hook_field_formatter_view().
likebtn_filter_process in ./likebtn.module
Process callback for callback_filter_process.
_likebtn_get_views_widget_markup in ./likebtn.module
Get LikeBtn for view.
_likebtn_settings_form in ./likebtn.module
Custom function returning settings form.

File

./likebtn.module, line 318
Implements the LikeBtn module.

Code

function _likebtn_get_markup($element_name, $element_id, $values = NULL, $wrap = TRUE, $include_entity_data = TRUE) {
  $prepared_settings = array();

  // Run sunchronization.
  $likebtn = new LikeBtn();
  $likebtn
    ->runSyncVotes();
  $settings = unserialize(LIKEBTN_SETTINGS);
  $data = '';
  if ($element_name && $element_id) {
    $data .= 'data-identifier="' . $element_name . '_' . $element_id . '"';
  }

  // Website subdirectory.
  if (variable_get('likebtn_settings_subdirectory', '')) {
    $data .= ' data-subdirectory="' . variable_get('likebtn_settings_subdirectory', '') . '" ';
  }
  $data .= ' data-engine="drupal" ';
  if (defined('VERSION')) {
    $data .= ' data-engine_v="' . VERSION . '" ';
  }
  $data .= ' data-plugin_v="' . LIKEBTN_VERSION . '" ';
  foreach ($settings as $option_name => $option_info) {
    if ($values) {

      // For field.
      if (isset($values['likebtn_settings_' . $option_name])) {
        $option_value = $values['likebtn_settings_' . $option_name];
      }
      elseif (isset($values[$option_name])) {
        $option_value = $values[$option_name];
      }
      else {
        $option_value = '';
      }
    }
    else {
      if (function_exists('variable_get_value')) {
        $option_value = variable_get_value('likebtn_settings_' . $option_name, array(
          'default' => '',
        ));
      }
      else {
        $option_value = variable_get('likebtn_settings_' . $option_name, '');
      }
    }
    $option_value_prepared = _likebtn_prepare_option($option_name, $option_value);
    $prepared_settings[$option_name] = $option_value_prepared;

    // Do not add option if it has default value.
    if ($option_value !== '' && $option_value != $settings[$option_name]['default']) {
      $data .= ' data-' . $option_name . '="' . $option_value_prepared . '" ';
    }
  }

  // Add item options.
  if ($include_entity_data) {
    if (empty($prepared_settings['item_url']) || empty($prepared_settings['item_title'])) {
      $entity_list = array();
      $entity = NULL;
      $entity_url = '';
      $entity_title = '';
      $entity_date = '';

      // Ignore dummy entity name.
      if (entity_get_info($element_name)) {

        // For fields.
        $parent_entity_id = preg_replace('/_.*/', '', $element_id);
        $entity_list = entity_load($element_name, array(
          $parent_entity_id,
        ));
      }
      if (!empty($entity_list)) {
        $entity = array_shift($entity_list);
      }
      if ($entity && (isset($entity->title) || isset($entity->subject))) {

        // URL.
        if (empty($prepared_settings['item_url'])) {
          $entity_url_object = entity_uri($element_name, $entity);
          if (!empty($entity_url_object['path'])) {
            global $base_url;
            $entity_url = $base_url . '/' . $entity_url_object['path'];
          }
        }

        // Title.
        if (empty($prepared_settings['item_title'])) {
          if (isset($entity->title)) {
            $entity_title = $entity->title;
          }
          elseif (isset($entity->subject)) {
            $entity_title = $entity->subject;
          }
        }

        // Date.
        if (empty($prepared_settings['item_date'])) {
          if (isset($entity->created)) {
            $entity_date = date("c", $entity->created);
          }
        }
      }
      if ($entity_url) {
        $data .= ' data-item_url="' . $entity_url . '" ';
      }
      if ($entity_title) {
        $entity_title = htmlspecialchars($entity_title);
        $data .= ' data-item_title="' . $entity_title . '" ';
      }
      if ($entity_date) {
        $data .= ' data-item_date="' . $entity_date . '" ';
      }
    }
  }

  //drupal_add_js("//w.likebtn.com/js/w/widget.js", array('type' => 'external', 'scope' => 'footer'));
  $widget_script = <<<WIDGET_SCRIPT
(function(d, e, s) {a = d.createElement(e);m = d.getElementsByTagName(e)[0];a.async = 1;a.src = s;m.parentNode.insertBefore(a, m)})(document, 'script', '//w.likebtn.com/js/w/widget.js'); if (typeof(LikeBtn) != "undefined") { LikeBtn.init(); }
WIDGET_SCRIPT;
  drupal_add_js($widget_script, array(
    'type' => 'inline',
    'scope' => 'footer',
  ));
  $public_url = _likebtn_public_url();
  $markup = <<<MARKUP
<!-- LikeBtn.com BEGIN -->
<span class="likebtn-wrapper" {<span class="php-variable">$data</span>}></span>
<script type="text/javascript">if (typeof(LikeBtn) != "undefined") { LikeBtn.init(); }</script>
<!-- LikeBtn.com END -->
MARKUP;

  // HTML before.
  $html_before = '';
  if (isset($values['likebtn_html_before'])) {
    $html_before = $values['likebtn_html_before'];
  }
  else {
    $html_before = variable_get('likebtn_html_before');
  }
  if (trim($html_before)) {
    $markup = $html_before . $markup;
  }

  // HTML after.
  $html_after = '';
  if (isset($values['likebtn_html_after'])) {
    $html_after = $values['likebtn_html_after'];
  }
  else {
    $html_after = variable_get('likebtn_html_after');
  }
  if (trim($html_after)) {
    $markup = $markup . $html_after;
  }

  // Alignment.
  if ($wrap) {
    $alignment = '';
    if (isset($values['likebtn_alignment'])) {
      $alignment = $values['likebtn_alignment'];
    }
    else {
      $alignment = variable_get('likebtn_alignment');
    }
    if ($alignment == 'right') {
      $markup = '<div style="text-align:right" class="likebtn_container">' . $markup . '</div>';
    }
    elseif ($alignment == 'center') {
      $markup = '<div style="text-align:center" class="likebtn_container">' . $markup . '</div>';
    }
    else {
      $markup = '<div class="likebtn_container">' . $markup . '</div>';
    }
  }
  return $markup;
}