| @@ -68,8 +68,21 @@ | ||
| 68 | 68 | } |
| 69 | 69 | foreach(array_keys($caps) as $cap) |
| 70 | 70 | $role->add_cap($cap); |
| 71 | 71 | } |
| 72 | + //260822.0520 `delete` now expires membership access into a dedicated read-only Pending Deletion role by default; irreversible user deletion requires an explicit developer opt-in. | |
| 73 | + if(!($role = get_role('s2member_pending_deletion'))) | |
| 74 | + { | |
| 75 | + add_role('s2member_pending_deletion', 'Pending Deletion', array('read' => TRUE)); | |
| 76 | + $role = get_role('s2member_pending_deletion'); | |
| 77 | + } | |
| 78 | + if($role) | |
| 79 | + { | |
| 80 | + $role->add_cap('read'); | |
| 81 | + for($n = 0; $n <= $GLOBALS['WS_PLUGIN__']['s2member']['c']['max_levels']; $n++) | |
| 82 | + $role->remove_cap('access_s2member_level'.$n); | |
| 83 | + } | |
| 84 | + | |
| 72 | 85 | for($n = 1; $n <= $GLOBALS['WS_PLUGIN__']['s2member']['c']['levels']; $n++) |
| 73 | 86 | { |
| 74 | 87 | for($i = 0, $caps = array('read' => TRUE, 'level_0' => TRUE); $i <= $n; $i++) |
| 75 | 88 | $caps = array_merge($caps, array('access_s2member_level'.$i => TRUE)); |
| @@ -146,8 +159,9 @@ | ||
| 146 | 159 | $role->remove_cap('access_s2member_level0'); |
| 147 | 160 | |
| 148 | 161 | for($n = 1; $n <= $GLOBALS['WS_PLUGIN__']['s2member']['c']['max_levels']; $n++) |
| 149 | 162 | remove_role('s2member_level'.$n); |
| 163 | + remove_role('s2member_pending_deletion'); //260822.0520 Recreated by config_roles(); removed cleanly with other s2Member-owned roles. | |
| 150 | 164 | |
| 151 | 165 | $full_access_roles = array('administrator', 'editor', 'author', 'contributor'); |
| 152 | 166 | |
| 153 | 167 | if(!function_exists('bbp_get_dynamic_roles') && function_exists('bbp_get_caps_for_role') && function_exists('bbp_get_moderator_role')) |