You are here

linkedin_insights_tag.module in LinkedIn Insights Tag 7

Same filename and directory in other branches
  1. 8 linkedin_insights_tag.module

File

linkedin_insights_tag.module
View source
<?php

/**
 * Implements hook_permission().
 */
function linkedin_insights_tag_permission() {
  return array(
    'administer linkedin insights tag' => array(
      'title' => t('Administer the LinkedIn Insight Tag'),
      'description' => t('Perform maintenance tasks for the LinkedIn Insight Tag.'),
    ),
  );
}

/**
 * Implements hook_menu().
 */
function linkedin_insights_tag_menu() {
  $items['admin/config/system/linkedin_insights_tag'] = array(
    'title' => 'LinkedIn Insight Tag',
    'description' => 'Configure tracking behavior for the LinkedIn Insight Tag.',
    'page callback' => 'drupal_get_form',
    'page arguments' => array(
      'linkedin_insights_tag_admin_settings_form',
    ),
    'access arguments' => array(
      'administer linkedin insights tag',
    ),
    'type' => MENU_NORMAL_ITEM,
    'file' => 'linkedin_insights_tag.admin.inc',
  );
  return $items;
}

/**
 * Implements hook_page_build().
 */
function linkedin_insights_tag_page_build(&$page) {
  global $user;
  $partner_id = check_plain(variable_get('linkedin_insights_tag__partner_id', ''));
  $noscript = (bool) check_plain(variable_get('linkedin_insights_tag__image_only', 0));

  // Validate Partner ID and whether or not the current user should be tracked.
  if (preg_match('/^\\d+$/', $partner_id) && linkedin_insights_tag_role_tracking($user)) {
    if (!$noscript) {
      $path = drupal_get_path('module', 'linkedin_insights_tag');
      $attached =& $page['page_bottom']['linkedin_insights_tag']['#attached'];
      $attached['js'][] = array(
        'type' => 'setting',
        'data' => array(
          'linkedinInsightsTag' => array(
            'partnerId' => $partner_id,
          ),
        ),
      );
      $attached['js'][$path . '/js/linkedin_insights_tag.js'] = array(
        'type' => 'file',
        'scope' => 'footer',
      );
      $attached['js'][] = array(
        'type' => 'external',
        'data' => 'https://snap.licdn.com/li.lms-analytics/insight.min.js',
        'scope' => 'footer',
        'weight' => 1,
      );
    }
    $noscript = [
      '#theme' => 'html_tag',
      '#tag' => 'noscript',
      '#value' => '<img height="1" width="1" style="display:none;" alt="" src="https://dc.ads.linkedin.com/collect/?pid=' . $partner_id . '&fmt=gif" />',
    ];
    $page['page_bottom']['noscript'] = [
      '#weight' => 3,
      '#markup' => render($noscript),
    ];
  }
}

/**
 * Determine the current user should be tracked based on roles selected.
 */
function linkedin_insights_tag_role_tracking($account) {
  $enabled = FALSE;
  $roles = variable_get('linkedin_insights_tag__roles', array());

  // Filter roles against current user if any roles were selected.
  if (array_sum($roles) > 0) {
    foreach (array_keys($account->roles) as $rid) {

      // Determine if the current user isa member of one of the enabled roles.
      if (isset($roles[$rid]) && $rid == $roles[$rid]) {
        $enabled = TRUE;
        break;
      }
    }
  }
  else {

    // No roles were selected for tracking so all roles will be tracked.
    $enabled = TRUE;
  }
  return $enabled;
}

Functions

Namesort descending Description
linkedin_insights_tag_menu Implements hook_menu().
linkedin_insights_tag_page_build Implements hook_page_build().
linkedin_insights_tag_permission Implements hook_permission().
linkedin_insights_tag_role_tracking Determine the current user should be tracked based on roles selected.