danielebarchiesi@4: array( danielebarchiesi@4: 'id' => array( danielebarchiesi@4: 'type' => 'serial', danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: 'description' => 'The internal identifier for any configuration.', danielebarchiesi@4: ), danielebarchiesi@4: 'name' => array( danielebarchiesi@4: 'type' => 'varchar', danielebarchiesi@4: 'length' => '64', danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: 'description' => 'The name of the configuration.', danielebarchiesi@4: ), danielebarchiesi@4: 'label' => array( danielebarchiesi@4: 'type' => 'varchar', danielebarchiesi@4: 'length' => '255', danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: 'description' => 'The label of the configuration.', danielebarchiesi@4: 'default' => 'unlabeled', danielebarchiesi@4: ), danielebarchiesi@4: 'plugin' => array( danielebarchiesi@4: 'type' => 'varchar', danielebarchiesi@4: 'length' => 127, danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: 'description' => 'The name of the plugin of this configuration.', danielebarchiesi@4: ), danielebarchiesi@4: 'active' => array( danielebarchiesi@4: 'description' => 'Boolean indicating whether the configuration is active. Usage depends on how the using module makes use of it.', danielebarchiesi@4: 'type' => 'int', danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: 'default' => 1, danielebarchiesi@4: ), danielebarchiesi@4: 'weight' => array( danielebarchiesi@4: 'type' => 'int', danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: 'default' => 0, danielebarchiesi@4: 'size' => 'tiny', danielebarchiesi@4: 'description' => 'Weight of the configuration. Usage depends on how the using module makes use of it.', danielebarchiesi@4: ), danielebarchiesi@4: 'status' => array( danielebarchiesi@4: 'type' => 'int', danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: // Set the default to ENTITY_CUSTOM without using the constant as it is danielebarchiesi@4: // not safe to use it at this point. danielebarchiesi@4: 'default' => 0x01, danielebarchiesi@4: 'size' => 'tiny', danielebarchiesi@4: 'description' => 'The exportable status of the entity.', danielebarchiesi@4: ), danielebarchiesi@4: 'dirty' => array( danielebarchiesi@4: 'type' => 'int', danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: 'default' => 0, danielebarchiesi@4: 'size' => 'tiny', danielebarchiesi@4: 'description' => 'Dirty configurations fail the integrity check, e.g. due to missing dependencies.', danielebarchiesi@4: ), danielebarchiesi@4: 'module' => array( danielebarchiesi@4: 'description' => 'The name of the providing module if the entity has been defined in code.', danielebarchiesi@4: 'type' => 'varchar', danielebarchiesi@4: 'length' => 255, danielebarchiesi@4: 'not null' => FALSE, danielebarchiesi@4: ), danielebarchiesi@4: 'owner' => array( danielebarchiesi@4: 'description' => 'The name of the module via which the rule has been configured.', danielebarchiesi@4: 'type' => 'varchar', danielebarchiesi@4: 'length' => 255, danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: 'default' => 'rules', danielebarchiesi@4: ), danielebarchiesi@4: 'access_exposed' => array( danielebarchiesi@4: 'type' => 'int', danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: 'default' => 0, danielebarchiesi@4: 'size' => 'tiny', danielebarchiesi@4: 'description' => 'Whether to use a permission to control access for using components.', danielebarchiesi@4: ), danielebarchiesi@4: 'data' => array( danielebarchiesi@4: 'type' => 'blob', danielebarchiesi@4: 'size' => 'big', danielebarchiesi@4: 'not null' => FALSE, danielebarchiesi@4: 'serialize' => TRUE, danielebarchiesi@4: 'description' => 'Everything else, serialized.', danielebarchiesi@4: ), danielebarchiesi@4: ), danielebarchiesi@4: 'primary key' => array('id'), danielebarchiesi@4: 'unique keys' => array( danielebarchiesi@4: 'name' => array('name'), danielebarchiesi@4: ), danielebarchiesi@4: 'indexes' => array( danielebarchiesi@4: 'plugin' => array('plugin'), danielebarchiesi@4: ), danielebarchiesi@4: ); danielebarchiesi@4: $schema['rules_trigger'] = array( danielebarchiesi@4: 'fields' => array( danielebarchiesi@4: 'id' => array( danielebarchiesi@4: 'type' => 'int', danielebarchiesi@4: 'unsigned' => TRUE, danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: 'description' => 'The primary identifier of the configuration.', danielebarchiesi@4: ), danielebarchiesi@4: 'event' => array( danielebarchiesi@4: 'type' => 'varchar', danielebarchiesi@4: 'length' => '127', danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: 'default' => '', danielebarchiesi@4: 'description' => 'The name of the event on which the configuration should be triggered.', danielebarchiesi@4: ), danielebarchiesi@4: ), danielebarchiesi@4: 'primary key' => array('id', 'event'), danielebarchiesi@4: 'foreign keys' => array( danielebarchiesi@4: 'table' => 'rules_config', danielebarchiesi@4: 'columns' => array('id' => 'id'), danielebarchiesi@4: ), danielebarchiesi@4: ); danielebarchiesi@4: $schema['rules_tags'] = array( danielebarchiesi@4: 'fields' => array( danielebarchiesi@4: 'id' => array( danielebarchiesi@4: 'type' => 'int', danielebarchiesi@4: 'unsigned' => TRUE, danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: 'description' => 'The primary identifier of the configuration.', danielebarchiesi@4: ), danielebarchiesi@4: 'tag' => array( danielebarchiesi@4: 'type' => 'varchar', danielebarchiesi@4: 'length' => '255', danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: 'description' => 'The tag string associated with this configuration', danielebarchiesi@4: ), danielebarchiesi@4: ), danielebarchiesi@4: 'primary key' => array('id', 'tag'), danielebarchiesi@4: 'foreign keys' => array( danielebarchiesi@4: 'table' => 'rules_config', danielebarchiesi@4: 'columns' => array('id' => 'id'), danielebarchiesi@4: ), danielebarchiesi@4: ); danielebarchiesi@4: $schema['rules_dependencies'] = array( danielebarchiesi@4: 'fields' => array( danielebarchiesi@4: 'id' => array( danielebarchiesi@4: 'type' => 'int', danielebarchiesi@4: 'unsigned' => TRUE, danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: 'description' => 'The primary identifier of the configuration.', danielebarchiesi@4: ), danielebarchiesi@4: 'module' => array( danielebarchiesi@4: 'type' => 'varchar', danielebarchiesi@4: 'length' => '255', danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: 'description' => 'The name of the module that is required for the configuration.', danielebarchiesi@4: ), danielebarchiesi@4: ), danielebarchiesi@4: 'primary key' => array('id', 'module'), danielebarchiesi@4: 'indexes' => array( danielebarchiesi@4: 'module' => array('module'), danielebarchiesi@4: ), danielebarchiesi@4: 'foreign keys' => array( danielebarchiesi@4: 'table' => 'rules_config', danielebarchiesi@4: 'columns' => array('id' => 'id'), danielebarchiesi@4: ), danielebarchiesi@4: ); danielebarchiesi@4: $schema['cache_rules'] = drupal_get_schema_unprocessed('system', 'cache'); danielebarchiesi@4: $schema['cache_rules']['description'] = 'Cache table for the rules engine to store configured items.'; danielebarchiesi@4: return $schema; danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: /** danielebarchiesi@4: * Upgrade from Rules 6.x-1.x to 7.x. danielebarchiesi@4: */ danielebarchiesi@4: function rules_update_7200() { danielebarchiesi@4: // Create the new db tables first. danielebarchiesi@4: $schema['rules_config'] = array( danielebarchiesi@4: 'fields' => array( danielebarchiesi@4: 'id' => array( danielebarchiesi@4: 'type' => 'serial', danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: 'description' => 'The internal identifier for any configuration.', danielebarchiesi@4: ), danielebarchiesi@4: 'name' => array( danielebarchiesi@4: 'type' => 'varchar', danielebarchiesi@4: 'length' => '255', danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: 'description' => 'The name of the configuration.', danielebarchiesi@4: ), danielebarchiesi@4: 'label' => array( danielebarchiesi@4: 'type' => 'varchar', danielebarchiesi@4: 'length' => '255', danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: 'description' => 'The label of the configuration.', danielebarchiesi@4: 'default' => 'unlabeled', danielebarchiesi@4: ), danielebarchiesi@4: 'plugin' => array( danielebarchiesi@4: 'type' => 'varchar', danielebarchiesi@4: 'length' => 127, danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: 'description' => 'The name of the plugin of this configuration.', danielebarchiesi@4: ), danielebarchiesi@4: 'active' => array( danielebarchiesi@4: 'description' => 'Boolean indicating whether the configuration is active. Usage depends on how the using module makes use of it.', danielebarchiesi@4: 'type' => 'int', danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: 'default' => 1, danielebarchiesi@4: ), danielebarchiesi@4: 'weight' => array( danielebarchiesi@4: 'type' => 'int', danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: 'default' => 0, danielebarchiesi@4: 'size' => 'tiny', danielebarchiesi@4: 'description' => 'Weight of the configuration. Usage depends on how the using module makes use of it.', danielebarchiesi@4: ), danielebarchiesi@4: 'status' => array( danielebarchiesi@4: 'type' => 'int', danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: // Set the default to ENTITY_CUSTOM without using the constant as it is danielebarchiesi@4: // not safe to use it at this point. danielebarchiesi@4: 'default' => 0x01, danielebarchiesi@4: 'size' => 'tiny', danielebarchiesi@4: 'description' => 'The exportable status of the entity.', danielebarchiesi@4: ), danielebarchiesi@4: 'module' => array( danielebarchiesi@4: 'description' => 'The name of the providing module if the entity has been defined in code.', danielebarchiesi@4: 'type' => 'varchar', danielebarchiesi@4: 'length' => 255, danielebarchiesi@4: 'not null' => FALSE, danielebarchiesi@4: ), danielebarchiesi@4: 'data' => array( danielebarchiesi@4: 'type' => 'blob', danielebarchiesi@4: 'size' => 'big', danielebarchiesi@4: 'not null' => FALSE, danielebarchiesi@4: 'serialize' => TRUE, danielebarchiesi@4: 'description' => 'Everything else, serialized.', danielebarchiesi@4: ), danielebarchiesi@4: ), danielebarchiesi@4: 'primary key' => array('id'), danielebarchiesi@4: 'unique keys' => array( danielebarchiesi@4: 'name' => array('name'), danielebarchiesi@4: ), danielebarchiesi@4: ); danielebarchiesi@4: $schema['rules_trigger'] = array( danielebarchiesi@4: 'fields' => array( danielebarchiesi@4: 'id' => array( danielebarchiesi@4: 'type' => 'int', danielebarchiesi@4: 'unsigned' => TRUE, danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: 'description' => 'The primary identifier of the configuration.', danielebarchiesi@4: ), danielebarchiesi@4: 'event' => array( danielebarchiesi@4: 'type' => 'varchar', danielebarchiesi@4: 'length' => '127', danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: 'default' => '', danielebarchiesi@4: 'description' => 'The name of the event on which the configuration should be triggered.', danielebarchiesi@4: ), danielebarchiesi@4: ), danielebarchiesi@4: 'primary key' => array('id', 'event'), danielebarchiesi@4: 'foreign keys' => array( danielebarchiesi@4: 'table' => 'rules_config', danielebarchiesi@4: 'columns' => array('id' => 'id'), danielebarchiesi@4: ), danielebarchiesi@4: ); danielebarchiesi@4: db_create_table('rules_config', $schema['rules_config']); danielebarchiesi@4: db_create_table('rules_trigger', $schema['rules_trigger']); danielebarchiesi@4: // The cache table already exists, but changed. So re-create it. danielebarchiesi@4: db_drop_table('cache_rules'); danielebarchiesi@4: $schema['cache_rules'] = drupal_get_schema_unprocessed('system', 'cache'); danielebarchiesi@4: $schema['cache_rules']['description'] = 'Cache table for the rules engine to store configured items.'; danielebarchiesi@4: db_create_table('cache_rules', $schema['cache_rules']); danielebarchiesi@4: // Remove deprecated variables. danielebarchiesi@4: variable_del('rules_inactive_sets'); danielebarchiesi@4: variable_del('rules_show_fixed'); danielebarchiesi@4: variable_del('rules_hide_token_message'); danielebarchiesi@4: variable_del('rules_counter'); danielebarchiesi@4: danielebarchiesi@4: return t('The database tables for Rules 2.x have been created. The old tables from Rules 1.x are still available and contain your rules, which are not updated yet.'); danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: /** danielebarchiesi@4: * Add in the exportable entity db columns as required by the entity API. danielebarchiesi@4: */ danielebarchiesi@4: function rules_update_7201() { danielebarchiesi@4: // Previously this was update 7200, so check whether we need to run it really. danielebarchiesi@4: // The update has been moved as 7200 needs to be the 6.x-7.x upgrade. danielebarchiesi@4: if (!db_field_exists('rules_config', 'status')) { danielebarchiesi@4: db_add_field('rules_config', 'status', array( danielebarchiesi@4: 'type' => 'int', danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: 'default' => ENTITY_CUSTOM, danielebarchiesi@4: 'size' => 'tiny', danielebarchiesi@4: 'description' => 'The exportable status of the entity.', danielebarchiesi@4: )); danielebarchiesi@4: // The module column did already exist before. danielebarchiesi@4: } danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: /** danielebarchiesi@4: * Add an index for the rules configuration plugin column. danielebarchiesi@4: */ danielebarchiesi@4: function rules_update_7202() { danielebarchiesi@4: db_add_index('rules_config', 'plugin', array('plugin')); danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: /** danielebarchiesi@4: * Fix the length of the rules_config.name column. danielebarchiesi@4: */ danielebarchiesi@4: function rules_update_7203() { danielebarchiesi@4: db_drop_unique_key('rules_config', 'name'); danielebarchiesi@4: $keys = array( danielebarchiesi@4: 'unique keys' => array( danielebarchiesi@4: 'name' => array('name'), danielebarchiesi@4: ), danielebarchiesi@4: ); danielebarchiesi@4: db_change_field('rules_config', 'name', 'name', array( danielebarchiesi@4: 'type' => 'varchar', danielebarchiesi@4: 'length' => '64', danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: 'description' => 'The name of the configuration.', danielebarchiesi@4: ), $keys); danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: /** danielebarchiesi@4: * Add a table for rules-config tags. danielebarchiesi@4: */ danielebarchiesi@4: function rules_update_7204() { danielebarchiesi@4: if (!db_table_exists('rules_tags')) { danielebarchiesi@4: $schema['rules_tags'] = array( danielebarchiesi@4: 'fields' => array( danielebarchiesi@4: 'id' => array( danielebarchiesi@4: 'type' => 'int', danielebarchiesi@4: 'unsigned' => TRUE, danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: 'description' => 'The primary identifier of the configuration.', danielebarchiesi@4: ), danielebarchiesi@4: 'tag' => array( danielebarchiesi@4: 'type' => 'varchar', danielebarchiesi@4: 'length' => '255', danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: 'description' => 'The tag string associated with this configuration', danielebarchiesi@4: ), danielebarchiesi@4: ), danielebarchiesi@4: 'primary key' => array('id', 'tag'), danielebarchiesi@4: 'foreign keys' => array( danielebarchiesi@4: 'table' => 'rules_config', danielebarchiesi@4: 'columns' => array('id' => 'id'), danielebarchiesi@4: ), danielebarchiesi@4: ); danielebarchiesi@4: db_create_table('rules_tags', $schema['rules_tags']); danielebarchiesi@4: } danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: /** danielebarchiesi@4: * Add the rules_dependencies table and the rules_config.dirty column. danielebarchiesi@4: */ danielebarchiesi@4: function rules_update_7205() { danielebarchiesi@4: if (!db_table_exists('rules_dependencies')) { danielebarchiesi@4: $schema['rules_dependencies'] = array( danielebarchiesi@4: 'fields' => array( danielebarchiesi@4: 'id' => array( danielebarchiesi@4: 'type' => 'int', danielebarchiesi@4: 'unsigned' => TRUE, danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: 'description' => 'The primary identifier of the configuration.', danielebarchiesi@4: ), danielebarchiesi@4: 'module' => array( danielebarchiesi@4: 'type' => 'varchar', danielebarchiesi@4: 'length' => '255', danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: 'description' => 'The name of the module that is required for the configuration.', danielebarchiesi@4: ), danielebarchiesi@4: ), danielebarchiesi@4: 'primary key' => array('id', 'module'), danielebarchiesi@4: 'indexes' => array( danielebarchiesi@4: 'module' => array('module'), danielebarchiesi@4: ), danielebarchiesi@4: 'foreign keys' => array( danielebarchiesi@4: 'table' => 'rules_config', danielebarchiesi@4: 'columns' => array('id' => 'id'), danielebarchiesi@4: ), danielebarchiesi@4: ); danielebarchiesi@4: db_create_table('rules_dependencies', $schema['rules_dependencies']); danielebarchiesi@4: } danielebarchiesi@4: if (!db_field_exists('rules_config', 'dirty')) { danielebarchiesi@4: db_add_field('rules_config', 'dirty', array( danielebarchiesi@4: 'type' => 'int', danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: 'default' => 0, danielebarchiesi@4: 'size' => 'tiny', danielebarchiesi@4: )); danielebarchiesi@4: } danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: /** danielebarchiesi@4: * Flush all caches. danielebarchiesi@4: */ danielebarchiesi@4: function rules_update_7206() { danielebarchiesi@4: // The update system is going to flush all caches anyway, so nothing to do. danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: /** danielebarchiesi@4: * Flush all caches. danielebarchiesi@4: */ danielebarchiesi@4: function rules_update_7207() { danielebarchiesi@4: // The update system is going to flush all caches anyway, so nothing to do. danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: /** danielebarchiesi@4: * Flush all caches to update the data_is_empty condition info. danielebarchiesi@4: */ danielebarchiesi@4: function rules_update_7208() { danielebarchiesi@4: // The update system is going to flush all caches anyway, so nothing to do. danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: /** danielebarchiesi@4: * Creates a flag that enables a permission for using components. danielebarchiesi@4: */ danielebarchiesi@4: function rules_update_7209() { danielebarchiesi@4: // Create a access exposed flag column. danielebarchiesi@4: db_add_field('rules_config', 'access_exposed', array( danielebarchiesi@4: 'type' => 'int', danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: 'default' => 0, danielebarchiesi@4: 'size' => 'tiny', danielebarchiesi@4: 'description' => 'Whether to use a permission to control access for using components.', danielebarchiesi@4: )); danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: /** danielebarchiesi@4: * Deletes the unused rules_empty_sets variable. danielebarchiesi@4: */ danielebarchiesi@4: function rules_update_7210() { danielebarchiesi@4: variable_del('rules_empty_sets'); danielebarchiesi@4: } danielebarchiesi@4: danielebarchiesi@4: /** danielebarchiesi@4: * Creates the "owner" column. danielebarchiesi@4: */ danielebarchiesi@4: function rules_update_7211() { danielebarchiesi@4: // Create a owner column. danielebarchiesi@4: db_add_field('rules_config', 'owner', array( danielebarchiesi@4: 'description' => 'The name of the module via which the rule has been configured.', danielebarchiesi@4: 'type' => 'varchar', danielebarchiesi@4: 'length' => 255, danielebarchiesi@4: 'not null' => TRUE, danielebarchiesi@4: 'default' => 'rules', danielebarchiesi@4: )); danielebarchiesi@4: }