static function get_redirect_url($requested_redirect_to) { global $wpdb, $rul_db_addresses; $redirect_to = false; $rul_all = $wpdb->get_var('SELECT rul_url FROM ' . $rul_db_addresses . ' WHERE rul_type = \'register\' LIMIT 1'); if ($rul_all) { $redirect_to = rulRedirectFunctionCollection::rul_replace_variable($rul_all, false); return $redirect_to; } // No rule exists return $redirect_to; }
function redirect_to_front_page($redirect_to, $requested_redirect_to, $user) { global $wpdb, $rul_db_addresses; // Check for an extended custom redirect rule $rul_custom_redirect = apply_filters('rul_before_user', false, $redirect_to, $requested_redirect_to, $user); if ($rul_custom_redirect) { $redirect_to = rulRedirectFunctionCollection::rul_replace_variable($rul_custom_redirect, $user); return $redirect_to; } // Check for a redirect rule for this user $rul_user = $wpdb->get_var('SELECT rul_url FROM ' . $rul_db_addresses . ' WHERE rul_type = \'user\' AND rul_value = \'' . $user->user_login . '\' LIMIT 1'); if ($rul_user) { $redirect_to = rulRedirectFunctionCollection::rul_replace_variable($rul_user, $user); return $redirect_to; } // Check for an extended custom redirect rule $rul_custom_redirect = apply_filters('rul_before_role', false, $redirect_to, $requested_redirect_to, $user); if ($rul_custom_redirect) { $redirect_to = rulRedirectFunctionCollection::rul_replace_variable($rul_custom_redirect, $user); return $redirect_to; } // Check for a redirect rule that matches this user's role $rul_roles = $wpdb->get_results('SELECT rul_value, rul_url FROM ' . $rul_db_addresses . ' WHERE rul_type = \'role\'', OBJECT); if ($rul_roles) { foreach ($rul_roles as $rul_role) { if (isset($user->{$wpdb->prefix . 'capabilities'}[$rul_role->rul_value])) { $redirect_to = rulRedirectFunctionCollection::rul_replace_variable($rul_role->rul_url, $user); return $redirect_to; } } } // Check for an extended custom redirect rule $rul_custom_redirect = apply_filters('rul_before_capability', false, $redirect_to, $requested_redirect_to, $user); if ($rul_custom_redirect) { $redirect_to = rulRedirectFunctionCollection::rul_replace_variable($rul_custom_redirect, $user); return $redirect_to; } // Check for a redirect rule that matches this user's capability $rul_levels = $wpdb->get_results('SELECT rul_value, rul_url FROM ' . $rul_db_addresses . ' WHERE rul_type = \'level\' ORDER BY rul_order, rul_value', OBJECT); if ($rul_levels) { foreach ($rul_levels as $rul_level) { if (rulRedirectFunctionCollection::redirect_current_user_can($rul_level->rul_value, $user)) { $redirect_to = rulRedirectFunctionCollection::rul_replace_variable($rul_level->rul_url, $user); return $redirect_to; } } } // Check for an extended custom redirect rule $rul_custom_redirect = apply_filters('rul_before_fallback', false, $redirect_to, $requested_redirect_to, $user); if ($rul_custom_redirect) { $redirect_to = rulRedirectFunctionCollection::rul_replace_variable($rul_custom_redirect, $user); return $redirect_to; } // If none of the above matched, look for a rule to apply to all users $rul_all = $wpdb->get_var('SELECT rul_url FROM ' . $rul_db_addresses . ' WHERE rul_type = \'all\' LIMIT 1'); if ($rul_all) { $redirect_to = rulRedirectFunctionCollection::rul_replace_variable($rul_all, $user); return $redirect_to; } // No rules matched or existed, so just send them to the WordPress admin panel as usual return $redirect_to; }