Viewing File: /home/fshjisk/mimikoparis/wp-content/plugins/content-control/classes/Site/Posts.php

<?php


namespace JP\CC\Site;

use JP\CC\Options;

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}


/**
 * Class Posts
 *
 * @package JP\CC\Site
 */
class Posts {

	public static function init() {
		add_action( 'the_content', array( __CLASS__, 'the_content' ), 1000 );
		add_filter( 'jp_cc_restricted_message', array( __CLASS__, 'restricted_message_filter' ), 10, 1 );
	}

	public static function protection_disabled() {
		$checks = array(
			is_preview() && current_user_can( 'edit_post', get_the_ID() ),
			did_action( 'elementor/loaded' ) && class_exists( '\Elementor\Plugin' ) && isset( \Elementor\Plugin::$instance ) && isset( \Elementor\Plugin::$instance->preview ) && method_exists( \Elementor\Plugin::$instance->preview, 'is_preview_mode') && \Elementor\Plugin::$instance->preview->is_preview_mode(),
		);

		return in_array( true, $checks, true );
	}

	/**
	 * @param $content
	 *
	 * @return mixed|string
	 */
	public static function the_content( $content ) {
		if ( self::protection_disabled() ) {
			return $content;
		}

		global $post;

		if ( ! $post || ! is_object( $post ) || $post->ID <= 0 ) {
			return $content;
		}

		if ( ! isset( Restrictions::$protected_posts[ $post->ID ] ) ) {
			Restrictions::$protected_posts[ $post->ID ] = Restrictions::restricted_content();
		}

		$restricted_content = Restrictions::$protected_posts[ $post->ID ];

		if ( ! $restricted_content ) {
			return $content;
		}

		if ( isset( $restricted_content['override_default_message'] ) ) {
			$message = $restricted_content['custom_message'];
		} else {
			$message = Options::get( 'default_denial_message', '' );
		}

		if ( empty( $message ) ) {
			$message = __( 'This content is restricted.', 'content-control' );
		}

		return static::format_message( do_shortcode( $message ) );
	}

	public static function restricted_message_filter( $message ) {
		if ( is_feed() ) {
			return $message;
		}
		return do_shortcode( wpautop( $message ) );
	}

	public static function format_message( $message ) {
		global $post;

		$restriction = Restrictions::get_rules( $post->ID );

		if ( ! empty( $restriction['show_excerpts'] ) ) {
			$excerpt_length = 50;

			if ( has_filter( 'jp_cc_filter_excerpt_length' ) ) {
				$excerpt_length = apply_filters( 'jp_cc_filter_excerpt_length', $excerpt_length );
			}

			$excerpt = static::excerpt_by_id( $post, $excerpt_length );
			$message = apply_filters( 'jp_cc_restricted_message', $message );
			$message = $excerpt . $message;
		} else {
			$message = apply_filters( 'jp_cc_restricted_message', $message );
		}

		return $message;
	}

	public static function excerpt_by_id( $post, $length = 50, $tags = '<a><em><strong><blockquote><ul><ol><li><p>', $extra = ' . . .' ) {
		if ( is_int( $post ) ) {
			// get the post object of the passed ID
			$post = get_post( $post );
		} elseif ( ! is_object( $post ) ) {
			return false;
		}

		$more = false;

		if ( has_excerpt( $post->ID ) ) {
			$the_excerpt = $post->post_excerpt;
		} elseif ( strstr( $post->post_content, '<!--more-->' ) ) {
			$more        = true;
			$length      = strpos( $post->post_content, '<!--more-->' );
			$the_excerpt = $post->post_content;
		} else {
			$the_excerpt = $post->post_content;
		}

		$tags = apply_filters( 'jp_cc_excerpt_tags', $tags );

		if ( $more ) {
			$the_excerpt = strip_shortcodes( strip_tags( stripslashes( substr( $the_excerpt, 0, $length ) ), $tags ) );
		} else {
			$the_excerpt   = strip_shortcodes( strip_tags( stripslashes( $the_excerpt ), $tags ) );
			$the_excerpt   = preg_split( '/\b/', $the_excerpt, $length * 2 + 1 );
			$excerpt_waste = array_pop( $the_excerpt );
			$the_excerpt   = implode( $the_excerpt );
			$the_excerpt .= $extra;
		}

		return wpautop( $the_excerpt );
	}

}
Back to Directory File Manager