PluginProbe ʕ •ᴥ•ʔ
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress / trunk
Paid Membership Plugin, Ecommerce, User Registration Form, Login Form, User Profile & Restrict Content – ProfilePress vtrunk
4.16.18 4.16.17 4.16.16 trunk 1.0 1.0.1 1.0.2 1.1 1.1.1 1.1.2 1.1.3 1.1.4 1.1.5 1.1.5a 1.1.6 1.1.7 1.2 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.2.6 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 1.3.6 1.4 1.4.1 1.4.2 1.5 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6 1.6.1 1.6.2 1.6.3 1.6.4 1.6.5 1.6.6 1.6.7 1.6.8 1.7 1.7.1 1.7.2 1.8 1.8.1 1.8.10 1.8.2 1.8.3 1.8.4 1.8.5 1.8.6 1.8.7 1.8.8 1.8.9 1.9 1.9.1 1.9.10 1.9.11 1.9.12 1.9.13 1.9.2 1.9.3 1.9.4 1.9.5 1.9.6 1.9.7 1.9.8 1.9.9 2.1.9 2.2.10 2.2.11 2.2.12 2.2.13 2.2.14 2.2.15 2.2.16 2.2.2 2.2.5 2.2.6 2.2.7 2.2.8 2.2.9 3.0 3.1 3.1.1 3.1.10 3.1.11 3.1.12 3.1.13 3.1.14 3.1.15 3.1.16 3.1.17 3.1.18 3.1.19 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.1.7 3.1.8 3.1.9 3.2.0 3.2.1 3.2.10 3.2.11 3.2.12 3.2.13 3.2.14 3.2.15 3.2.16 3.2.2 3.2.3 3.2.4 3.2.5 3.2.6 3.2.7 3.2.8 3.2.9 4.0.0 4.0.1 4.0.2 4.0.3 4.1.0 4.1.1 4.1.2 4.1.3 4.1.4 4.10.0 4.10.1 4.10.2 4.10.3 4.11.0 4.12.0 4.13.0 4.13.1 4.13.2 4.13.3 4.13.4 4.14.0 4.14.1 4.14.2 4.14.3 4.14.4 4.15.0 4.15.1 4.15.10 4.15.11 4.15.12 4.15.13 4.15.14 4.15.15 4.15.16 4.15.17 4.15.18 4.15.19 4.15.2 4.15.20 4.15.20.1 4.15.21 4.15.22 4.15.23 4.15.24 4.15.25 4.15.3 4.15.4 4.15.5 4.15.6 4.15.7 4.15.8 4.15.9 4.16.0 4.16.1 4.16.10 4.16.11 4.16.12 4.16.13 4.16.14 4.16.15 4.16.2 4.16.3 4.16.4 4.16.5 4.16.6 4.16.7 4.16.8 4.16.9 4.2.0 4.3.0 4.3.1 4.3.2 4.4.0 4.4.1 4.5.0 4.5.1 4.5.2 4.5.3 4.5.4 4.5.5 4.6.0 4.7.0 4.8.0 4.9.0
wp-user-avatar / src / ContentProtection / ConditionalBlocksIntegration.php
wp-user-avatar / src / ContentProtection Last commit date
Frontend 3 months ago views 1 year ago CapabilityCheck.php 3 years ago ConditionCallbacks.php 3 years ago ConditionalBlocksIntegration.php 3 years ago ContentConditions.php 6 months ago ElementorDisplayCondition.php 1 month ago ElementorRestriction.php 3 years ago Init.php 1 month ago NavMenuProtection.php 3 years ago SettingsPage.php 1 year ago WPListTable.php 1 year ago index.php 5 years ago
ConditionalBlocksIntegration.php
120 lines
1 <?php
2
3 namespace ProfilePress\Core\ContentProtection;
4
5 use ProfilePress\Core\Membership\Models\Customer\CustomerFactory;
6 use ProfilePress\Core\Membership\Repositories\PlanRepository;
7
8 class ConditionalBlocksIntegration
9 {
10 public function __construct()
11 {
12 add_action('plugins_loaded', [$this, 'init'], 20);
13 }
14
15 public function init()
16 {
17 if (defined('CONDITIONAL_BLOCKS_PATH')) {
18 add_filter('conditional_blocks_register_condition_categories', [$this, 'condition_category'], 1);
19 add_filter('conditional_blocks_register_condition_types', [$this, 'conditions'], 1);
20 add_filter('conditional_blocks_register_check_ppress_subscribed_membership_plan', [$this, 'visibility_check'], 10, 2);
21 }
22 }
23
24 public function condition_category($categories)
25 {
26 $categories[] = array(
27 'value' => 'profilepress',
28 'label' => 'ProfilePress',
29 );
30
31 return $categories;
32
33 }
34
35 public function conditions($conditions)
36 {
37
38 // Add a new condition to your group.
39 $conditions[] = array(
40 'type' => 'ppress_subscribed_membership_plan', // Important: The type identities the condition and should NOT be changed.
41 'label' => 'Active Membership Plans',
42 'description' => esc_html__('The selected block will only be visible to users with an active subscription to the chosen membership plans below.', 'wp-user-avatar'),
43 'category' => 'profilepress',
44 'fields' => [
45 [
46 'key' => 'profilepress_membership_plans',
47 'type' => 'select',
48 'attributes' => [
49 'multiple' => true
50 ],
51 'options' => (function () {
52 $plans = PlanRepository::init()->retrieveAll();
53 $options = [];
54 if (is_array($plans) && ! empty($plans)) {
55 foreach ($plans as $plan) {
56 $options[] = [
57 'value' => $plan->get_id(),
58 'label' => $plan->get_name(),
59 ];
60 }
61 }
62
63 return $options;
64 })()
65 ],
66 [
67 'key' => 'blockAction', // Default key.
68 'type' => 'blockAction', // Reuse the common field for choosing the Block Action.
69 ],
70 ],
71 );
72
73 return $conditions;
74 }
75
76 /**
77 * @param bool $should_block_render if condition passed validation.
78 * @param array $condition contains the configured conditions with keys/values.
79 *
80 * @return bool $should_block_render - defaults to false.
81 */
82 function visibility_check($should_block_render, $condition)
83 {
84 $has_match = false;
85
86 if (is_user_logged_in()) {
87 if ( ! empty($condition['profilepress_membership_plans']) && is_array($condition['profilepress_membership_plans'])) {
88 foreach ($condition['profilepress_membership_plans'] as $plan) {
89 if (CustomerFactory::fromUserId(get_current_user_id())->has_active_subscription(intval($plan['value']))) {
90 $has_match = true;
91 }
92 }
93 }
94 }
95
96 // Reuse the Block Action from other conditions.
97 $block_action = ! empty($condition['blockAction']) ? $condition['blockAction'] : 'showBlock';
98
99 if ($has_match && $block_action === 'showBlock') {
100 $should_block_render = true;
101 } elseif ( ! $has_match && $block_action === 'hideBlock') {
102 $should_block_render = true;
103 }
104
105 return $should_block_render;
106 }
107
108
109 public static function get_instance()
110 {
111 static $instance = null;
112
113 if (is_null($instance)) {
114 $instance = new self();
115 }
116
117 return $instance;
118 }
119 }
120