function crm_core_activity_update_7003 in CRM Core 7
Enabling revisions for activities.
File
- modules/
crm_core_activity/ crm_core_activity.install, line 294 - Install, update, and uninstall functions for the CRM Core Activity module.
Code
function crm_core_activity_update_7003() {
db_add_field('crm_core_activity', 'revision_id', array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => FALSE,
'default' => NULL,
'description' => 'Primary identifier of this {crm_core_activity_revision}.',
));
db_add_index('crm_core_activity', 'created', array(
'created',
));
db_add_index('crm_core_activity', 'changed', array(
'changed',
));
// Initialize the revision_id to be the same as the activity_id.
db_update('crm_core_activity')
->expression('revision_id', 'activity_id')
->execute();
$revision_schema = array(
'description' => 'Stores information about each saved revision of a {crm_core_activity}',
'fields' => array(
'revision_id' => array(
'type' => 'serial',
'not null' => TRUE,
'description' => 'Primary identifier of this {crm_core_activity_revision}.',
),
'activity_id' => array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => FALSE,
'default' => NULL,
'description' => 'The {crm_core_activity}.activity_id for this revision.',
),
'uid' => array(
'description' => 'The {users}.uid that created this version.',
'type' => 'int',
'not null' => TRUE,
),
'title' => array(
'description' => 'The title of the activity.',
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
'default' => '',
),
'created' => array(
'description' => 'The Unix timestamp when the activity was created.',
'type' => 'int',
'not null' => TRUE,
'default' => 0,
),
'changed' => array(
'description' => 'The Unix timestamp when the activity was most recently saved.',
'type' => 'int',
'not null' => TRUE,
'default' => 0,
),
),
'foreign keys' => array(
'versioned_activity' => array(
'table' => 'crm_core_activity',
'columns' => array(
'activity_id' => 'activity_id',
),
),
'version_creator' => array(
'table' => 'user',
'columns' => array(
'uid' => 'uid',
),
),
),
'primary key' => array(
'revision_id',
),
);
db_create_table('crm_core_activity_revision', $revision_schema);
$activities = db_select('crm_core_activity', 'activity')
->fields('activity')
->execute();
foreach ($activities as $activity) {
// Update crm_core_activity_revision table.
db_insert('crm_core_activity_revision')
->fields(array(
'revision_id' => $activity->activity_id,
'activity_id' => $activity->activity_id,
'uid' => $activity->uid,
'title' => $activity->title,
'created' => $activity->created,
'changed' => $activity->changed,
))
->execute();
}
}