Commit 5aa2efd9 authored by Steven Ayers's avatar Steven Ayers
Browse files

Issue #1220744: Exclude users with role

parent ef2a047f
Loading
Loading
Loading
Loading

composer.json

0 → 100644
+8 −0
Original line number Diff line number Diff line
{
  "name": "drupal/visitors",
  "description": "Visitors is a native drupal web analytics software.",
  "type": "drupal-module",
  "license": "GPL-2.0+",
  "require": {
  }
}
+14 −4
Original line number Diff line number Diff line
@@ -12,6 +12,10 @@
 *   The form.
 */
function visitors_admin_settings() {
  $roles = [];
  foreach (user_roles() as $role) {
    $roles[$role] = $role;
  }
  $form = array();

  // Statistics settings.
@@ -23,11 +27,17 @@ function visitors_admin_settings() {
    '#description' => t('Visitors statistics settings'),
  );

  $form['visitors_statistics']['visitors_exclude_administer_users'] = array(
  $form['visitors_statistics']['visitors_exclude_user1'] = array(
    '#type' => 'checkbox',
    '#title' => t('Exclude administer users from statistics'),
    '#default_value' => variable_get('visitors_exclude_administer_users', 0),
    '#description' => t('Exclude hits of administer users from statistics.'),
    '#title' => t('Exclude user1 from statistics'),
    '#default_value' => variable_get('visitors_exclude_user1', 0),
    '#description' => t('Exclude hits of user1 from statistics.'),
  );
  $form['visitors_statistics']['visitors_excluded_roles'] = array(
    '#type' => 'checkboxes',
    '#title' => t('Excluded Roles'),
    '#options' => $roles,
    '#default_value' => variable_get('visitors_excluded_roles', []),
  );

  $form['visitors_statistics']['visitors_lines_per_page'] = array(
+45 −34
Original line number Diff line number Diff line
@@ -135,10 +135,22 @@ function visitors_exit() {
  drupal_load('module', 'user');

  global $user;
  $not_admin = !in_array('administrator', $user->roles);
  $log_admin = !variable_get('visitors_exclude_administer_users', 0);

  if ($log_admin || $not_admin) {
  $exclude_user1 = variable_get('visitors_exclude_user1', 0);
  $excluded_roles = array_values(variable_get('visitors_excluded_roles', []));

  $skip_because_user1 = $user->uid == 1 && $exclude_user1;
  if ($skip_because_user1) {
    return NULL;
  }

  foreach ($excluded_roles as $role) {
    $skip_because_role = in_array($role, $user->roles, TRUE);
    if ($skip_because_role) {
      return NULL;
    }
  }

  $ip_str = visitors_get_ip_str();

  $fields = array(
@@ -172,4 +184,3 @@ function visitors_exit() {
    ->fields($fields)
    ->execute();
}
}
+12 −1
Original line number Diff line number Diff line
@@ -18,7 +18,7 @@ function visitors_install() {
function visitors_uninstall() {
  drupal_uninstall_schema('visitors');

  variable_del('visitors_exclude_administer_users');
  variable_del('visitors_excluded_roles');
  variable_del('visitors_chart_height');
  variable_del('visitors_chart_width');
  variable_del('visitors_flush_log_timer');
@@ -110,3 +110,14 @@ function visitors_update_7013() {
    )
  );
}

/**
 * Allow exclusion by role.
 */
function visitors_update_7110() {
  $exclude = variable_get('visitors_exclude_administer_users', 0);
  if ($exclude) {
    variable_set('visitors_excluded_roles', ['administrator']);
  }
  variable_del('visitors_exclude_administer_users');
}