You are here

function crm_core_contact_update_7006 in CRM Core 7

Add "name" field to "crm_core_contact" table.

File

modules/crm_core_contact/crm_core_contact.install, line 345
Install, update and uninstall functions for the CRM Core Contact module.

Code

function crm_core_contact_update_7006(&$sandbox) {
  $t = get_t();
  $msgs = array();
  if (!db_field_exists('crm_core_contact', 'name')) {
    $field_schema = array(
      'description' => 'Plain text contact name used in DB queries. Updated on contact update.',
      'type' => 'varchar',
      'length' => 255,
      'not null' => TRUE,
      'default' => '',
    );
    $new_keys = array(
      'indexes' => array(
        'contact_name' => array(
          'name',
        ),
      ),
    );
    db_add_field('crm_core_contact', 'name', $field_schema, $new_keys);
    $msgs[] = $t('Field "name" was successfully added to "crm_core_contact" table.');
  }
  crm_core_contact_default_label_format_install();

  // Processing existing contacts.
  if (!isset($sandbox['progress'])) {
    $sandbox['progress'] = 0;
    $sandbox['current'] = 0;
    $sandbox['total'] = db_query('SELECT COUNT(contact_id) FROM {crm_core_contact}')
      ->fetchField();
    if (empty($sandbox['total'])) {
      $msgs[] = $t('No contact records to update.');
      return implode(' ', $msgs);
    }
  }
  $contact_ids = db_select('crm_core_contact', 'c')
    ->fields('c', array(
    'contact_id',
  ))
    ->condition('contact_id', $sandbox['current'], '>')
    ->range(0, 10)
    ->orderBy('contact_id', 'ASC')
    ->execute()
    ->fetchCol();
  foreach ($contact_ids as $contact_id) {
    $contact = crm_core_contact_load($contact_id);
    $contact
      ->save();
    $sandbox['progress']++;
    $sandbox['current'] = $contact
      ->identifier();
  }
  $msgs[] = $t('Updated @count contact records.', array(
    '@count' => count($contact_ids),
  ));
  $sandbox['#finished'] = empty($sandbox['total']) ? 1 : $sandbox['progress'] / $sandbox['total'];
  return implode(' ', $msgs);
}