/**
 * 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);
}
Esempio n. 3
0
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>