diff --git a/admin/assets/css/um-admin-global.css b/admin/assets/css/um-admin-global.css index e7b98e69..638c9a37 100644 --- a/admin/assets/css/um-admin-global.css +++ b/admin/assets/css/um-admin-global.css @@ -20,8 +20,6 @@ -moz-osx-font-smoothing: grayscale !important; } -#um-admin-access-control * {vertical-align: middle} - #um-admin-access-control p {font-size: 13px} #um-admin-access-control input[type=text] {font-size: 13px} diff --git a/admin/core/um-admin-metabox.php b/admin/core/um-admin-metabox.php index b20f687e..a636903d 100644 --- a/admin/core/um-admin-metabox.php +++ b/admin/core/um-admin-metabox.php @@ -107,8 +107,10 @@ class UM_Admin_Metabox { ***/ function ui_on_off( $id, $default=0, $is_conditional=false, $cond1='', $cond1_show='', $cond1_hide='' ) { - if (isset($this->postmeta[$id][0])) { - $active = $this->postmeta[$id][0]; + $meta = get_post_meta( get_the_ID(), $id, true ); + + if (isset($this->postmeta[$id][0]) || $meta ) { + $active = ( isset( $this->postmeta[$id][0] ) ) ? $this->postmeta[$id][0] : $meta; } else { $active = $default; } diff --git a/admin/templates/access/settings.php b/admin/templates/access/settings.php index 2c0e5a5b..69cad4c3 100644 --- a/admin/templates/access/settings.php +++ b/admin/templates/access/settings.php @@ -1,51 +1,62 @@ -

tooltip( __('Who can access this content?','ultimatemember'), 'e'); ?>

+

tooltip( __('Switch to yes to override global access settings','ultimatemember'), 'e'); ?>

-

- - ID, '_um_accessible', true); ?> - -
-
- - +

+ + ui_on_off('_um_custom_access_settings', 0, true, 1, '_um_custom_access_settings', 'xxx'); ?>

-
+
-

tooltip( __('This is the URL that user is redirected to If he is not permitted to view this content','ultimatemember'), 'e'); ?>

+

tooltip( __('Who can access this content?','ultimatemember'), 'e'); ?>

-

+

- ID, '_um_access_redirect2', true); ?> - - - -

- -
- -
- -

tooltip( __('If you do not select any role, all members wil be able to view this content','ultimatemember'), 'e'); ?>

- -

- - ID, '_um_access_roles', true); ?> + ID, '_um_accessible', true); ?> - query->get_roles() as $role_id => $role) { ?> -
- - -

- -

tooltip( __('This is the URL that user is redirected to If he is not permitted to view this content','ultimatemember'), 'e'); ?>

- -

- - ID, '_um_access_redirect', true); ?> +
+
+ - -

+ +
+ +

tooltip( __('This is the URL that user is redirected to If he is not permitted to view this content','ultimatemember'), 'e'); ?>

+ +

+ + ID, '_um_access_redirect2', true); ?> + + +

+ +
+ +
+ +

tooltip( __('If you do not select any role, all members wil be able to view this content','ultimatemember'), 'e'); ?>

+ +

+ + ID, '_um_access_roles', true); ?> + + query->get_roles() as $role_id => $role) { ?> +
+ + +

+ +

tooltip( __('This is the URL that user is redirected to If he is not permitted to view this content','ultimatemember'), 'e'); ?>

+ +

+ + ID, '_um_access_redirect', true); ?> + + + +

