/var/www/html_us/wp-content/plugins/checkout-for-woocommerce/includes/Managers/PlanManager.php


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
<?php

namespace Objectiv\Plugins\Checkout\Managers;

/**
 * @link checkoutwc.com
 * @since 5.0.0
 * @package Objectiv\Plugins\Checkout\Managers
 */
class PlanManager {
    const 
BASIC  1;
    const 
PLUS   5;
    const 
PRO    10;
    const 
AGENCY 50;
    const 
PLANS  = array(
        
self::BASIC  => 'Basic',
        
self::PLUS   => 'Plus',
        
self::PRO    => 'Pro',
        
self::AGENCY => 'Agency',
    );

    
/**
     * @param int $minimum_required_plan
     * @return bool
     */
    
static public function has_required_planint $minimum_required_plan ): bool {
        
$updates UpdatesManager::instance();

        return 
$updates->get_license_activation_limit() >= $minimum_required_plan;
    }

    
/**
     * @param int $minimum_required_plan
     * @return array
     */
    
static public function get_required_plansint $minimum_required_plan ): array {
        
$offset array_search$minimum_required_planarray_keysself::PLANS ), true );

        return 
array_sliceself::PLANS$offsetnulltrue );
    }

    
/**
     * Returns an English formatted list of plans
     *
     * Examples:
     * - X or Y
     * - X, Y, or Z
     *
     * @param array $array_of_strings
     * @return string
     */
    
static public function get_formatted_english_list( array $array_of_strings ): string {
        if ( 
count$array_of_strings ) <= ) {
            return 
join' or '$array_of_strings );
        }

        return 
implode', 'array_slice$array_of_strings0, -) ) . ', or ' end$array_of_strings );
    }

    
/**
     * @param int $minimum_required_plan
     * @return string
     */
    
static public function get_english_list_of_required_plans_htmlint $minimum_required_plan ): string {
        
$plans self::get_required_plans$minimum_required_plan );

        
$plans array_map(
            function( 
$plan ) {
                return 
"<strong>{$plan}</strong>";
            },
            
$plans
        
);

        return 
self::get_formatted_english_list$plans );
    }

    
/**
     * @param string $setting_key
     * @param int $minimum_required_plan
     * @return bool
     */
    
static public function can_access_featurestring $setting_keyint $minimum_required_plan ): bool {
        
$has_correct_plan UpdatesManager::instance()->get_license_activation_limit() >= $minimum_required_plan;

        
$value SettingsManager::instance()->get_setting$setting_key );

        return 
$has_correct_plan && ( 'yes' === $value || 'enabled' === $value );
    }
}