You are here

function opigno_statistics_app_exit in Opigno Statistics App 7

Implements hook_exit().

Gathers statistics for group content viewed

File

./opigno_statistics_app.module, line 242
Module file. Defines module hooks.

Code

function opigno_statistics_app_exit() {
  global $user;
  drupal_bootstrap(DRUPAL_BOOTSTRAP_VARIABLES);
  if ($user->uid) {
    $month_year = mktime(0, 0, 0, date('m', time()), 1);
    if (arg(0) == 'node' && is_numeric(arg(1))) {

      //Handle group context statistics
      if (isset($_SESSION['og_context']['gid']) && (opigno_statistics_app_node_id_og_group_content($_SESSION['og_context']['gid'], arg(1)) || $_SESSION['og_context']['gid'] == arg(1))) {
        db_merge('opigno_statistics_user_group')
          ->key(array(
          'nid' => arg(1),
          'group_nid' => $_SESSION['og_context']['gid'],
          'uid' => $user->uid,
        ))
          ->fields(array())
          ->expression('page_views', 'page_views + 1')
          ->execute();
        opigno_statistics_group_insert($_SESSION['og_context']['gid'], arg(1), $month_year);
      }
    }

    //User statistics
    $month_year = mktime(0, 0, 0, date('m', time()), 1);
    db_merge('opigno_statistics_user')
      ->key(array(
      'uid' => $user->uid,
      'month_year' => $month_year,
    ))
      ->fields(array())
      ->expression('page_views', 'page_views + 1')
      ->execute();

    //User classes statistics
    $query = db_query('SELECT gid FROM {og_membership} ogm
              INNER JOIN {node} n
              ON ogm.gid = n.nid
              WHERE etid = :uid
              AND entity_type = :user_type
              AND n.type = :node_type', array(
      ':uid' => $user->uid,
      ':user_type' => 'user',
      ':node_type' => 'class',
    ));
    foreach ($query as $record) {
      db_update('opigno_statistics_group')
        ->expression('page_views', 'page_views + 1')
        ->condition('group_nid', $record->gid)
        ->condition('month_year', $month_year)
        ->execute();
    }
  }
  else {
    drupal_bootstrap(DRUPAL_BOOTSTRAP_SESSION);
    include_once DRUPAL_ROOT . '/includes/unicode.inc';
    $month_year = mktime(0, 0, 0, date('m', time()), 1);
    if (isset($_SESSION['og_context']['gid']) && (opigno_statistics_app_node_id_og_group_content($_SESSION['og_context']['gid'], arg(1)) || $_SESSION['og_context']['gid'] == arg(1))) {
      opigno_statistics_group_insert($_SESSION['og_context']['gid'], arg(1), $month_year);
    }
  }
}