You are here

function _facebook_tracking_pixel_roles in Facebook Tracking Pixel 8

Same name and namespace in other branches
  1. 7 facebook_tracking_pixel.module \_facebook_tracking_pixel_roles()

Based on visibility setting this function an integer. Anything greater than 0 is trackable.

Parameters

object $account: user object

Return value

bool

1 call to _facebook_tracking_pixel_roles()
facebook_tracking_pixel_page_build in ./facebook_tracking_pixel.module
Implements hook_page_build().

File

./facebook_tracking_pixel.module, line 539
facebook_tracking_pixel.module Facebook Tracking Module.

Code

function _facebook_tracking_pixel_roles($account) {

  // Pull role information from database.
  $sql = 'select * from {variable} where name like :name';
  $result = db_query($sql, [
    ':name' => 'facebook_tracking_pixel_roles_%',
  ])
    ->fetchAll();

  // Pull the visibility setting. A value of 1 means the roles are inverted in
  // the selection UI.
  $visibility = variable_get('facebook_tracking_pixel_visibility_roles', 0);

  // If the selection is inverted we enable visibility. Otherwise default is
  // no tracking.
  $enabled = $visibility;
  $roles = [];

  // Build array of role information.
  if (!empty($result)) {
    foreach ($result as $item) {
      if ($item->value == 'i:1;') {
        $roles[$item->name] = 1;
      }
      elseif ($item->value == 'i:0;') {
        $roles[$item->name] = 0;
      }
    }
  }
  if (array_sum($roles) > 0) {

    // One or more roles are selected.
    foreach ($account->roles as $rid => $rname) {

      // Fixup the role name.
      $rname = str_replace(' ', '_', $rname);
      $rname = 'facebook_tracking_pixel_roles_' . $rname;

      // Is the current user a member of one of these roles?
      if (isset($roles[$rname]) && $roles[$rname] == 1) {

        // Current user is a member of a role that should be tracked/excluded
        // from tracking. The visibility variable is used and inverted. This
        // accounts for the settings in the UI of tracking only selected or
        // tracking all but selected.
        $enabled = !$visibility;
        break;
      }
    }
  }
  return $enabled;
}