PluginProbe
ShopBuilder – WooCommerce Builder For Elementor / 2.0.0
ShopBuilder – WooCommerce Builder For Elementor v2.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/DataModel.php +17 -84 3.4.02.0.0 View file →
@@ -1,13 +1,5 @@
1 1 <?php
2 -/**
3 - * DataModel class file.
4 - *
5 - * Provides a simple option storage abstraction with
6 - * source-based singleton instances and optional caching.
7 - *
8 - * @package RadiusTheme\SB\Models
9 - */
10 2
11 3 namespace RadiusTheme\SB\Models;
12 4
13 5 // Do not allow directly accessing this file.
@@ -14,91 +6,35 @@
14 6 if ( ! defined( 'ABSPATH' ) ) {
15 7 exit( 'This script cannot be accessed directly.' );
16 8 }
17 9
18 -/**
19 - * Class DataModel
20 - *
21 - * Handles grouped WordPress options using a prefixed database key.
22 - * Supports multiple data sources via singleton instances.
23 - */
24 10 class DataModel {
25 -
26 - /**
27 - * Option key used in the WordPress options table.
28 - *
29 - * @var string
30 - */
31 11 private $db_key;
12 + private static $instance;
32 13
33 - /**
34 - * Cached instances per data source.
35 - *
36 - * @var array<string, self>
37 - */
38 - private static $instances = [];
39 -
40 - /**
41 - * DataModel constructor.
42 - *
43 - * Private to enforce singleton usage via source().
44 - *
45 - * @param string $source Data source identifier.
46 - */
47 - private function __construct( $source ) {
48 - $this->set_db_key( $source );
49 - }
50 -
51 - /**
52 - * Get DataModel instance for a specific source.
53 - *
54 - * @param string $source Data source name.
55 - * @return self
56 - */
57 14 public static function source( $source = 'settings' ) {
58 - if ( ! isset( self::$instances[ $source ] ) ) {
59 - self::$instances[ $source ] = new self( $source );
15 + if ( ! self::$instance ) {
16 + self::$instance = new self();
60 17 }
61 18
62 - return self::$instances[ $source ];
19 + self::$instance->set_db_key( $source );
20 +
21 + return self::$instance;
63 22 }
64 23
65 - /**
66 - * Build and set the database option key.
67 - *
68 - * @param string $source Data source identifier.
69 - * @return void
70 - */
71 24 private function set_db_key( $source ) {
72 25 $this->db_key = 'rtsb_' . $source;
73 26 }
74 27
75 - /**
76 - * Retrieve an option value by key.
77 - *
78 - * @param string $key Option key.
79 - * @param mixed $default Default value if option does not exist.
80 - * @param bool $cache Whether to use global cache.
81 - * @return mixed
82 - */
83 - public function get_option( $key, $default = null, $cache = true ) {
84 - if ( $cache && isset( $GLOBALS[ $this->db_key ] ) ) {
85 - $db = $GLOBALS[ $this->db_key ];
86 - } else {
87 - $db = get_option( $this->db_key, [] );
88 - $GLOBALS[ $this->db_key ] = $db; // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound
89 - }
90 - return $db[ $key ] ?? $default;
28 + public function get_option( $key, $default = null ) {
29 +
30 + $db = get_option( $this->db_key, [] );
31 +
32 + return isset( $db[ $key ] ) ? $db[ $key ] : $default;
91 33 }
92 34
93 - /**
94 - * Update or create an option value.
95 - *
96 - * @param string $key Option key.
97 - * @param mixed $value Option value.
98 - * @return bool True on success, false on failure.
99 - */
100 35 public function set_option( $key, $value ) {
36 +
101 37 $db = get_option( $this->db_key, [] );
102 38
103 39 if ( is_object( $db ) ) {
104 40 $db = (array) $db;
@@ -112,18 +48,15 @@
112 48
113 49 return update_option( $this->db_key, $db );
114 50 }
115 51
116 - /**
117 - * Delete an option value by key.
118 - *
119 - * @param string $key Option key.
120 - * @return bool True on success, false on failure.
121 - */
122 52 public function delete_option( $key ) {
53 +
123 54 $db = get_option( $this->db_key, [] );
55 +
124 56 if ( isset( $db[ $key ] ) ) {
125 57 unset( $db[ $key ] );
126 58 }
127 - return update_option( $this->db_key, $db );
59 +
60 + return true;
128 61 }
129 -}
62 +}