PluginProbe
ShopBuilder – WooCommerce Builder For Elementor / 2.4.1
ShopBuilder – WooCommerce Builder For Elementor v2.4.1
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 +1 -67 3.4.12.4.1 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,47 +6,16 @@
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;
32 -
33 - /**
34 - * Cached instances per data source.
35 - *
36 - * @var array<string, self>
37 - */
38 12 private static $instances = [];
39 13
40 - /**
41 - * DataModel constructor.
42 - *
43 - * Private to enforce singleton usage via source().
44 - *
45 - * @param string $source Data source identifier.
46 - */
47 14 private function __construct( $source ) {
48 15 $this->set_db_key( $source );
49 16 }
50 17
51 - /**
52 - * Get DataModel instance for a specific source.
53 - *
54 - * @param string $source Data source name.
55 - * @return self
56 - */
57 18 public static function source( $source = 'settings' ) {
58 19 if ( ! isset( self::$instances[ $source ] ) ) {
59 20 self::$instances[ $source ] = new self( $source );
60 21 }
@@ -61,43 +22,22 @@
61 22
62 23 return self::$instances[ $source ];
63 24 }
64 25
65 - /**
66 - * Build and set the database option key.
67 - *
68 - * @param string $source Data source identifier.
69 - * @return void
70 - */
71 26 private function set_db_key( $source ) {
72 27 $this->db_key = 'rtsb_' . $source;
73 28 }
74 29
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 30 public function get_option( $key, $default = null, $cache = true ) {
84 31 if ( $cache && isset( $GLOBALS[ $this->db_key ] ) ) {
85 32 $db = $GLOBALS[ $this->db_key ];
86 33 } else {
87 34 $db = get_option( $this->db_key, [] );
88 - $GLOBALS[ $this->db_key ] = $db; // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound
35 + $GLOBALS[ $this->db_key ] = $db;
89 36 }
90 37 return $db[ $key ] ?? $default;
91 38 }
92 39
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 40 public function set_option( $key, $value ) {
101 41 $db = get_option( $this->db_key, [] );
102 42
103 43 if ( is_object( $db ) ) {
@@ -112,14 +52,8 @@
112 52
113 53 return update_option( $this->db_key, $db );
114 54 }
115 55
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 56 public function delete_option( $key ) {
123 57 $db = get_option( $this->db_key, [] );
124 58 if ( isset( $db[ $key ] ) ) {
125 59 unset( $db[ $key ] );