function override_node_options_settings_form_submit in Override Node Options 7
Submit handler for settings form.
1 string reference to 'override_node_options_settings_form_submit'
- override_node_options_settings_form in ./
override_node_options.module - Settings form.
File
- ./
override_node_options.module, line 155 - Main module file for override_node_options.
Code
function override_node_options_settings_form_submit(&$form, &$form_state) {
// Get old perms to compare.
$old_perms = variable_get('override_node_options_permissions', array(
'general',
'specific',
));
$new_perms = $form_state['values']['override_node_options_permissions'];
// Clean up saved permissions.
$role_names = user_roles();
$revoke = array();
$alert = FALSE;
if (!in_array('specific', $new_perms, TRUE) && in_array('specific', $old_perms, TRUE)) {
$alert = TRUE;
$permissions = array();
foreach (node_permissions_get_configured_types() as $type) {
$permissions += override_node_options_list_permissions($type);
}
foreach ($permissions as $permission => $description) {
$revoke[$permission] = FALSE;
}
// Be sure to clear the cache.
cache_clear_all();
}
if (!in_array('general', $new_perms, TRUE) && in_array('general', $old_perms, TRUE)) {
$alert = TRUE;
$revoke = array(
'override all published option' => FALSE,
'override all promote to front page option' => FALSE,
'override all sticky option' => FALSE,
'override all revision option' => FALSE,
'enter all revision log entry' => FALSE,
'override all authored on option' => FALSE,
'override all authored by option' => FALSE,
);
if (module_exists('comment')) {
$revoke['override all comment setting option'] = FALSE;
}
}
// Any specific grants not used anymore need to be deleted.
if (!empty($revoke)) {
foreach ($role_names as $rid => $name) {
user_role_change_permissions($rid, $revoke);
}
}
// Set a helpful message.
$message = 'Configuration saved.';
$arguments = array();
$status = 'status';
if ($alert) {
if (user_access('administer permissions')) {
$arguments = array(
'!permissions' => l(t('the permissions page'), 'admin/config/people/permissions', array(
'fragment' => 'module-override_node_options',
)),
);
$message .= t('Please visit !permissions and double check access.');
$status = 'warning';
}
else {
$message .= t('Please visit the permissions page and double check access.');
}
}
drupal_set_message(t($message, $arguments), $status);
}