You are here

elysia_cron.install in Elysia Cron 7.2

Install, update and uninstall functions for the elysia_cron module.

File

elysia_cron.install
View source
<?php

/**
 * @file
 * Install, update and uninstall functions for the elysia_cron module.
 */

/**
 * Implements hook_schema().
 */
function elysia_cron_schema() {
  $schema['elysia_cron'] = array(
    'fields' => array(
      'name' => array(
        'type' => 'varchar',
        'length' => 120,
        'not null' => TRUE,
      ),
      'disable' => array(
        'type' => 'int',
        'size' => 'tiny',
        'not null' => FALSE,
      ),
      'rule' => array(
        'type' => 'varchar',
        'not null' => FALSE,
        'length' => 256,
      ),
      'weight' => array(
        'type' => 'int',
        'not null' => FALSE,
      ),
      'context' => array(
        'type' => 'varchar',
        'not null' => FALSE,
        'length' => 32,
      ),
      'running' => array(
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
        'no export' => TRUE,
      ),
      'last_run' => array(
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
        'no export' => TRUE,
      ),
      'last_aborted' => array(
        'type' => 'int',
        'size' => 'tiny',
        'not null' => TRUE,
        'default' => 0,
        'no export' => TRUE,
      ),
      'abort_count' => array(
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
        'no export' => TRUE,
      ),
      'last_abort_function' => array(
        'type' => 'varchar',
        'length' => 128,
        'no export' => TRUE,
      ),
      'last_execution_time' => array(
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
        'no export' => TRUE,
      ),
      'execution_count' => array(
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
        'no export' => TRUE,
      ),
      'avg_execution_time' => array(
        'type' => 'float',
        'not null' => TRUE,
        'default' => 0,
        'no export' => TRUE,
      ),
      'max_execution_time' => array(
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
        'no export' => TRUE,
      ),
      'last_shutdown_time' => array(
        'type' => 'int',
        'not null' => TRUE,
        'default' => 0,
        'no export' => TRUE,
      ),
    ),
    'primary key' => array(
      'name',
    ),
    'export' => array(
      'key' => 'name',
      'key name' => 'Cron job name',
      'primary key' => 'name',
      'identifier' => 'cron_rule',
      'object factory' => 'elysia_cron_ctools_export_object_factory',
      'load callback' => 'elysia_cron_ctools_export_load',
      'load all callback' => 'elysia_cron_ctools_export_load_all',
      'export callback' => 'elysia_cron_ctools_export_callback',
      'to hook code callback' => 'elysia_cron_ctools_to_hook_code',
      'default hook' => 'default_elysia_cron_rules',
      'api' => array(
        'owner' => 'elysia_cron',
        'api' => 'default_elysia_cron_rules',
        'minimum_version' => 1,
        'current_version' => 1,
      ),
    ),
  );
  return $schema;
}

/**
 * Implements hook_install().
 */
function elysia_cron_install() {

  // Elysia cron MUST be the first returned by module_list.
  // This is to ensure elysia_cron_cron is the first hook
  // called by standard cron.php.
  $query = db_select('system');
  $query
    ->addExpression('MIN(weight)');
  $min = $query
    ->execute()
    ->fetchField();
  $min = $min > -65535 ? -65535 : --$min;
  db_update('system')
    ->fields(array(
    'weight' => $min,
  ))
    ->condition('name', 'elysia_cron')
    ->execute();
}

/**
 * Implements hook_uninstall().
 */
function elysia_cron_uninstall() {
  $variables = db_select('variable', 'v')
    ->fields('v', array(
    'name',
  ))
    ->condition('v.name', 'elysia_cron_%', 'LIKE')
    ->execute()
    ->fetchCol();
  foreach ($variables as $name) {
    variable_del($name);
  }
}

/**
 * Use default cron_key variable.
 */
function elysia_cron_update_7201() {
  $cron_key = variable_get('elysia_cron_key', FALSE);
  if ($cron_key) {
    variable_set('cron_key', $cron_key);
  }
  variable_del('elysia_cron_key');
}

/**
 * Increase elysia_cron last_abort_function size from 32 to 128 characters.
 */
function elysia_cron_update_7202() {
  db_change_field('elysia_cron', 'last_abort_function', 'last_abort_function', array(
    'type' => 'varchar',
    'length' => 128,
    'no export' => TRUE,
  ));
}

/**
 * Change length property of rule to 256 characters.
 */
function elysia_cron_update_7203() {
  $spec = array(
    'type' => 'varchar',
    'not null' => FALSE,
    'length' => 256,
  );
  db_change_field('elysia_cron', 'rule', 'rule', $spec);
}

/**
 * Remove unused variables.
 */
function elysia_cron_update_7204() {
  variable_del('elysia_cron_version');
}

/**
 * Rename context variable to channel.
 */
function elysia_cron_update_7205() {
  if ($last = variable_get('elysia_cron_last_context')) {
    variable_set('elysia_cron_last_channel', $last);
  }
  variable_del('elysia_cron_last_context');
}

Functions

Namesort descending Description
elysia_cron_install Implements hook_install().
elysia_cron_schema Implements hook_schema().
elysia_cron_uninstall Implements hook_uninstall().
elysia_cron_update_7201 Use default cron_key variable.
elysia_cron_update_7202 Increase elysia_cron last_abort_function size from 32 to 128 characters.
elysia_cron_update_7203 Change length property of rule to 256 characters.
elysia_cron_update_7204 Remove unused variables.
elysia_cron_update_7205 Rename context variable to channel.