| 1 |
<?php |
| 2 |
|
| 3 |
namespace cybot\cookiebot\settings\pages; |
| 4 |
|
| 5 |
use cybot\cookiebot\lib\Cookiebot_Frame; |
| 6 |
use cybot\cookiebot\lib\Cookiebot_WP; |
| 7 |
use cybot\cookiebot\lib\Supported_Regions; |
| 8 |
use InvalidArgumentException; |
| 9 |
use function cybot\cookiebot\lib\asset_url; |
| 10 |
use function cybot\cookiebot\lib\include_view; |
| 11 |
|
| 12 |
class Multiple_Page implements Settings_Page_Interface { |
| 13 |
|
| 14 |
|
| 15 |
private function get_multiple_banners() { |
| 16 |
$banners = get_option( 'cookiebot-multiple-banners' ); |
| 17 |
|
| 18 |
if ( ! $banners ) { |
| 19 |
return null; |
| 20 |
} |
| 21 |
|
| 22 |
foreach ( $banners as $banner => $data ) { |
| 23 |
$format_region = $this->selected_region_list( $data['region'], false ); |
| 24 |
$banners[ $banner ]['region'] = $format_region; |
| 25 |
} |
| 26 |
|
| 27 |
return $banners; |
| 28 |
} |
| 29 |
|
| 30 |
private function selected_region_list( $option, $second ) { |
| 31 |
$countries = Supported_Regions::get(); |
| 32 |
$list = explode( ', ', $option ); |
| 33 |
|
| 34 |
if ( $second ) { |
| 35 |
$ccpa = esc_attr( get_option( 'cookiebot-ccpa' ) ); |
| 36 |
if ( $ccpa === '1' && ! in_array( 'US-06', $list, true ) ) { |
| 37 |
array_push( $list, 'US-06' ); |
| 38 |
} |
| 39 |
} |
| 40 |
|
| 41 |
$selected = array(); |
| 42 |
|
| 43 |
foreach ( $list as $item ) { |
| 44 |
if ( isset( $countries[ $item ] ) ) { |
| 45 |
$selected[ $item ] = $countries[ $item ]; |
| 46 |
} |
| 47 |
} |
| 48 |
|
| 49 |
return $selected; |
| 50 |
} |
| 51 |
|
| 52 |
private function retroSecondaryId() { |
| 53 |
$ccpa_group_id = esc_attr( get_option( 'cookiebot-ccpa-domain-group-id' ) ); |
| 54 |
$secondary_group_id = esc_attr( get_option( 'cookiebot-second-banner-id' ) ); |
| 55 |
|
| 56 |
if ( $ccpa_group_id && ! $secondary_group_id ) { |
| 57 |
$secondary_group_id = $ccpa_group_id; |
| 58 |
update_option( 'cookiebot-second-banner-id', $ccpa_group_id ); |
| 59 |
delete_option( 'cookiebot-ccpa-domain-group-id' ); |
| 60 |
} |
| 61 |
|
| 62 |
return $secondary_group_id; |
| 63 |
} |
| 64 |
|
| 65 |
public function getCountryName( $code ) { |
| 66 |
$countries = Supported_Regions::get(); |
| 67 |
|
| 68 |
return $countries[ $code ]; |
| 69 |
} |
| 70 |
|
| 71 |
/** |
| 72 |
* @throws InvalidArgumentException |
| 73 |
*/ |
| 74 |
public function display() { |
| 75 |
$args = array( |
| 76 |
'cbid' => Cookiebot_WP::get_cbid(), |
| 77 |
'secondary_group_id' => $this->retroSecondaryId(), |
| 78 |
'supported_regions' => Supported_Regions::get(), |
| 79 |
'ccpa_compatibility' => esc_attr( get_option( 'cookiebot-ccpa' ) ), |
| 80 |
'selected_regions' => $this->selected_region_list( esc_attr( get_option( 'cookiebot-second-banner-regions' ) ), true ), |
| 81 |
'multiple_banners' => $this->get_multiple_banners(), |
| 82 |
); |
| 83 |
|
| 84 |
wp_enqueue_style( |
| 85 |
'cookiebot-multiple-page-css', |
| 86 |
asset_url( 'css/backend/multiple_page.css' ), |
| 87 |
null, |
| 88 |
Cookiebot_WP::COOKIEBOT_PLUGIN_VERSION |
| 89 |
); |
| 90 |
|
| 91 |
wp_enqueue_script( |
| 92 |
'cookiebot-multiple-page-js', |
| 93 |
asset_url( 'js/backend/multiple-page.js' ), |
| 94 |
null, |
| 95 |
Cookiebot_WP::COOKIEBOT_PLUGIN_VERSION, |
| 96 |
true |
| 97 |
); |
| 98 |
|
| 99 |
include_view( Cookiebot_Frame::get_view_path() . 'settings/multiple-configuration/page.php', $args ); |
| 100 |
} |
| 101 |
} |
| 102 |
|