counter.install in Counter 6.2
Same filename and directory in other branches
Install the module with a new database table
File
counter.installView source
<?php
/**
 * Install the module with a new database table
 * @file
 */
function counter_install() {
  drupal_set_message('Installing Counter module');
  drupal_install_schema('counter');
  counter_update_6000();
  counter_update_6001();
  counter_update_6002();
  counter_update_6003();
  counter_update_6005();
}
function counter_uninstall() {
  drupal_uninstall_schema('counter');
}
/**
 * Implementation of hook_schema().
 */
function counter_schema() {
  $schema['counter'] = array(
    'fields' => array(
      'counter_id' => array(
        'type' => 'serial',
        'not null' => TRUE,
      ),
      'counter_ip' => array(
        'type' => 'varchar',
        'length' => 32,
        'not null' => TRUE,
        'default' => '',
      ),
      'counter_date' => array(
        'type' => 'varchar',
        'length' => 32,
        'not null' => TRUE,
        'default' => '',
      ),
      'counter_page' => array(
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'default' => '0',
      ),
    ),
    'primary key' => array(
      'counter_id',
    ),
  );
  $schema['counter_today'] = array(
    'fields' => array(
      'counter_id' => array(
        'type' => 'serial',
        'not null' => TRUE,
      ),
      'counter_ip' => array(
        'type' => 'varchar',
        'length' => 32,
        'not null' => TRUE,
        'default' => '',
      ),
      'counter_date' => array(
        'type' => 'varchar',
        'length' => 32,
        'not null' => TRUE,
        'default' => '',
      ),
      'counter_page' => array(
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'default' => '0',
      ),
    ),
    'primary key' => array(
      'counter_id',
    ),
  );
  $schema['counter_data'] = array(
    'fields' => array(
      'counter_name' => array(
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'default' => 0,
      ),
      'counter_value' => array(
        'type' => 'varchar',
        'length' => 255,
        'not null' => TRUE,
        'default' => 0,
      ),
    ),
    'primary key' => array(
      'counter_name',
    ),
  );
  // site_counter, unique_visitor, registered_user, unregistered_user, published_node, unpublished_node
  return $schema;
}
function counter_update_6000() {
  $ret = array();
  if (db_column_exists('counter', 'counter_page')) {
    db_change_field($ret, 'counter', 'counter_page', 'counter_page', array(
      'type' => 'varchar',
      'length' => '255',
      'not null' => TRUE,
      'default' => '0',
    ));
  }
  return $ret;
}
function counter_update_6001() {
  $ret = array();
  $schema = counter_schema();
  _drupal_initialize_schema('counter', $schema);
  foreach ($schema as $name => $table) {
    if (!db_table_exists($name)) {
      db_create_table($ret, $name, $table);
    }
  }
  //site_counter
  $sql = " SELECT count(*) as total FROM {counter} c ";
  $data = db_fetch_object(db_query($sql));
  $counter_total = $data->total;
  $sql = " SELECT count(*) as total FROM {counter_data} WHERE counter_name= 'site_counter' ";
  $counter_data = db_fetch_object(db_query($sql));
  $counter_name_exist = $counter_data->total;
  if (!$counter_name_exist) {
    $sql = " INSERT INTO {counter_data} (counter_name,counter_value) VALUES ('%s','%s')";
    $results = db_query($sql, "site_counter", $counter_total);
  }
  //unique_visitor
  $sql = " SELECT count(*) as total FROM (SELECT counter_ip FROM {counter} GROUP BY counter_ip) c";
  $data = db_fetch_object(db_query($sql));
  $counter_total = $data->total;
  $sql = " SELECT count(*) as total FROM {counter_data} WHERE counter_name= 'unique_visitor' ";
  $counter_data = db_fetch_object(db_query($sql));
  $counter_name_exist = $counter_data->total;
  if (!$counter_name_exist) {
    $sql = " INSERT INTO {counter_data} (counter_name,counter_value) VALUES ('%s','%s')";
    $results = db_query($sql, "unique_visitor", $counter_total);
  }
  //registered_user
  $sql = " SELECT count(*) as total FROM {users} WHERE access<>0 and uid<>0";
  $data = db_fetch_object(db_query($sql));
  $counter_total = $data->total;
  $sql = " SELECT count(*) as total FROM {counter_data} WHERE counter_name= 'registered_user' ";
  $counter_data = db_fetch_object(db_query($sql));
  $counter_name_exist = $counter_data->total;
  if (!$counter_name_exist) {
    $sql = " INSERT INTO {counter_data} (counter_name,counter_value) VALUES ('%s','%s')";
    $results = db_query($sql, "registered_user", $counter_total);
  }
  //unregistered_user
  $sql = " SELECT count(*) as total FROM {users} WHERE access=0 and uid<>0";
  $data = db_fetch_object(db_query($sql));
  $counter_total = $data->total;
  $sql = " SELECT count(*) as total FROM {counter_data} WHERE counter_name= 'unregistered_user' ";
  $counter_data = db_fetch_object(db_query($sql));
  $counter_name_exist = $counter_data->total;
  if (!$counter_name_exist) {
    $sql = " INSERT INTO {counter_data} (counter_name,counter_value) VALUES ('%s','%s')";
    $results = db_query($sql, "unregistered_user", $counter_total);
  }
  //published_node
  $sql = " SELECT count(*) as total FROM {node} WHERE status=1";
  $data = db_fetch_object(db_query($sql));
  $counter_total = $data->total;
  $sql = " SELECT count(*) as total FROM {counter_data} WHERE counter_name= 'published_node' ";
  $counter_data = db_fetch_object(db_query($sql));
  $counter_name_exist = $counter_data->total;
  if (!$counter_name_exist) {
    $sql = " INSERT INTO {counter_data} (counter_name,counter_value) VALUES ('%s','%s')";
    $results = db_query($sql, "published_node", $counter_total);
  }
  //unpublished_node
  $sql = " SELECT count(*) as total FROM {node} WHERE status=0";
  $data = db_fetch_object(db_query($sql));
  $counter_total = $data->total;
  $sql = " SELECT count(*) as total FROM {counter_data} WHERE counter_name= 'unpublished_node' ";
  $counter_data = db_fetch_object(db_query($sql));
  $counter_name_exist = $counter_data->total;
  if (!$counter_name_exist) {
    $sql = " INSERT INTO {counter_data} (counter_name,counter_value) VALUES ('%s','%s')";
    $results = db_query($sql, "unpublished_node", $counter_total);
  }
  return $ret;
}
function counter_update_6002() {
  $ret = array();
  //blocked_user
  $sql = " SELECT count(*) as total FROM {users} WHERE status=0 and uid<>0";
  $data = db_fetch_object(db_query($sql));
  $counter_total = $data->total;
  $sql = " SELECT count(*) as total FROM {counter_data} WHERE counter_name= 'blocked_user' ";
  $counter_data = db_fetch_object(db_query($sql));
  $counter_name_exist = $counter_data->total;
  if (!$counter_name_exist) {
    $sql = " INSERT INTO {counter_data} (counter_name,counter_value) VALUES ('%s','%s')";
    $results = db_query($sql, "blocked_user", $counter_total);
  }
}
function counter_update_6003() {
  $ret = array();
  db_add_index($ret, 'counter', 'counter_date', array(
    'counter_date',
  ));
  db_add_index($ret, 'counter', 'counter_ip', array(
    'counter_ip',
  ));
  return $ret;
}
function counter_update_6005() {
  $ret = array();
  $schema = counter_schema();
  _drupal_initialize_schema('counter', $schema);
  foreach ($schema as $name => $table) {
    if (!db_table_exists($name)) {
      db_create_table($ret, $name, $table);
    }
  }
  return $ret;
}Functions
| Name   | Description | 
|---|---|
| counter_install | Install the module with a new database table @file | 
| counter_schema | Implementation of hook_schema(). | 
| counter_uninstall | |
| counter_update_6000 | |
| counter_update_6001 | |
| counter_update_6002 | |
| counter_update_6003 | |
| counter_update_6005 | 
