function private_files_download_permission_update_7200 in Private files download permission 7.2
Remove useless settings from version 1.x, implement new schema and add "real" foreign keys.
File
- ./
private_files_download_permission.install, line 118 - Installs, updates and uninstalls module variables and settings.
Code
function private_files_download_permission_update_7200() {
$transaction = db_transaction();
try {
// Remove useless settings from version 1.x.
foreach (user_roles() as $rid => $role_name) {
user_role_revoke_permissions($rid, array(
'download private files',
));
}
variable_del('private_files_download_permission_unprotected_subfolder');
// Implement new schema (rewritten from scratch, see https://drupal.org/node/150220).
$schema = array();
$schema['private_files_download_permission_directory'] = array(
'description' => 'Directories whose permissions are set.',
'fields' => array(
'did' => array(
'type' => 'serial',
'unsigned' => TRUE,
'not null' => TRUE,
),
'path' => array(
'type' => 'varchar',
'length' => 255,
'not null' => TRUE,
),
),
'primary key' => array(
'did',
),
'foreign keys' => array(),
'unique keys' => array(
'path' => array(
'path',
),
),
'indexes' => array(),
);
$schema['private_files_download_permission_directory_role'] = array(
'description' => 'Roles having per-directory download permission.',
'fields' => array(
'drid' => array(
'type' => 'serial',
'unsigned' => TRUE,
'not null' => TRUE,
),
'did' => array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
),
'rid' => array(
'type' => 'int',
'unsigned' => TRUE,
'not null' => TRUE,
),
),
'primary key' => array(
'drid',
),
'foreign keys' => array(
'private_files_download_permission_directory' => array(
'table' => 'private_files_download_permission_directory',
'columns' => array(
'did' => 'did',
),
),
'private_files_download_permission_directory_role' => array(
'table' => 'role',
'columns' => array(
'rid' => 'rid',
),
),
),
'unique keys' => array(),
'indexes' => array(),
);
db_create_table('private_files_download_permission_directory', $schema['private_files_download_permission_directory']);
db_create_table('private_files_download_permission_directory_role', $schema['private_files_download_permission_directory_role']);
// Add "real" foreign keys.
db_query('ALTER TABLE {private_files_download_permission_directory_role}
ADD CONSTRAINT {private_files_download_permission_directory}
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_role}
ADD CONSTRAINT {private_files_download_permission_directory_role}
FOREIGN KEY (rid) REFERENCES {role} (rid)
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');
}
}