PluginProbe
ShopBuilder – WooCommerce Builder For Elementor / 1.0.0
ShopBuilder – WooCommerce Builder For Elementor v1.0.0
3.4.2 3.4.1 3.4.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.10 2.1.11 2.1.12 2.1.13 2.1.14 2.1.15 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 All 63 releases
← All changes | app/Models/Base/ListModel.php +106 -224 3.4.11.0.0 View file →
@@ -1,224 +1,106 @@
1 -<?php
2 -/**
3 - * ListModel
4 - *
5 - * @package RadiusTheme\SB
6 - */
7 -
8 -namespace RadiusTheme\SB\Models\Base;
9 -
10 -defined( 'ABSPATH' ) || exit;
11 -
12 -use RadiusTheme\SB\Helpers\Fns;
13 -use RadiusTheme\SB\Models\DataModel;
14 -
15 -/**
16 - * ListModel
17 - */
18 -abstract class ListModel {
19 - /**
20 - * List ID
21 - *
22 - * @var string
23 - */
24 - protected $list_id;
25 -
26 - /**
27 - * List Title
28 - *
29 - * @var string
30 - */
31 - protected $title;
32 -
33 - /**
34 - * List Short Title
35 - *
36 - * @var string
37 - */
38 - protected $short_title;
39 -
40 - /**
41 - * List Description
42 - *
43 - * @var string
44 - */
45 - protected $description;
46 -
47 - /**
48 - * List
49 - *
50 - * @var array
51 - */
52 - private $full_list = [];
53 -
54 - /**
55 - * Active List
56 - *
57 - * @var array
58 - */
59 - private $active_list = [];
60 -
61 - /**
62 - * Inactive List
63 - *
64 - * @var array
65 - */
66 - private $inactive_list = [];
67 -
68 - /**
69 - * Options
70 - *
71 - * @var array
72 - */
73 - private $db_options = [];
74 -
75 - /**
76 - * Categories
77 - *
78 - * @var array
79 - */
80 - protected $categories = [];
81 -
82 - /**
83 - * Constructor
84 - */
85 - public function __construct() {
86 - $this->db_options = DataModel::source()->get_option( $this->list_id, [] );
87 - $raw_list = apply_filters( 'rtsb/' . $this->list_id . '/list', $this->raw_list() );
88 -
89 - if ( ! empty( $raw_list ) ) {
90 - foreach ( $raw_list as $name => $item ) {
91 -
92 - if ( ! empty( $item['package'] ) && 'pro-disabled' === $item['package'] ) {
93 - $item['fields'] = [];
94 - $item['active'] = false;
95 - $this->full_list[ $name ] = $item;
96 - $this->inactive_list[ $name ] = $item;
97 - continue;
98 - }
99 -
100 - if ( ! isset( $this->db_options[ $name ]['active'] ) && ! empty( $item['active'] ) ) {
101 - $item['active'] = 'on';
102 - } else {
103 - $item['active'] = isset( $this->db_options[ $name ]['active'] ) && 'on' === $this->db_options[ $name ]['active'] ? 'on' : '';
104 - }
105 -
106 - if ( ! empty( $item['fields'] ) ) {
107 - foreach ( $item['fields'] as $field_key => $field ) {
108 - $the_value = $this->db_options[ $name ][ $field_key ] ?? ( $item['fields'][ $field_key ]['value'] ?? '' );
109 - if ( 'repeaters' === $field['type'] && empty( $the_value ) && ! empty( $field['defaults'] ) ) {
110 - $repeater_defaults = array_values( $field['defaults'] );
111 - $the_value = wp_json_encode( $repeater_defaults );
112 - } elseif ( 'repeaters' === $field['type'] && ! empty( $the_value ) ) {
113 - $the_value = json_decode( $the_value );
114 - }
115 - $sanitized_value = Fns::stripslashes_value( $the_value );
116 - $item['fields'][ $field_key ]['value'] = $sanitized_value;
117 - }
118 - }
119 - $this->full_list[ $name ] = $item;
120 -
121 - if ( 'on' === $item['active'] ) {
122 - $this->active_list[ $name ] = $item;
123 - } else {
124 - $this->inactive_list[ $name ] = $item;
125 - }
126 - }
127 - }
128 - }
129 -
130 - /**
131 - * @return string Pro Package
132 - */
133 - protected function pro_package() {
134 - return rtsb()->has_pro() ? 'pro' : 'pro-disabled';
135 - }
136 -
137 - /**
138 - * @return string Pro Package
139 - */
140 - protected function pro_version_checker() {
141 - $has_pro = rtsb()->has_pro();
142 - $pro_ver = defined( 'RTSBPRO_VERSION' ) ? RTSBPRO_VERSION : 0;
143 -
144 - if ( ! $has_pro ) {
145 - return 'free';
146 - }
147 -
148 - if ( version_compare( $pro_ver, '2.0.0', '>=' ) ) {
149 - return 'pass';
150 - }
151 -
152 - return 'fail';
153 - }
154 -
155 - /**
156 - * Is widget active
157 - *
158 - * @param string $key Key.
159 - *
160 - * @return bool
161 - */
162 - public function is_widget_active( $key ) {
163 - return isset( $this->active_list[ $key ] );
164 - }
165 -
166 - /**
167 - * Get list
168 - *
169 - * @param bool $list List.
170 - * @param string $filter_type Filter type.
171 - *
172 - * @return mixed
173 - */
174 - public function get_list( $list = true, $filter_type = 'full' ) {
175 - if ( true !== $list && isset( $this->full_list[ $list ] ) ) {
176 - return $this->full_list[ $list ];
177 - }
178 -
179 - return $this->{$filter_type . '_list'};
180 - }
181 -
182 - /**
183 - * Get section
184 - *
185 - * @return array
186 - */
187 - public function get_section() {
188 - return [
189 - 'title' => $this->title,
190 - 'short_title' => ! empty( $this->short_title ) ? $this->short_title : $this->title,
191 - 'description' => $this->description,
192 - 'list' => $this->get_list(),
193 - 'id' => $this->list_id,
194 - 'categories' => $this->categories,
195 - ];
196 - }
197 -
198 - /**
199 - * Get fields
200 - *
201 - * @param string $key Key.
202 - *
203 - * @return array|mixed
204 - */
205 - public function get_fields( $key ) {
206 - return isset( $this->full_list[ $key ]['fields'] ) ? $this->full_list[ $key ]['fields'] : [];
207 - }
208 -
209 - /**
210 - * Get data
211 - *
212 - * @return array
213 - */
214 - public function get_data() {
215 - return $this->db_options;
216 - }
217 -
218 - /**
219 - * Get raw list
220 - *
221 - * @return array
222 - */
223 - abstract protected function raw_list();
224 -}
1 +<?php
2 +
3 +namespace RadiusTheme\SB\Models\Base;
4 +
5 +defined( 'ABSPATH' ) || exit;
6 +
7 +use RadiusTheme\SB\Models\DataModel;
8 +
9 +abstract class ListModel {
10 +
11 + protected $list_id;
12 +
13 + protected $title;
14 + protected $short_title;
15 + protected $description;
16 + private $full_list = [];
17 + private $active_list = [];
18 + private $inactive_list = [];
19 + private $db_options = [];
20 + protected $categories = [];
21 +
22 + public function __construct() {
23 + $this->db_options = DataModel::source()->get_option( $this->list_id, [] );
24 + $raw_list = apply_filters( 'rtsb/' . $this->list_id . '/list', $this->raw_list() );
25 + if ( ! empty( $raw_list ) ) {
26 + foreach ( $raw_list as $name => $item ) {
27 +
28 + if ( ! empty( $item['package'] ) && $item['package'] === 'pro-disabled' ) {
29 + $item['fields'] = [];
30 + $item['active'] = false;
31 + $this->full_list[ $name ] = $item;
32 + $this->inactive_list[ $name ] = $item;
33 + continue;
34 + }
35 +
36 + if ( ! isset( $this->db_options[ $name ]['active'] ) && ! empty( $item['active'] ) ) {
37 + $item['active'] = 'on';
38 + } else {
39 + $item['active'] = isset( $this->db_options[ $name ]['active'] ) && $this->db_options[ $name ]['active'] === 'on' ? 'on' : '';
40 + }
41 +
42 + if ( ! empty( $item['fields'] ) ) {
43 + foreach ( $item['fields'] as $field_key => $field ) {
44 + $item['fields'][ $field_key ]['value'] = isset( $this->db_options[ $name ][ $field_key ] ) ? $this->db_options[ $name ][ $field_key ] : ( isset( $item['fields'][ $field_key ]['value'] ) ? $item['fields'][ $field_key ]['value'] : '' );
45 + }
46 + }
47 + $this->full_list[ $name ] = $item;
48 +
49 + if ( 'on' === $item['active'] ) {
50 + $this->active_list[ $name ] = $item;
51 + } else {
52 + $this->inactive_list[ $name ] = $item;
53 + }
54 + }
55 + }
56 + }
57 +
58 + /**
59 + * @param $key
60 + *
61 + * @return bool
62 + */
63 + public function is_widget_active( $key ) {
64 + return isset( $this->active_list[ $key ] );
65 + }
66 +
67 + /**
68 + * @param mixed $list true | anything
69 + * @param string $filter_type full|active|inactive
70 + *
71 + * @return mixed
72 + */
73 + public function get_list( $list = true, $filter_type = 'full' ) { //
74 + if ( $list !== true && isset( $this->full_list[ $list ] ) ) {
75 + return $this->full_list[ $list ];
76 + }
77 +
78 + return $this->{$filter_type . '_list'};
79 + }
80 +
81 + public function get_section() {
82 + return [
83 + 'title' => $this->title,
84 + 'short_title' => ! empty( $this->short_title ) ? $this->short_title : $this->title,
85 + 'description' => $this->description,
86 + 'list' => $this->get_list(),
87 + 'id' => $this->list_id,
88 + 'categories' => $this->categories,
89 + ];
90 + }
91 +
92 + /**
93 + * @param $key
94 + *
95 + * @return array|mixed
96 + */
97 + public function get_fields( $key ) {
98 + return isset( $this->full_list[ $key ]['fields'] ) ? $this->full_list[ $key ]['fields'] : [];
99 + }
100 +
101 + public function get_data() {
102 + return $this->db_options;
103 + }
104 +
105 + abstract protected function raw_list();
106 +}