function _facebook_tracking_pixel_roles in Facebook Tracking Pixel 8
Same name and namespace in other branches
- 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;
}