You are here

function sharethis_node_view in ShareThis 7.2

Same name and namespace in other branches
  1. 8.2 sharethis.module \sharethis_node_view()
  2. 7 sharethis.module \sharethis_node_view()

Implements hook_node_view().

File

./sharethis.module, line 69
A module that adds one of the ShareThis widget to your website.

Code

function sharethis_node_view($node, $view_mode, $langcode) {

  // Don't display if the user is currently searching, or in the RSS feed.
  switch ($view_mode) {
    case 'search_result':
    case 'search_index':
    case 'rss':
      return;
  }

  // First get all of the options for the sharethis widget from the database:
  $data_options = sharethis_get_options_array();

  // Get the full path to insert into the Share Buttons.
  $mPath = url('node/' . $node->nid, array(
    'absolute' => TRUE,
  ));
  $mTitle = $node->title;

  // Check where we want to display the ShareThis widget.
  $location = variable_get('sharethis_location', array(
    'content' => 'content',
  ));
  if (in_array('content', $location, TRUE)) {
    $enabled_types = $data_options['sharethis_node_types'];
    if (isset($enabled_types[$node->type]) && $enabled_types[$node->type] === $node->type) {
      $display_settings = field_extra_fields_get_display('node', $node->type, $view_mode);
      if (isset($display_settings['sharethis']) && $display_settings['sharethis']['visible']) {
        $node->content['sharethis'] = array(
          // Wrap it in a div.
          '#tag' => 'div',
          '#type' => 'html_tag',
          '#attributes' => array(
            'class' => 'sharethis-buttons',
          ),
          '#value' => theme('sharethis', array(
            'data_options' => $data_options,
            'm_path' => $mPath,
            'm_title' => $mTitle,
          )),
          '#weight' => intval(variable_get('sharethis_weight', 10)),
        );

        // Include necessary js files.
        sharethis_include_js();
      }
    }
  }
  if (in_array('links', $location, TRUE)) {
    $enabled_view_modes = variable_get('sharethis_' . $node->type . '_options', array());
    if (isset($enabled_view_modes[$view_mode]) && $enabled_view_modes[$view_mode]) {
      $links['sharethis'] = array(
        'html' => TRUE,
        'title' => theme('sharethis', array(
          'data_options' => $data_options,
          'm_path' => $mPath,
          'm_title' => $mTitle,
        )),
        '#attributes' => array(
          'class' => array(
            'sharethis-buttons',
          ),
        ),
      );
      $node->content['links']['sharethis'] = array(
        '#theme' => 'links',
        '#links' => $links,
        '#attributes' => array(
          'class' => array(
            'links',
            'inline',
          ),
        ),
        // Wrap it in a div.
        '#tag' => 'div',
        '#type' => 'html_tag',
        '#weight' => intval(variable_get('sharethis_weight', 10)),
      );

      // Include necessary js files.
      sharethis_include_js();
    }
  }
}