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. |