aboutsummaryrefslogtreecommitdiffstats
path: root/HTPasswdSync.module
diff options
context:
space:
mode:
authorstfwi <cerberos@atwillys.de>2011-07-05 22:23:29 +0100
committerstfwi <cerberos@atwillys.de>2011-07-05 22:23:29 +0100
commit95c6ce268f486ceca7628b378ee17414a7708e0e (patch)
tree979c3faf66b58655289edb5fbbddc817f9e7860b /HTPasswdSync.module
parentb0b08818dddb16360417cc8527424892b7ee24f2 (diff)
downloaddrupal_htpasswdsync-95c6ce268f486ceca7628b378ee17414a7708e0e.tar.gz
drupal_htpasswdsync-95c6ce268f486ceca7628b378ee17414a7708e0e.tar.bz2
drupal_htpasswdsync-95c6ce268f486ceca7628b378ee17414a7708e0e.zip
When changing user roles in the config form, the group file is now directly updated. The cron file update was removed as it is now obsolete.
Diffstat (limited to 'HTPasswdSync.module')
-rw-r--r--HTPasswdSync.module51
1 files changed, 39 insertions, 12 deletions
diff --git a/HTPasswdSync.module b/HTPasswdSync.module
index 36861bc..4c65b21 100644
--- a/HTPasswdSync.module
+++ b/HTPasswdSync.module
@@ -233,6 +233,24 @@ function _htpasswdsync_updategroup() {
/**
+ * Removes a group from a file given either by RID or by role name.
+ * @param mixed $role
+ */
+function _htpasswdsync_remove_role($role) {
+ if(is_numeric($role)) {
+ $role = reset(db_query('SELECT name FROM {role} WHERE rid = :rid', array(':rid' => $role))->fetchCol());
+ }
+ $role = _htpasswdsync_sanatize_name($role);
+ $file = _htpasswdsync_grpfilename();
+ $groups = _htpasswdsync_read_htfile($file);
+ if(isset($groups[$role])) {
+ unset($groups[$role]);
+ _htpasswdsync_write_htfile($groups, $file);
+ }
+}
+
+
+/**
* Generate the htpasswd content from the database update the htpasswd file
* from the table htpasswdsync_passwd
* @return void
@@ -393,7 +411,7 @@ function htpasswdsync_user_role_update($role) {
* @param object $role
* @return void
*/
-function htpasswdsync_user_role_delete($role) {
+function htpasswdsync_user_role_delete($role) {
_htpasswdsync_updategroup();
}
@@ -434,7 +452,7 @@ function htpasswdsync_menu() {
'title' => 'Htpasswd file synchronization',
'description' => 'Preferences for the HTPasswd Sync module',
'page callback' => 'drupal_get_form',
- 'page arguments' => array('htpasswdsync_admin'),
+ 'page arguments' => array('htpasswdsync_admin_form'),
'access arguments' => array('administer htpasswdsync'),
);
return $items;
@@ -445,7 +463,15 @@ function htpasswdsync_menu() {
* Returns the configuration form structure
* @return array
*/
-function htpasswdsync_admin() {
+function htpasswdsync_admin_form() {
+ // A workaround to update the files directly after saving the config form,
+ // Because the form is displayed directly after saving.
+ if(variable_get('htpasswdsync_flag_needs_rebuild', false)) {
+ variable_del('htpasswdsync_flag_needs_rebuild');
+ _htpasswdsync_updatepasswd();
+ _htpasswdsync_updategroup();
+ }
+
$form['htpasswdsync_htpasswd'] = array(
'#type' => 'textfield',
'#title' => t('htpasswd file'),
@@ -506,7 +532,6 @@ function htpasswdsync_admin() {
);
// Small description ...
-
$notewhitespaces = _htpasswdsync_names_lowercase() ? " Enter your login name without whitespaces and special characters." : "";
$txt = t('This is how a simple .htaccess file could look like:')
@@ -540,7 +565,7 @@ function htpasswdsync_admin() {
* @param array& $form_state
* @return void
*/
-function htpasswdsync_admin_validate($form, &$form_state) {
+function htpasswdsync_admin_form_validate($form, &$form_state) {
$form_state['values']['htpasswdsync_htpasswd'] = trim($form_state['values']['htpasswdsync_htpasswd']);
$form_state['values']['htpasswdsync_htgroup'] = trim($form_state['values']['htpasswdsync_htgroup']);
$error = false;
@@ -572,9 +597,14 @@ function htpasswdsync_admin_validate($form, &$form_state) {
}
// Directly apply changes if no validation errors
- if(!$error) {
- _htpasswdsync_updatepasswd();
- _htpasswdsync_updategroup();
+ if($error == false) {
+ // A workaround to update the files directly after saving the config form
+ variable_set('htpasswdsync_flag_needs_rebuild', true);
+ foreach(_htpasswdsync_roles() as $role) {
+ if($role > 0 && !in_array($role, $form_state['values']['htpasswdsync_roles'])) {
+ _htpasswdsync_remove_role($role);
+ }
+ }
}
}
@@ -639,9 +669,6 @@ function htpasswdsync_requirements($phase) {
* @return void
*/
function htpasswdsync_cron() {
- $time = variable_get('htpasswdsync_cron_time', 0);
- _htpasswdsync_commit_to_htpasswd();
- $res = db_query('DELETE FROM {htpasswdsync_htpasswd} WHERE username NOT IN (SELECT name from {users})');
- variable_set('htpasswdsync_cron_time', time());
+ db_query('DELETE FROM {htpasswdsync_htpasswd} WHERE username NOT IN (SELECT name from {users})');
}
?>

© 2014-2024 Faster IT GmbH | imprint | privacy policy