true, "level_0" => true); $caps = array_merge ($caps, array ("access_s2member_level0" => true)); $caps = (!empty ($bbp_caps)) ? array_merge ($caps, $bbp_caps) : $caps; /**/ if (!($role = &get_role ("subscriber"))) { add_role ("subscriber", "Subscriber"); $role = &get_role ("subscriber"); } /**/ foreach (array_keys ($caps) as $cap) $role->add_cap ($cap); } /**/ for ($n = 1; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++) { for ($i = 0, $caps = array ("read" => true, "level_0" => true); $i <= $n; $i++) $caps = array_merge ($caps, array ("access_s2member_level" . $i => true)); $caps = (!empty ($bbp_caps)) ? array_merge ($caps, $bbp_caps) : $caps; /**/ if (!($role = &get_role ("s2member_level" . $n))) { add_role ("s2member_level" . $n, "s2Member Level " . $n); $role = &get_role ("s2member_level" . $n); } /**/ foreach (array_keys ($caps) as $cap) $role->add_cap ($cap); } /**/ foreach (array ("administrator", "editor", "author", "contributor", "bbp_moderator") as $role) { if (($role = &get_role ($role))) for ($n = 0; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++) $role->add_cap ("access_s2member_level" . $n); } } /**/ do_action ("ws_plugin__s2member_after_config_roles", get_defined_vars ()); /**/ return; /* Return for uniformity. */ } /** * Unlinks Roles/Capabilities. * * @package s2Member\Roles_Caps * @since 110524RC * * @return null */ public static function unlink_roles () { do_action ("ws_plugin__s2member_before_unlink_roles", get_defined_vars ()); /**/ if (!apply_filters ("ws_plugin__s2member_lock_roles_caps", false)) { if (($role = &get_role ("subscriber"))) $role->remove_cap ("access_s2member_level0"); /**/ for ($n = 1; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["max_levels"]; $n++) remove_role("s2member_level" . $n); /**/ foreach (array ("administrator", "editor", "author", "contributor", "bbp_moderator") as $role) { if (($role = &get_role ($role))) for ($n = 0; $n <= $GLOBALS["WS_PLUGIN__"]["s2member"]["c"]["levels"]; $n++) $role->remove_cap ("access_s2member_level" . $n); } } /**/ do_action ("ws_plugin__s2member_after_unlink_roles", get_defined_vars ()); /**/ return; /* Return for uniformity. */ } /** * Updates Roles/Capabilities via AJAX. * * @package s2Member\Roles_Caps * @since 110524RC * * @attaches-to: ``add_action("wp_ajax_ws_plugin__s2member_update_roles_via_ajax");`` * * @return null Exits script execution after output for AJAX caller. */ public static function update_roles_via_ajax () { if (!apply_filters ("ws_plugin__s2member_lock_roles_caps", false)) { c_ws_plugin__s2member_roles_caps::config_roles (); /**/ exit("1"); /* Success. */ } else exit("0"); /* Locked. */ } } } ?>