$name) { variable_del('workflow_' . $type); } } /** * Implements hook_schema(). */ function workflow_schema() { $schema['workflows'] = array( 'description' => 'Workflows', 'fields' => array( 'wid' => array( 'description' => 'The primary identifier for a node.', 'type' => 'serial', 'not null' => TRUE ), 'name' => array( 'description' => 'The name of the workflow (used as machine name for features intergration).', 'type' => 'varchar', 'length' => '255', 'not null' => TRUE, 'default' => '' ), 'tab_roles' => array( 'description' => 'The role IDs that can access the workflow tabs on node pages.', 'type' => 'varchar', 'length' => '60', 'not null' => TRUE, 'default' => '' ), 'options' => array( 'description' => 'Additional settings for the workflow.', 'type' => 'text', 'size' => 'big', 'not null' => FALSE ), ), 'primary key' => array('wid'), 'unique keys' => array('name' => array('name')), ); $schema['workflow_type_map'] = array( 'fields' => array( 'type' => array( 'description' => 'The {node_type}.type the workflow is used on.', 'type' => 'varchar', 'length' => '255', 'not null' => TRUE, 'default' => '' ), 'wid' => array( 'description' => 'The {workflows}.wid this record affects.', 'type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'disp-width' => '10' ), ), 'indexes' => array( 'type' => array('type', 'wid'), ), ); $schema['workflow_transitions'] = array( 'fields' => array( 'tid' => array( 'description' => 'The primary identifier for a workflow transition.', 'type' => 'serial', 'not null' => TRUE ), 'sid' => array( 'description' => 'The {workflow_states}.sid start state.', 'type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'disp-width' => '10' ), 'target_sid' => array( 'description' => 'The {workflow_states}.sid target state.', 'type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'disp-width' => '10' ), 'roles' => array( 'description' => 'The {role}.sid that a user must have to perform transition.', 'type' => 'varchar', 'length' => '255', 'not null' => FALSE, ), ), 'primary key' => array('tid'), 'indexes' => array( 'sid' => array('sid'), 'target_sid' => array('target_sid'), ), ); $schema['workflow_states'] = array( 'fields' => array( 'sid' => array( 'description' => 'The primary identifier for a workflow state.', 'type' => 'serial', 'not null' => TRUE, ), 'wid' => array( 'description' => 'The {workflows}.wid this state is part of.', 'type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'disp-width' => '10' ), 'state' => array( 'description' => 'The name of the state.', 'type' => 'varchar', 'length' => '255', 'not null' => TRUE, 'default' => '', ), 'weight' => array( 'description' => 'The weight (order) of the state.', 'type' => 'int', 'size' => 'tiny', 'not null' => TRUE, 'default' => 0, 'disp-width' => '4', ), 'sysid' => array( 'description' => 'The type of state, usually either WORKFLOW_CREATION or empty.', 'type' => 'int', 'size' => 'tiny', 'not null' => TRUE, 'default' => 0, 'disp-width' => '4', ), 'status' => array( 'description' => 'Whether the current state is active still.', 'type' => 'int', 'size' => 'tiny', 'not null' => TRUE, 'default' => 1, 'disp-width' => '4', ), ), 'primary key' => array('sid'), 'indexes' => array( 'sysid' => array('sysid'), 'wid' => array('wid') ), ); $schema['workflow_scheduled_transition'] = array( 'fields' => array( 'nid' => array( 'description' => 'The {node}.nid this transition is scheduled for.', 'type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'disp-width' => '10', ), 'old_sid' => array( 'description' => 'The {workflow_states}.sid this state starts at.', 'type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'disp-width' => '10', ), 'sid' => array( 'description' => 'The {workflow_states}.sid this state transitions to.', 'type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'disp-width' => '10', ), 'uid' => array( 'description' => 'The user who scheduled this state transition.', 'type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'disp-width' => '10', ), 'scheduled' => array( 'description' => 'The date this transition is scheduled for.', 'type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'disp-width' => '10', ), 'comment' => array( 'description' => 'The comment explaining this transition.', 'type' => 'text', 'size' => 'big', 'not null' => FALSE, ), ), 'indexes' => array( 'nid' => array('nid') ), ); $schema['workflow_node_history'] = array( 'fields' => array( 'hid' => array( 'description' => 'The unique ID for this record.', 'type' => 'serial', 'not null' => TRUE ), 'nid' => array( 'description' => 'The {node}.nid this record is for.', 'type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'disp-width' => '10', ), 'old_sid' => array( 'description' => 'The {workflow_states}.sid this transition started as.', 'type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, ' default' => 0, 'disp-width' => '10', ), 'sid' => array( 'description' => 'The {workflow_states}.sid this transition transitioned to.', 'type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'disp-width' => '10', ), 'uid' => array( 'description' => 'The {users}.uid who made this transition.', 'type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'disp-width' => '10', ), 'stamp' => array( 'description' => 'The unique stamp for this transition.', 'type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'disp-width' => '10', ), 'comment' => array( 'description' => 'The comment explaining this transition.', 'type' => 'text', 'size' => 'big', 'not null' => FALSE, ), ), 'primary key' => array('hid'), 'indexes' => array( 'nid' => array('nid', 'sid'), ), ); $schema['workflow_node'] = array( 'fields' => array( 'nid' => array( 'description' => 'The {node}.nid this record is for.', 'type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'disp-width' => '10', ), 'sid' => array( 'description' => 'The {workflow_states}.sid that this node is currently in.', 'type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'disp-width' => '10', ), 'uid' => array( 'description' => 'The {users}.uid who triggered this state.', 'type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'disp-width' => '10', ), 'stamp' => array( 'description' => 'The unique stamp for the transition.', 'type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'disp-width' => '11', ), ), 'primary key' => array('nid'), 'indexes' => array( 'nid' => array('nid', 'sid'), ), ); return $schema; } /** * Require highest 6.x release. */ function workflow_update_last_removed() { return 6101; } /** * Table update from 6 to 7. Adding a unique key for fields (already held unique in code). */ function workflow_update_7000() { if (!db_index_exists('workflows', 'name')) { db_add_unique_key('workflows', 'name', array('name')); } if (!db_index_exists('workflow_states', 'wid_state')) { db_add_unique_key('workflow_states', 'wid_state', array('wid', 'state')); } } /** * Initialize all workflows to show watchdog messages. */ function workflow_update_7001() { // Get all workflows. $workflows = workflow_get_workflows(); foreach ($workflows as $workflow) { // Add the option. $workflow->options['watchdog_log'] = 1; // Serialize the options array. $workflow->options = serialize($workflow->options); // Update the workflow without creating a creation state. workflow_update_workflows($workflow, FALSE); } } /** * Add userid to scheduled transition table. */ function workflow_update_7002() { db_add_field('workflow_scheduled_transition', 'uid', array( 'description' => 'The user who scheduled this state transition.', 'type' => 'int', 'unsigned' => TRUE, 'not null' => TRUE, 'default' => 0, 'disp-width' => '10', 'initial' => 0, )); }