function private_files_download_permission_get_directory_form_submit in Private files download permission 7.2
(Form callback.) Submits the directory form.
File
- ./
private_files_download_permission.module, line 361 - Handles both module settings and its behaviour.
Code
function private_files_download_permission_get_directory_form_submit($form, &$form_state) {
$transaction = db_transaction();
try {
// Retrieve form values.
$did = $form_state['values']['did'];
$path = $form_state['values']['path'];
$bypass = $form_state['values']['bypass'];
$grant_file_owners = $form_state['values']['grant_file_owners'];
if (variable_get('private_files_download_permission_by_user_checks')) {
$users = array();
}
$roles = array();
foreach ($form_state['values'] as $key => $value) {
if (variable_get('private_files_download_permission_by_user_checks')) {
if (0 === strpos($key, 'user_')) {
$uid = drupal_substr($key, drupal_strlen('user_'));
$users[$uid] = $value;
}
}
if (0 === strpos($key, 'role_')) {
$rid = drupal_substr($key, drupal_strlen('role_'));
$roles[$rid] = $value;
}
}
// Write directory record.
$directory_record = array(
'did' => $did,
'path' => $path,
'bypass' => $bypass,
'grant_file_owners' => $grant_file_owners,
);
if (NULL === $did) {
drupal_write_record('private_files_download_permission_directory', $directory_record);
}
else {
drupal_write_record('private_files_download_permission_directory', $directory_record, array(
'did',
));
}
// Retrieve last record id.
if (NULL === $did) {
$did = $directory_record['did'];
}
// Delete old user permissions and write new ones.
if (variable_get('private_files_download_permission_by_user_checks')) {
db_delete('private_files_download_permission_directory_user')
->condition('did', $did)
->execute();
foreach ($users as $uid => $value) {
if (TRUE == $value) {
db_insert('private_files_download_permission_directory_user')
->fields(array(
'did' => $did,
'uid' => $uid,
))
->execute();
}
}
}
// Delete old role permissions and write new ones.
db_delete('private_files_download_permission_directory_role')
->condition('did', $did)
->execute();
foreach ($roles as $rid => $value) {
if (TRUE == $value) {
db_insert('private_files_download_permission_directory_role')
->fields(array(
'did' => $did,
'rid' => $rid,
))
->execute();
}
}
} catch (Exception $e) {
$transaction
->rollback();
drupal_set_message(t('An error occurred while saving directory to the control list. Possible duplication? Please check the log for details.'), 'error');
}
// Purge directory list from cache.
drupal_static_reset('private_files_download_permission_get_directory_list');
// Set form redirection.
$form_state['redirect'] = 'admin/config/media/private-files-download-permission';
}