PluginProbe
ShopBuilder – WooCommerce Builder For Elementor / 1.1.0
ShopBuilder – WooCommerce Builder For Elementor v1.1.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
shopbuilder / app / Models / Base / ListModel.php

ListModel.php in ShopBuilder – WooCommerce Builder For Elementor 1.1.0, at app/Models/Base/ListModel.php

106 lines 2.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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 }