Advertisement
verygoodplugins

Untitled

Mar 18th, 2021
889
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.67 KB | None | 0 0
  1.     private function can_access( $element ) {
  2.  
  3.         if ( is_admin() ) {
  4.             return true;
  5.         }
  6.  
  7.         $visibility      = $element->get_settings( 'wpf_visibility' );
  8.         $widget_tags     = $element->get_settings( 'wpf_tags' );
  9.         $widget_tags_all = $element->get_settings( 'wpf_tags_all' );
  10.         $widget_tags_not = $element->get_settings( 'wpf_tags_not' );
  11.  
  12.         if ( ( empty( $visibility ) || 'everyone' == $visibility ) && empty( $widget_tags ) && empty( $widget_tags_all ) && empty( $widget_tags_not ) ) {
  13.  
  14.             // No settings, allow access
  15.  
  16.             $can_access = apply_filters( 'wpf_elementor_can_access', true, $element );
  17.  
  18.             return apply_filters( 'wpf_user_can_access', $can_access, wpf_get_current_user_id(), false );
  19.  
  20.         }
  21.  
  22.         if ( wp_fusion()->settings->get( 'exclude_admins' ) == true && current_user_can( 'manage_options' ) ) {
  23.             return true;
  24.         }
  25.  
  26.         $can_access = true;
  27.  
  28.         if ( wpf_is_user_logged_in() ) {
  29.  
  30.             $user_tags = wp_fusion()->user->get_tags();
  31.  
  32.             if ( 'everyone' == $visibility || 'loggedin' == $visibility ) {
  33.  
  34.                 // See if user has required tags
  35.  
  36.                 if ( ! empty( $widget_tags ) ) {
  37.  
  38.                     // Required tags (any)
  39.  
  40.                     $result = array_intersect( $widget_tags, $user_tags );
  41.  
  42.                     if ( empty( $result ) ) {
  43.                         $can_access = false;
  44.                     }
  45.                 }
  46.  
  47.                 if ( true == $can_access && ! empty( $widget_tags_all ) ) {
  48.  
  49.                     // Required tags (all)
  50.  
  51.                     $result = array_intersect( $widget_tags_all, $user_tags );
  52.  
  53.                     if ( count( $result ) != count( $widget_tags_all ) ) {
  54.                         $can_access = false;
  55.                     }
  56.                 }
  57.  
  58.                 if ( true == $can_access && ! empty( $widget_tags_not ) ) {
  59.  
  60.                     // Required tags (not)
  61.  
  62.                     $result = array_intersect( $widget_tags_not, $user_tags );
  63.  
  64.                     if ( ! empty( $result ) ) {
  65.                         $can_access = false;
  66.                     }
  67.                 }
  68.             } elseif ( 'loggedout' == $visibility ) {
  69.  
  70.                 // The user is logged in but the widget is set to logged-out only
  71.                 $can_access = false;
  72.  
  73.             }
  74.         } else {
  75.  
  76.             // Not logged in
  77.  
  78.             if ( 'loggedin' == $visibility ) {
  79.  
  80.                 // The user is not logged in but the widget is set to logged-in only
  81.                 $can_access = false;
  82.  
  83.             } elseif ( 'everyone' == $visibility ) {
  84.  
  85.                 // Also deny access if tags are specified
  86.  
  87.                 if ( ! empty( $widget_tags ) || ! empty( $widget_tags_all ) ) {
  88.                     $can_access = false;
  89.                 }
  90.             }
  91.         }
  92.  
  93.         $can_access = apply_filters( 'wpf_elementor_can_access', $can_access, $element );
  94.  
  95.         global $post;
  96.  
  97.         if ( ! empty( $post ) ) {
  98.             $post_id = $post->ID;
  99.         } else {
  100.             $post_id = 0;
  101.         }
  102.  
  103.         $can_access = apply_filters( 'wpf_user_can_access', $can_access, wpf_get_current_user_id(), $post_id );
  104.  
  105.         if ( $can_access ) {
  106.             return true;
  107.         } else {
  108.             return false;
  109.         }
  110.  
  111.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement