You are here

function private_files_download_permission_update_7201 in Private files download permission 7.2

Prepare the database for by-user filtering.

File

./private_files_download_permission.install, line 188
Installs, updates and uninstalls module variables and settings.

Code

function private_files_download_permission_update_7201() {
  $transaction = db_transaction();
  try {

    // Implement new table schema (rewritten from scratch, see https://drupal.org/node/150220).
    $schema = array();
    $schema['private_files_download_permission_directory_user'] = array(
      'description' => 'Users having per-directory download permission.',
      'fields' => array(
        'duid' => array(
          'type' => 'serial',
          'unsigned' => TRUE,
          'not null' => TRUE,
        ),
        'did' => array(
          'type' => 'int',
          'unsigned' => TRUE,
          'not null' => TRUE,
        ),
        'uid' => array(
          'type' => 'int',
          'unsigned' => TRUE,
          'not null' => TRUE,
        ),
      ),
      'primary key' => array(
        'duid',
      ),
      'foreign keys' => array(
        'private_files_download_permission_directory' => array(
          'table' => 'private_files_download_permission_directory',
          'columns' => array(
            'did' => 'did',
          ),
        ),
        'private_files_download_permission_directory_user' => array(
          'table' => 'users',
          'columns' => array(
            'uid' => 'uid',
          ),
        ),
      ),
      'unique keys' => array(),
      'indexes' => array(),
    );
    db_create_table('private_files_download_permission_directory_user', $schema['private_files_download_permission_directory_user']);

    // Add "real" foreign keys.
    db_query('ALTER TABLE {private_files_download_permission_directory_user}
      ADD CONSTRAINT {private_files_download_permission_directory_2}
      FOREIGN KEY (did) REFERENCES {private_files_download_permission_directory} (did)
      ON DELETE CASCADE
      ON UPDATE CASCADE');
    db_query('ALTER TABLE {private_files_download_permission_directory_user}
      ADD CONSTRAINT {private_files_download_permission_directory_user}
      FOREIGN KEY (uid) REFERENCES {users} (uid)
      ON DELETE CASCADE
      ON UPDATE CASCADE');
  } catch (Exception $e) {
    $transaction
      ->rollback();
    $t = get_t();
    drupal_set_message($t('An error occurred while updating the module. Please check the log for details.'), 'error');
  }
}