rules_scheduler.install

Rules Scheduler - Installation file.

File

rules_scheduler/rules_scheduler.install

View source
<?php


/**
 * @file
 * Rules Scheduler - Installation file.
 */

/**
 * Implements hook_schema().
 */
function rules_scheduler_schema() {
    $schema['rules_scheduler'] = array(
        'description' => 'Stores scheduled tasks.',
        'fields' => array(
            'tid' => array(
                'type' => 'serial',
                'unsigned' => TRUE,
                'not null' => TRUE,
                'description' => "The scheduled task's id.",
            ),
            'config' => array(
                'type' => 'varchar',
                'length' => '64',
                'default' => '',
                'not null' => TRUE,
                'description' => "The scheduled configuration's name.",
            ),
            'date' => array(
                'description' => 'The Unix timestamp of when the task is to be scheduled.',
                'type' => 'int',
                'not null' => TRUE,
            ),
            'data' => array(
                'type' => 'blob',
                'size' => 'big',
                'not null' => FALSE,
                'serialize' => TRUE,
                'description' => 'The whole, serialized evaluation data.',
            ),
            'identifier' => array(
                'type' => 'varchar',
                'length' => '255',
                'default' => '',
                'not null' => FALSE,
                'description' => 'The user defined string identifying this task.',
            ),
            'handler' => array(
                'type' => 'varchar',
                'length' => '255',
                'not null' => FALSE,
                'description' => 'The fully-qualified class name of the queue item handler.',
            ),
        ),
        'primary key' => array(
            'tid',
        ),
        'indexes' => array(
            'date' => array(
                'date',
            ),
        ),
        'unique key' => array(
            'id' => array(
                'config',
                'identifier',
            ),
        ),
    );
    return $schema;
}

/**
 * Implements hook_install().
 */
function rules_scheduler_install() {
    // Create the queue to hold scheduled tasks.
    $queue = DrupalQueue::get('rules_scheduler_tasks', TRUE);
    $queue->createQueue();
}

/**
 * Implements hook_uninstall().
 */
function rules_scheduler_uninstall() {
    // Clean up after ourselves by deleting the queue and all items in it.
    $queue = DrupalQueue::get('rules_scheduler_tasks');
    $queue->deleteQueue();
}

/**
 * Upgrade from Rules scheduler 6.x-1.x to 7.x.
 */
function rules_scheduler_update_7200() {
    // Rename the old table so we can keep its content and start over with a
    // fresh one.
    db_rename_table('rules_scheduler', 'rules_scheduler_d6');
    // Create the d7 table.
    $schema['rules_scheduler'] = array(
        'description' => 'Stores scheduled tasks.',
        'fields' => array(
            'tid' => array(
                'type' => 'serial',
                'unsigned' => TRUE,
                'not null' => TRUE,
                'description' => "The scheduled task's id.",
            ),
            'config' => array(
                'type' => 'varchar',
                'length' => '255',
                'default' => '',
                'not null' => TRUE,
                'description' => "The scheduled configuration's name.",
            ),
            'date' => array(
                'description' => 'The Unix timestamp of when the task is to be scheduled.',
                'type' => 'int',
                'not null' => TRUE,
            ),
            'data' => array(
                'type' => 'text',
                'not null' => FALSE,
                'serialize' => TRUE,
                'description' => 'The whole, serialized evaluation data.',
            ),
            'identifier' => array(
                'type' => 'varchar',
                'length' => '255',
                'default' => '',
                'not null' => FALSE,
                'description' => 'The user defined string identifying this task.',
            ),
        ),
        'primary key' => array(
            'tid',
        ),
        'indexes' => array(
            'date' => array(
                'date',
            ),
        ),
    );
    db_create_table('rules_scheduler', $schema['rules_scheduler']);
}

/**
 * Fix the length of the rules_scheduler.name column.
 */
