Files
szkoleniauryzaj.pl/wp-content/plugins/beautiful-and-responsive-cookie-consent/class/class-nsc_bar_banner_configs.php
2024-11-10 21:08:49 +01:00

228 lines
8.3 KiB
PHP

<?php
class nsc_bar_banner_configs
{
private $banner_config_array;
private $banner_config_string;
private $plugin_configs;
private $banner_configs_slug;
public function __construct()
{
$this->plugin_configs = new nsc_bar_plugin_configs();
$this->nsc_bar_set_banner_configs_slug("bannersettings_json");
if (class_exists("nsc_bara_banner_configs_addon") === true) {
$bara = new nsc_bara_banner_configs_addon;
$this->nsc_bar_set_banner_configs_slug($bara->nsc_bara_get_banner_settings_slug(null));
}
}
public function nsc_bar_set_banner_configs_slug($banner_configs_slug)
{
$this->banner_configs_slug = $banner_configs_slug;
}
public function nsc_bar_set_banner_config_array($banner_config_array)
{
$this->banner_config_array = $banner_config_array;
}
public function nsc_bar_get_banner_config_array()
{
if (empty($this->banner_config_array)) {
$banner_config_array = $this->initialise_banner_configs();
$banner_config_array = apply_filters('nsc_bar_filter_banner_config_array_init', $banner_config_array);
$this->banner_config_array = $banner_config_array;
}
return $this->banner_config_array;
}
public function nsc_bar_get_banner_config_string()
{
$this->nsc_bar_get_banner_config_array();
$banner_string = json_encode($this->banner_config_array);
$validation = new nsc_bar_input_validation;
$this->banner_config_string = $validation->nsc_bar_check_valid_json_string($banner_string);
return $this->banner_config_string;
}
public function nsc_bar_update_banner_setting($field_slug, $value, $save_as)
{
if (empty($value) && $value !== false && $value !== "" && $value != 0) {
return false;
}
$this->nsc_bar_get_banner_config_array();
$value = $this->convert_to_save_as($value, $save_as);
$settings_array = $this->slug_string_to_array($field_slug);
$depth = count($settings_array);
switch ($depth) {
case 1:
$this->set_level_one_value($settings_array, $value);
break;
case 2:
$this->set_level_two_value($settings_array, $value);
break;
case 3:
$this->set_level_three_value($settings_array, $value);
break;
}
}
public function nsc_bar_get_cookie_setting($field_slug, $default_value)
{
$this->nsc_bar_get_banner_config_array();
$settings_array = $this->slug_string_to_array($field_slug);
$depth = count($settings_array);
switch ($depth) {
case 1:
$settings_value = $this->get_level_one_value($settings_array, $default_value);
break;
case 2:
$settings_value = $this->get_level_two_value($settings_array, $default_value);
break;
case 3:
$settings_value = $this->get_level_three_value($settings_array, $default_value);
break;
}
return $settings_value;
}
public function nsc_bar_save_banner_settings()
{
$this->remove_deactivated_js_function();
$json_string = json_encode($this->nsc_bar_get_banner_config_array());
return $this->plugin_configs->nsc_bar_update_option($this->banner_configs_slug, $json_string);
}
/*TODO: only needed for update to 2.0 remove after all updated*/
public function nsc_bar_remove_revokeBtn()
{
if (isset($this->banner_config_array["revokeBtn"])) {
unset($this->banner_config_array["revokeBtn"]);
}
}
private function remove_deactivated_js_function()
{
if (isset($this->banner_config_array["onPopupClose"]) && $this->banner_config_array["onPopupClose"] == "0") {
unset($this->banner_config_array["onPopupClose"]);
}
if (isset($this->banner_config_array["onStatusChange"]) && $this->banner_config_array["onStatusChange"] == "0") {
unset($this->banner_config_array["onStatusChange"]);
}
if (isset($this->banner_config_array["dismissOnScroll"]) && empty($this->banner_config_array["dismissOnScroll"])) {
unset($this->banner_config_array["dismissOnScroll"]);
}
if (isset($this->banner_config_array["dismissOnTimeout"]) && empty($this->banner_config_array["dismissOnTimeout"])) {
unset($this->banner_config_array["dismissOnTimeout"]);
}
if (isset($this->banner_config_array["makeButtonsEqual"]) && empty($this->banner_config_array["makeButtonsEqual"])) {
unset($this->banner_config_array["makeButtonsEqual"]);
}
if (isset($this->banner_config_array["showCloseX"]) && empty($this->banner_config_array["showCloseX"])) {
unset($this->banner_config_array["showCloseX"]);
}
}
private function slug_string_to_array($field_slug)
{
$settings_array = explode("_", $field_slug);
$depth = count($settings_array);
if ($depth > 3 || $depth < 1) {
throw new Exception("depth only allowed from 1 to 3 current: $depth");
}
return $settings_array;
}
private function get_level_one_value($config_array, $default = false)
{
$value = $default;
if (isset($this->banner_config_array[$config_array[0]])) {
$value = $this->banner_config_array[$config_array[0]];
}
return $value;
}
private function get_level_two_value($config_array, $default = false)
{
$value = $default;
if (isset($this->banner_config_array[$config_array[0]]) && isset($this->banner_config_array[$config_array[0]][$config_array[1]])) {
$value = $this->banner_config_array[$config_array[0]][$config_array[1]];
}
return $value;
}
private function get_level_three_value($config_array, $default = false)
{
$value = $default;
if (isset($this->banner_config_array[$config_array[0]]) && isset($this->banner_config_array[$config_array[0]][$config_array[1]]) && isset($this->banner_config_array[$config_array[0]][$config_array[1]][$config_array[2]])) {
$value = $this->banner_config_array[$config_array[0]][$config_array[1]][$config_array[2]];
}
return $value;
}
private function set_level_one_value($config_array, $value)
{
$this->nsc_bar_get_banner_config_array();
$this->banner_config_array[$config_array[0]] = $value;
}
private function set_level_two_value($config_array, $value)
{
$this->nsc_bar_get_banner_config_array();
$this->banner_config_array[$config_array[0]][$config_array[1]] = $value;
}
private function set_level_three_value($config_array, $value)
{
$this->nsc_bar_get_banner_config_array();
$this->banner_config_array[$config_array[0]][$config_array[1]][$config_array[2]] = $value;
}
private function initialise_banner_configs()
{
$banner_config_string = $this->read_banner_configs_from_db($this->banner_configs_slug);
// try to get default, if non default is not set.
if (empty($banner_config_string) && $this->banner_configs_slug !== "bannersettings_json") {
$banner_config_string = $this->read_banner_configs_from_db("bannersettings_json");
}
if (empty($banner_config_string)) {
$validate = new nsc_bar_input_validation;
$banner_config_string = $validate->nsc_bar_check_valid_json_string(file_get_contents(NSC_BAR_PLUGIN_DIR . "/public/config-default.json"));
}
return json_decode($banner_config_string, true);
}
private function read_banner_configs_from_db($slug)
{
$banner_config_string = $this->plugin_configs->nsc_bar_get_option($slug);
$validate = new nsc_bar_input_validation;
$banner_config_string = $validate->nsc_bar_check_valid_json_string($banner_config_string);
return $banner_config_string;
}
private function convert_to_save_as($value, $save_as)
{
if ($save_as === "array") {
return json_decode($value, true);
}
if ($save_as === "integer") {
return intval($value);
}
return $value;
}
}