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

ShopBuilder – WooCommerce Builder For Elementor, version 2.0.1. 62 lines.

- Page: https://pluginprobe.com/plugins/shopbuilder/2.0.1/code/app/Models/DataModel.php
- Raw: https://pluginprobe.com/plugins/shopbuilder/2.0.1/raw/app/Models/DataModel.php
- Modified: 2023-11-13T05:30:08+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.0.1/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 $instance;

	public static function source( $source = 'settings' ) {
		if ( ! self::$instance ) {
			self::$instance = new self();
		}

		self::$instance->set_db_key( $source );

		return self::$instance;
	}

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

	public function get_option( $key, $default = null ) {

		$db = get_option( $this->db_key, [] );

		return isset( $db[ $key ] ) ? $db[ $key ] : $default;
	}

	public function set_option( $key, $value ) {

		$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 ) {

		$db = get_option( $this->db_key, [] );

		if ( isset( $db[ $key ] ) ) {
			unset( $db[ $key ] );
		}

		return true;
	}
}
```