function rules_scheduler_update_7202() {
    // Note that update 7201 (add the 'id' unique key') has been removed as it is
    // incorporated by 7202. For anyone that has already run the previous update
    // 7201, we have to first drop the unique key.
    db_drop_unique_key('rules_scheduler', 'id');
    db_change_field('rules_scheduler', 'config', 'config', array(
        'type' => 'varchar',
        'length' => '64',
        'default' => '',
        'not null' => TRUE,
        'description' => "The scheduled configuration's name.",
    ));
    db_add_unique_key('rules_scheduler', 'id', array(
        'config',
        'identifier',
    ));
}

/**
 * Add a database column for specifying a queue item handler.
 */
function rules_scheduler_update_7203() {
    db_add_field('rules_scheduler', 'handler', array(
        'type' => 'varchar',
        'length' => '255',
        'not null' => FALSE,
        'description' => 'The fully-qualified class name of the queue item handler.',
    ));
}

/**
 * Rename rules_scheduler.state into rules_scheduler.data.
 */
function rules_scheduler_update_7204() {
    if (db_field_exists('rules_scheduler', 'state')) {
        db_change_field('rules_scheduler', 'state', 'data', array(
            'type' => 'text',
            'not null' => FALSE,
            'serialize' => TRUE,
            'description' => 'The whole, serialized evaluation data.',
        ));
    }
}

/**
 * Use blob:big for rules_scheduler.data for compatibility with PostgreSQL.
 */
function rules_scheduler_update_7205() {
    if (db_field_exists('rules_scheduler', 'data')) {
        db_change_field('rules_scheduler', 'data', 'data', array(
            'type' => 'blob',
            'size' => 'big',
            'not null' => FALSE,
            'serialize' => TRUE,
            'description' => 'The whole, serialized evaluation data.',
        ));
    }
}

/**
 * Rules upgrade callback for mapping the action name.
 */
function rules_scheduler_action_upgrade_map_name($element) {
    return 'schedule';
}

/**
 * Rules upgrade callback.
 */
function rules_scheduler_action_upgrade($element, $target) {
    $target->settings['component'] = $element['#info']['set'];
    $target->settings['date'] = $element['#settings']['task_date'];
    $target->settings['identifier'] = $element['#settings']['task_identifier'];
    unset($element['#info']['arguments']['task_date'], $element['#info']['arguments']['task_identifier']);
    foreach ($element['#info']['arguments'] as $name => $info) {
        rules_upgrade_element_parameter_settings($element, $target, $name, $info, 'param_' . $name);
    }
}

/**
 * Rules upgrade callback for mapping the action name.
 */
function rules_action_delete_scheduled_set_upgrade_map_name($element) {
    return 'schedule_delete';
}

/**
 * Rules upgrade callback.
 */
function rules_action_delete_scheduled_set_upgrade($element, $target) {
    $target->settings['component'] = $element['#settings']['ruleset'];
    $target->settings['task'] = $element['#settings']['task_identifier'];
}

Functions

Title Deprecated Summary
rules_action_delete_scheduled_set_upgrade Rules upgrade callback.
rules_action_delete_scheduled_set_upgrade_map_name Rules upgrade callback for mapping the action name.
rules_scheduler_action_upgrade Rules upgrade callback.
rules_scheduler_action_upgrade_map_name Rules upgrade callback for mapping the action name.
rules_scheduler_install Implements hook_install().
rules_scheduler_schema Implements hook_schema().
rules_scheduler_uninstall Implements hook_uninstall().
rules_scheduler_update_7200 Upgrade from Rules scheduler 6.x-1.x to 7.x.
rules_scheduler_update_7202 Fix the length of the rules_scheduler.name column.
rules_scheduler_update_7203 Add a database column for specifying a queue item handler.
rules_scheduler_update_7204 Rename rules_scheduler.state into rules_scheduler.data.
rules_scheduler_update_7205 Use blob:big for rules_scheduler.data for compatibility with PostgreSQL.