226 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			226 lines
		
	
	
		
			6.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
<?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'];
 | 
						|
}
 |