+ +
+
\ No newline at end of file diff --git a/assets/css/um-account.css b/assets/css/um-account.css index 594a281c..bcf0146c 100644 --- a/assets/css/um-account.css +++ b/assets/css/um-account.css @@ -65,9 +65,9 @@ margin-bottom: 20px; } -.um-account-meta img { - border-radius: 999px; -} +.um-account-meta.radius-1 img { border-radius: 999px } +.um-account-meta.radius-2 img { border-radius: 4px } +.um-account-meta.radius-3 img { border-radius: 0 } .um-account-name a { font-weight: bold; diff --git a/assets/css/um-members.css b/assets/css/um-members.css index 19556dc2..20a503c5 100644 --- a/assets/css/um-members.css +++ b/assets/css/um-members.css @@ -170,7 +170,6 @@ .um-member-photo img { display: inline !important; - border-radius: 999px !important; border: 5px solid #fff; background: #fff; width: 140px; @@ -186,6 +185,10 @@ margin-bottom: -45px !important; } +.um-member-photo.radius-1 img { border-radius: 999px !important } +.um-member-photo.radius-2 img { border-radius: 4px !important } +.um-member-photo.radius-3 img { border-radius: 0 !important } + /* - Member name */ diff --git a/core/um-access.php b/core/um-access.php index b7b7c8ce..3c248932 100644 --- a/core/um-access.php +++ b/core/um-access.php @@ -4,11 +4,26 @@ class UM_Access { function __construct() { - // hook into template redirects [home] - add_action('template_redirect', array(&$this, 'custom_homepage_per_role'), 1000); + $this->redirect_handler = false; + $this->allow_access = false; - // hook into template redirects - add_action('template_redirect', array(&$this, 'post_page_access_control'), 999); + add_action('template_redirect', array(&$this, 'template_redirect'), 1000 ); + + } + + /*** + *** @do actions based on priority + ***/ + function template_redirect() { + + do_action('um_access_homepage_per_role'); + + do_action('um_access_global_settings'); + + do_action('um_access_post_settings'); + + if ( $this->redirect_handler && !$this->allow_access ) + exit( wp_redirect( $this->redirect_handler ) ); } @@ -30,66 +45,5 @@ class UM_Access { else return array(''); } - - /*** - *** @custom homepage per role - ***/ - function custom_homepage_per_role(){ - - if ( !is_user_logged_in() ) return; - if ( is_admin() ) return; - if ( um_user('default_homepage') ) return; - if ( !um_user('redirect_homepage') ) return; - - if( is_home() || is_front_page() ) - exit( wp_redirect( um_user('redirect_homepage') ) ); - - } - - /*** - *** @the main restrict function - ***/ - function post_page_access_control(){ - global $post; - - if ( !get_post_type() || !isset($post->ID) ) return; - - $args = $this->get_meta(); - extract($args); - - $redirect_to = null; - - if ( !isset( $accessible ) ) return; - - switch( $accessible ) { - - case 0: - break; - - case 1: - - if ( is_user_logged_in() ) - $redirect_to = $access_redirect2; - break; - - case 2: - - if ( !is_user_logged_in() ) - $redirect_to = $access_redirect; - - if ( isset( $access_roles ) && !empty( $access_roles ) ) - if ( !in_array( um_user('role'), unserialize( $access_roles ) ) ) - $redirect_to = $access_redirect; - - break; - - } - - if ( $redirect_to ) { - wp_redirect( $redirect_to ); - exit; - } - - } } \ No newline at end of file diff --git a/core/um-actions-access.php b/core/um-actions-access.php new file mode 100644 index 00000000..65d208ab --- /dev/null +++ b/core/um-actions-access.php @@ -0,0 +1,108 @@ +access->redirect_handler = um_user('redirect_homepage'); + } + + /*** + *** @ + ***/ + add_action('um_access_global_settings','um_access_global_settings'); + function um_access_global_settings() { + global $post, $ultimatemember; + + $access = um_get_option('accessible'); + + if ( $access == 2 && !is_user_logged_in() ) { + + $redirect = um_get_option('access_redirect'); + + $redirects[] = trailingslashit( um_get_core_page('login') ); + $redirects[] = trailingslashit( um_get_option('access_redirect') ); + + $exclude_uris = um_get_option('access_exclude_uris'); + + if ( $exclude_uris ) { + $redirects = array_merge( $redirects, $exclude_uris ); + } + + $current_url = trailingslashit( $ultimatemember->permalinks->get_current_url(true) ); + + if ( isset( $post->ID ) && in_array( $current_url, $redirects ) ) { + // allow + } else { + $ultimatemember->access->redirect_handler = $redirect; + } + } + + } + + /*** + *** @ + ***/ + add_action('um_access_post_settings','um_access_post_settings'); + function um_access_post_settings() { + global $post, $ultimatemember; + + if ( !get_post_type() || !isset($post->ID) ) return; + + $args = $ultimatemember->access->get_meta(); + extract($args); + + if ( !isset( $args['custom_access_settings'] ) || $args['custom_access_settings'] == 0 ) return; + + $redirect_to = null; + + if ( !isset( $accessible ) ) return; + + switch( $accessible ) { + + case 0: + $ultimatemember->access->allow_access = true; + $ultimatemember->access->redirect_handler = false; // open to everyone + break; + + case 1: + + if ( is_user_logged_in() ) + $redirect_to = $access_redirect2; + + if ( !is_user_logged_in() ) + $ultimatemember->access->allow_access = true; + + break; + + case 2: + + if ( !is_user_logged_in() ){ + if ( !$access_redirect ) $access_redirect = home_url(); + $redirect_to = $access_redirect; + } + + if ( is_user_logged_in() && isset( $access_roles ) && !empty( $access_roles ) ){ + if ( !in_array( um_user('role'), unserialize( $access_roles ) ) ) { + $redirect_to = $access_redirect; + } + } + + break; + + } + + if ( $redirect_to ) { + $ultimatemember->access->redirect_handler = $redirect_to; + } + + } \ No newline at end of file diff --git a/core/um-actions-account.php b/core/um-actions-account.php index ec990cc5..6d01139e 100644 --- a/core/um-actions-account.php +++ b/core/um-actions-account.php @@ -243,7 +243,7 @@ ?> -
+