/** * Restricting content to registered users and or user roles * * @since * @access public * * @param $atts * @param $content * @return mixed|void */ function rcp_restrict_shortcode($atts, $content = null) { $atts = shortcode_atts(array('userlevel' => 'none', 'message' => '', 'paid' => false, 'level' => 0, 'subscription' => ''), $atts, 'restrict'); global $rcp_options, $user_ID; if (strlen(trim($atts['message'])) > 0) { $teaser = $atts['message']; } elseif ($atts['paid']) { $teaser = $rcp_options['paid_message']; } else { $teaser = $rcp_options['free_message']; } $subscription = array_map('trim', explode(',', $atts['subscription'])); $has_access = false; if ($atts['paid']) { if (rcp_is_active($user_ID) && rcp_user_has_access($user_ID, $atts['level'])) { $has_access = true; } $classes = 'rcp_restricted rcp_paid_only'; } else { if (rcp_user_has_access($user_ID, $atts['level'])) { $has_access = true; } $classes = 'rcp_restricted'; } if (!empty($subscription) && !empty($subscription[0])) { if (!in_array(rcp_get_subscription_id($user_ID), $subscription) || in_array(rcp_get_subscription_id($user_ID), $subscription) && rcp_is_expired($user_ID)) { $has_access = false; } } if ($atts['userlevel'] === 'admin' && !current_user_can('switch_themes')) { $has_access = false; } if ($atts['userlevel'] === 'editor' && !current_user_can('moderate_comments')) { $has_access = false; } if ($atts['userlevel'] === 'author' && !current_user_can('upload_files')) { $has_access = false; } if ($atts['userlevel'] === 'contributor' && !current_user_can('edit_posts')) { $has_access = false; } if ($atts['userlevel'] === 'subscriber' && !current_user_can('read')) { $has_access = false; } if ($atts['userlevel'] === 'none' && !is_user_logged_in()) { $has_access = false; } if (current_user_can('manage_options')) { $has_access = true; } $has_access = (bool) apply_filters('rcp_restrict_shortcode_has_access', $has_access, $user_ID, $atts); if ($has_access) { return apply_filters('rcp_restrict_shortcode_return', $content); } else { return '<div class="' . $classes . '">' . rcp_format_teaser($teaser) . '</div>'; } }
function rcp_filter_feed_posts($content) { global $rcp_options; if (!is_feed()) { return $content; } $hide_from_feed = get_post_meta(get_the_ID(), 'rcp_hide_from_feed', true); if ($hide_from_feed == 'on') { if (rcp_is_paid_content($post_id)) { return rcp_format_teaser($rcp_options['paid_message']); } else { return rcp_format_teaser($rcp_options['free_message']); } } return do_shortcode($content); }
function rcp_restrict_shortcode( $atts, $content = null ) { extract( shortcode_atts( array( 'userlevel' => 'none', 'message' => '', 'paid' => false, 'level' => 0, 'subscription' => '' ), $atts ) ); global $rcp_options, $user_ID; if( strlen( trim( $message ) ) > 0 ) { $teaser = $message; } elseif( $paid ) { $teaser = $rcp_options['paid_message']; } else { $teaser = $rcp_options['free_message']; } $subscription = explode( ',', $subscription ); if( $paid ) { $has_access = false; if( rcp_is_active( $user_ID ) && rcp_user_has_access( $user_ID, $level ) ) { $has_access = true; if( ! empty( $subscription ) && ! empty( $subscription[0] ) ) { if( ! in_array( rcp_get_subscription_id( $user_ID ), $subscription ) ) { $has_access = false; } } } if ( $userlevel == 'admin' && current_user_can( 'switch_themes' ) && $has_access ) { return do_shortcode( wpautop( $content ) ); } if ( $userlevel == 'editor' && current_user_can( 'moderate_comments' ) && $has_access ) { return do_shortcode( wpautop( $content ) ); } if ( $userlevel == 'author' && current_user_can( 'upload_files' ) && $has_access ) { return do_shortcode( wpautop( $content ) ); } if ( $userlevel == 'contributor' && current_user_can( 'edit_posts' ) && $has_access ) { return do_shortcode( wpautop( $content ) ); } if ( $userlevel == 'subscriber' && current_user_can( 'read' ) && $has_access ) { return do_shortcode( wpautop( $content ) ); } if ( $userlevel == 'none' && is_user_logged_in() && $has_access ) { return do_shortcode( wpautop( $content ) ); } else { return '<div class="rcp_restricted rcp_paid_only">' . rcp_format_teaser($teaser) . '</div>'; } } else { $has_access = false; if(rcp_user_has_access($user_ID, $level)) { $has_access = true; if( ! empty( $subscription ) && ! empty( $subscription[0] ) ) { if( in_array( rcp_get_subscription_id( $user_ID ), $subscription ) ) { $has_access = false; } } } if ( $userlevel == 'admin' && current_user_can( 'switch_themes' ) && $has_access ) { return do_shortcode( wpautop( $content ) ); } elseif ( $userlevel == 'editor' && current_user_can( 'moderate_comments' ) && $has_access ) { return do_shortcode( wpautop( $content ) ); } elseif ( $userlevel == 'author' && current_user_can( 'upload_files' ) && $has_access ) { return do_shortcode( wpautop( $content ) ); } elseif ( $userlevel == 'contributor' && current_user_can( 'edit_posts' ) && $has_access ) { return do_shortcode( wpautop( $content ) ); } elseif ( $userlevel == 'subscriber' && current_user_can( 'read' ) && $has_access ) { return do_shortcode( wpautop( $content ) ); } elseif ( $userlevel == 'none' && is_user_logged_in() && $has_access ) { return do_shortcode( wpautop( $content ) ); } else { return '<div class="rcp_restricted">' . do_shortcode( wpautop( $teaser ) ) . '</div>'; } } }
function rcp_display_message_to_non_loggged_in_users($content) { global $rcp_options, $post, $user_ID; $message = isset($rcp_options['free_message']) ? $rcp_options['free_message'] : ''; $paid_message = isset($rcp_options['paid_message']) ? $rcp_options['paid_message'] : ''; if (rcp_is_paid_content($post->ID)) { $message = $paid_message; } $user_level = get_post_meta($post->ID, 'rcp_user_level', true); $access_level = get_post_meta($post->ID, 'rcp_access_level', true); $has_access = false; if (rcp_user_has_access($user_ID, $access_level)) { $has_access = true; } if (!is_user_logged_in() && ($user_level == 'Administrator' || $user_level == 'Editor' || $user_level == 'Author' || $user_level == 'Contributor' || $user_level == 'Subscriber') && $has_access) { return rcp_format_teaser($message); } // return the content unfilitered return $content; }
<?php global $rcp_options; $message = !empty($rcp_options['paid_message']) ? $rcp_options['paid_message'] : ''; if (empty($message)) { $message = __('This content is restricted to subscribers', 'rcp'); } ?> <div class="rcp-woocommerce-no-access"> <?php echo rcp_format_teaser($message); ?> </div>