You are here

class Popup_announcement_visitor in Pop-up announcement 7

Class for visitor

Hierarchy

Expanded class hierarchy of Popup_announcement_visitor

File

./popup_announcement.module, line 396
Primarily Drupal hooks and custom functions for creating block with pop-up announcement.

View source
class Popup_announcement_visitor {
  protected $sid;
  function __construct($sid) {
    $this->sid = $sid;
  }

  /**
   * Get visit number for this visitor.
   *
   * @return int or bool
   *   Visit number for this visitor
   *   If returned FALSE - this visitor first time here
   *   or was last time more than cleaning old records by cron period
   */
  public function get_visit_number() {
    return db_select('popup_announcement', 'a')
      ->condition('sid', $this->sid)
      ->fields('a', array(
      'visit_number',
    ))
      ->execute()
      ->fetchField();
  }

  /**
   * Check if announcement is visible for this visit.
   *
   * @return int
   *   1 -  if for this visitor announcement can be created
   *   0 - if not, for example because he made some action
   *   from these announcement yet
   */
  public function is_visible() {
    return db_select('popup_announcement', 'a')
      ->condition('sid', $this->sid)
      ->fields('a', array(
      'is_visible',
    ))
      ->execute()
      ->fetchField();
  }

  /**
   * Check if announcement is visible for this visitor.
   * @return int
   *   1 -  if for this visitor announcement can be created
   *   0 - if not, for example because he made some action
   *   from thise announcement yet
   */
  public function is_visible_permanent() {
    return db_select('popup_announcement', 'a')
      ->condition('sid', $this->sid)
      ->fields('a', array(
      'is_visible_permanent',
    ))
      ->execute()
      ->fetchField();
  }

  /**
   * Create record for new visitor.
   *
   * Just insert new row in tables.
   */
  public function create_visitor_info() {
    $q = db_insert('popup_announcement')
      ->fields(array(
      'sid' => $this->sid,
      'visit_number' => 1,
      'is_visible' => 1,
      'is_visible_permanent' => 1,
      'timestamp_first_visit' => REQUEST_TIME,
      'timestamp_last_visit' => REQUEST_TIME,
    ))
      ->execute();
  }

  /**
   * Update visitor info.
   *
   * Increment visit number and update visit time.
   */
  public function update_visitor_info() {
    $last_request = db_select('popup_announcement', 'a')
      ->condition('sid', $this->sid)
      ->fields('a', array(
      'timestamp_last_visit',
    ))
      ->execute()
      ->fetchField();

    // If more then one hour - so, lets think it is new visit.
    if ($last_request < REQUEST_TIME - 60 * 60) {
      $q = db_update('popup_announcement')
        ->expression('visit_number', 'visit_number + :increment', array(
        ':increment' => 1,
      ))
        ->fields(array(
        'is_visible' => 1,
      ))
        ->condition('sid', $this->sid)
        ->execute();
    }
    $q = db_update('popup_announcement')
      ->fields(array(
      'timestamp_last_visit' => REQUEST_TIME,
    ))
      ->condition('sid', $this->sid)
      ->execute();
  }

}

Members

Namesort descending Modifiers Type Description Overrides
Popup_announcement_visitor::$sid protected property
Popup_announcement_visitor::create_visitor_info public function Create record for new visitor.
Popup_announcement_visitor::get_visit_number public function Get visit number for this visitor.
Popup_announcement_visitor::is_visible public function Check if announcement is visible for this visit.
Popup_announcement_visitor::is_visible_permanent public function Check if announcement is visible for this visitor.
Popup_announcement_visitor::update_visitor_info public function Update visitor info.
Popup_announcement_visitor::__construct function