PluginProbe
Content Control – The Ultimate Content Restriction Plugin! Restrict Content, Create Conditional Blocks & More / 1.0.3
Content Control – The Ultimate Content Restriction Plugin! Restrict Content, Create Conditional Blocks & More v1.0.3
trunk 1.0.0 1.0.1 1.0.2 1.0.3 1.1.0 1.1.1 1.1.10 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 2.0.0 2.0.1 2.0.10 2.0.11 2.0.12 2.0.2 2.0.3 2.0.4 2.0.5 2.0.6 All 47 releases
content-control / classes / Shortcodes.php

Shortcodes.php in Content Control – The Ultimate Content Restriction Plugin! Restrict Content, Create Conditional Blocks & More 1.0.3, at classes/Shortcodes.php

80 lines 1.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3
4 namespace JP\CC;
5
6 if ( ! defined( 'ABSPATH' ) ) {
7 exit;
8 }
9
10 /**
11 * Class Shortcodes
12 * @package JP\CC
13 */
14 class Shortcodes {
15
16 /**
17 * Initialize Widgets
18 */
19 public static function init() {
20 add_shortcode( 'content_control', array( __CLASS__, 'content_control' ) );
21 }
22
23 /**
24 * Process the [content_control] shortcode.
25 *
26 * @param $atts
27 * @param string $content
28 *
29 * @return string
30 */
31 public static function content_control( $atts, $content = '' ) {
32
33 $atts = shortcode_atts( array(
34 'logged_out' => null,
35 'roles' => array(),
36 'class' => '',
37 'message' => '',
38 ), static::normalize_empty_atts( $atts ), 'content_control' );
39
40 $who = isset( $atts['logged_out'] ) ? 'logged_out' : 'logged_in';
41
42 $roles = ! is_array( $atts['roles'] ) ? explode( ',', $atts['roles'] ) : $atts['roles'];
43 $roles = array_map( 'trim', $roles );
44
45 $classes = ! is_array( $atts['class'] ) ? explode( ' ', $atts['class'] ) : $atts['class'];
46 $classes[] = 'jp-cc';
47
48 if ( Is::accessible( $who, $roles, 'shortcode' ) ) {
49 $classes[] = 'jp-cc-accessible';
50 $container = '<div class="%1$s">%2$s</div>';
51 } else {
52 $classes[] = 'jp-cc-not-accessible';
53 $container = '<p class="%1$s">%3$s</p>';
54 }
55
56 $classes = implode( ' ', $classes );
57
58 return sprintf( $container, $classes, $content, $atts['message'] );
59 }
60
61 /**
62 * Takes empty attributes and sets them to true.
63 *
64 * @param $atts
65 *
66 * @return mixed
67 */
68 public static function normalize_empty_atts( $atts ) {
69 foreach ( $atts as $attribute => $value ) {
70 if ( is_int( $attribute ) ) {
71 $atts[ strtolower( $value ) ] = true;
72 unset( $atts[ $attribute ] );
73 }
74 }
75
76 return $atts;
77 }
78
79 }
80