# shopbuilder/2.1.0/app/Models/DataModel.php

ShopBuilder – WooCommerce Builder For Elementor, version 2.1.0. 76 lines.

- Page: https://pluginprobe.com/plugins/shopbuilder/2.1.0/code/app/Models/DataModel.php
- Raw: https://pluginprobe.com/plugins/shopbuilder/2.1.0/raw/app/Models/DataModel.php
- Modified: 2024-01-05T06:10:40+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/shopbuilder/2.1.0/code/app/Models/DataModel.php#L10-L20`.

```php
<?php

namespace RadiusTheme\SB\Models;

// Do not allow directly accessing this file.
if ( ! defined( 'ABSPATH' ) ) {
	exit( 'This script cannot be accessed directly.' );
}

class DataModel {
	private $db_key;
	private static $instances = [];

	private function __construct($source) {
		$this->set_db_key($source);
	}

	public static function source($source = 'settings') {
		if (!isset(self::$instances[$source])) {
			self::$instances[$source] = new self($source);
		}

		return self::$instances[$source];
	}

	private function set_db_key( $source ) {
		$this->db_key = 'rtsb_' . $source;
	}

	public function get_option( $key, $default = null ) {
		if( isset( $GLOBALS[$this->db_key] )){
			$db = $GLOBALS[$this->db_key];
		} else {
			$GLOBALS[$this->db_key] = get_option( $this->db_key, [] );
			$db = $GLOBALS[$this->db_key];
		}

		return $db[ $key ] ?? $default;
	}

	public function set_option( $key, $value ) {
		//if( isset( $GLOBALS[$this->db_key] ) ){
		//	$db = $GLOBALS[$this->db_key];
		//} else {
		// $db = get_option( $this->db_key, [] );
		//	$GLOBALS[$this->db_key] = $db;
		//}
		$db = get_option( $this->db_key, [] );

		if ( is_object( $db ) ) {
			$db = (array) $db;
		}

		if ( ! is_array( $db ) ) {
			$db = [];
		}

		$db[ $key ] = $value;

		return update_option( $this->db_key, $db );
	}

	public function delete_option( $key ) {
		//if( isset( $GLOBALS[$this->db_key] ) ){
		//	$db = $GLOBALS[$this->db_key];
		//} else {
		// $db = get_option( $this->db_key, [] );
		//	$GLOBALS[$this->db_key] = $db;
		//}
		$db = get_option( $this->db_key, [] );
		if ( isset( $db[ $key ] ) ) {
			unset( $db[ $key ] );
		}
		return update_option( $this->db_key, $db );
	}
}
```
