PluginProbe ʕ •ᴥ•ʔ
Gallery : FooGallery / 3.3.3
Gallery : FooGallery v3.3.3
3.3.2 3.3.3 3.3.0 3.1.31 3.1.32 3.1.34 3.1.36 3.2.0 3.2.6 trunk 1.10.3 2.0.24 2.1.34 2.2.44 2.3.3 2.4.32 3.0.6 3.1.11 3.1.12 3.1.13 3.1.20 3.1.25 3.1.26 3.1.26.1 3.1.26.2
foogallery / freemius / includes / customizer / class-fs-customizer-upsell-control.php
foogallery / freemius / includes / customizer Last commit date
class-fs-customizer-support-section.php 3 days ago class-fs-customizer-upsell-control.php 3 days ago index.php 3 days ago
class-fs-customizer-upsell-control.php
160 lines
1 <?php
2 /**
3 * @package Freemius
4 * @copyright Copyright (c) 2015, Freemius, Inc.
5 * @license https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3
6 * @since 1.2.2.7
7 */
8
9 if ( ! defined( 'ABSPATH' ) ) {
10 exit;
11 }
12
13 /**
14 * Class FS_Customizer_Upsell_Control
15 */
16 class FS_Customizer_Upsell_Control extends WP_Customize_Control {
17
18 /**
19 * Control type
20 *
21 * @var string control type
22 */
23 public $type = 'freemius-upsell-control';
24
25 /**
26 * @var Freemius
27 */
28 public $fs = null;
29
30 /**
31 * @param WP_Customize_Manager $manager the customize manager class.
32 * @param string $id id.
33 * @param array $args customizer manager parameters.
34 */
35 public function __construct( WP_Customize_Manager $manager, $id, array $args ) {
36 $manager->register_control_type( 'FS_Customizer_Upsell_Control' );
37
38 parent::__construct( $manager, $id, $args );
39 }
40
41 /**
42 * Enqueue resources for the control.
43 */
44 public function enqueue() {
45 fs_enqueue_local_style( 'fs_customizer', 'customizer.css' );
46 }
47
48 /**
49 * Json conversion
50 */
51 public function to_json() {
52 $pricing_cta = esc_html( $this->fs->get_pricing_cta_label() ) . '&nbsp;&nbsp;' . ( is_rtl() ? '&#x2190;' : '&#x27a4;' );
53
54 parent::to_json();
55
56 $this->json['button_text'] = $pricing_cta;
57 $this->json['button_url'] = $this->fs->is_in_trial_promotion() ?
58 $this->fs->get_trial_url() :
59 $this->fs->get_upgrade_url();
60
61 $api = FS_Plugin::is_valid_id( $this->fs->get_bundle_id() ) ?
62 $this->fs->get_api_bundle_scope() :
63 $this->fs->get_api_plugin_scope();
64
65 // Load features.
66 $pricing = $api->get( $this->fs->add_show_pending( "pricing.json" ) );
67
68 if ( $this->fs->is_api_result_object( $pricing, 'plans' ) ) {
69 // Add support features.
70 if ( is_array( $pricing->plans ) && 0 < count( $pricing->plans ) ) {
71 $support_features = array(
72 'kb' => 'Help Center',
73 'forum' => 'Support Forum',
74 'email' => 'Priority Email Support',
75 'phone' => 'Phone Support',
76 'is_success_manager' => 'Personal Success Manager',
77 );
78
79 for ( $i = 0, $len = count( $pricing->plans ); $i < $len; $i ++ ) {
80 if ( 'free' == $pricing->plans[$i]->name ) {
81 continue;
82 }
83
84 if ( ! isset( $pricing->plans[ $i ]->features ) ||
85 ! is_array( $pricing->plans[ $i ]->features ) ) {
86 $pricing->plans[$i]->features = array();
87 }
88
89 foreach ( $support_features as $key => $label ) {
90 $key = ( 'is_success_manager' !== $key ) ?
91 "support_{$key}" :
92 $key;
93
94 if ( ! empty( $pricing->plans[ $i ]->{$key} ) ) {
95
96 $support_feature = new stdClass();
97 $support_feature->title = $label;
98
99 $pricing->plans[ $i ]->features[] = $support_feature;
100 }
101 }
102 }
103
104 $this->json['plans'] = $pricing->plans;
105 }
106 }
107
108 $this->json['strings'] = array(
109 'plan' => $this->fs->get_text_x_inline( 'Plan', 'as product pricing plan', 'plan' ),
110 );
111 }
112
113 /**
114 * Control content
115 */
116 public function content_template() {
117 ?>
118 <div id="fs_customizer_upsell">
119 <# if ( data.plans ) { #>
120 <ul class="fs-customizer-plans">
121 <# for (i in data.plans) { #>
122 <# if ( 'free' != data.plans[i].name && (null != data.plans[i].features && 0 < data.plans[i].features.length) ) { #>
123 <li class="fs-customizer-plan">
124 <div class="fs-accordion-section-open">
125 <h2 class="fs-accordion-section-title menu-item">
126 <span>{{ data.plans[i].title }}</span>
127 <button type="button" class="button-link item-edit" aria-expanded="true">
128 <span class="screen-reader-text">Toggle section: {{ data.plans[i].title }} {{ data.strings.plan }}</span>
129 <span class="toggle-indicator" aria-hidden="true"></span>
130 </button>
131 </h2>
132 <div class="fs-accordion-section-content">
133 <# if ( data.plans[i].description ) { #>
134 <h3>{{ data.plans[i].description }}</h3>
135 <# } #>
136 <# if ( data.plans[i].features ) { #>
137 <ul>
138 <# for ( j in data.plans[i].features ) { #>
139 <li><div class="fs-feature">
140 <span class="dashicons dashicons-yes"></span><span><# if ( data.plans[i].features[j].value ) { #>{{ data.plans[i].features[j].value }} <# } #>{{ data.plans[i].features[j].title }}</span>
141 <# if ( data.plans[i].features[j].description ) { #>
142 <span class="dashicons dashicons-editor-help"><span class="fs-feature-desc">{{ data.plans[i].features[j].description }}</span></span>
143 <# } #>
144 </div></li>
145 <# } #>
146 </ul>
147 <# } #>
148 <# if ( 'free' != data.plans[i].name ) { #>
149 <a href="{{ data.button_url }}" class="button button-primary" target="_blank">{{{ data.button_text }}}</a>
150 <# } #>
151 </div>
152 </div>
153 </li>
154 <# } #>
155 <# } #>
156 </ul>
157 <# } #>
158 </div>
159 <?php }
160 }