| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379 | <?php/** * @file * Install, update and uninstall functions for the workflow module. * *//** * Implements hook_install(). */function workflow_install() {}/** * Implements hook_uninstall(). */function workflow_uninstall() {  variable_del('workflow_states_per_page');  // Delete type-workflow mapping variables.  foreach (node_type_get_types() as $type => $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,    ));}
 |