|
Server : LiteSpeed System : Linux server104.web-hosting.com 4.18.0-513.24.1.lve.1.el8.x86_64 #1 SMP Thu May 9 15:10:09 UTC 2024 x86_64 User : saleoqej ( 6848) PHP Version : 8.0.30 Disable Function : NONE Directory : /home/saleoqej/chijamzacademy.com/wp-content/plugins/notificationx-pro/includes/Admin/ |
<?php
/**
* Extension Factory
*
* @package NotificationX\Extensions
*/
namespace NotificationXPro\Admin;
use NotificationX\Core\Helper as HelperFree;
use NotificationX\GetInstance;
use NotificationX\ThirdParty\WPML;
use NotificationXPro\Core\Helper;
/**
* @method static XSS get_instance($args = null)
*/
class XSS {
use GetInstance;
public function __construct()
{
add_filter('nx_builder_configs', [$this, 'builder_configs']);
add_filter('nx_settings_xss_code_default', [$this, 'settings_field_xss_code']);
// add_filter( 'nx_settings_tab_miscellaneous', [ $this, 'settings_tab_help' ], 11 );
// add_action( 'init', [ $this, 'add_cors_http_header'] );
}
public function get_localize_data($data = []){
$data = apply_filters('nx_frontend_localize_data', $data);
if(isset($data['rest']['nonce'])){
unset($data['rest']['nonce']);
}
return $data;
}
public function builder_configs($tabs){
$tabs['xss_data'] = $this->get_localize_data();
$tabs['xss_scripts'] = $this->get_scripts();
return $tabs;
}
public function settings_field_xss_code($xss_code){
$xss_code = "<script>\nwindow.notificationXArr = window.notificationXArr || []; \nwindow.notificationXArr.push(" . json_encode($this->get_localize_data(['all_active' => true, 'cross' => true ])) . ");\n</script>";
$xss_code .= $this->get_scripts();
return $xss_code;
}
public function get_scripts(){
$scripts = [
'notificationx-public' => HelperFree::file('public/js/frontend.js', true),
];
$styles = [
'notificationx-public' => HelperFree::file('public/css/frontend.css', true),
'notificationx-pro-public' => Helper::pro_file('public/css/frontend.css', true),
];
$xss_scripts = "
<script>
(function(){
var scripts = " . json_encode($scripts) . ", styles = " . json_encode($styles) . ";
for(var i in scripts){
if(document.getElementById(i + '-js')){
continue;
}
var script = document.createElement('script');
script.src = scripts[i];
document.head.appendChild(script);
}
for(var i in styles){
if(document.getElementById(i + '-css')){
continue;
}
var link = document.createElement('link');
link.rel = 'stylesheet';
link.href = styles[i];
document.head.appendChild(link);
}
})();
</script>";
return $xss_scripts;
}
public function settings_tab_help( $tabs ) {
$tabs['fields']['xss_settings']['fields']['acao'] =
array(
'name' => 'acao',
'type' => 'text',
'label' => __( 'Access-Control-Allow-Origin', 'notificationx' ),
'placeholder' => __('*', 'notificationx'),
'is_pro' => true,
'help' => sprintf( __( 'Show your Notification Alerts in another website using <a target="_blank" href="%s">Cross Domain Notice</a>.', 'notificationx' ), 'https://notificationx.com/docs/notificationx-cross-domain-notice/' ),
'default' => '',
'priority' => 5,
);
return $tabs;
}
public function add_cors_http_header(){
$acao = \NotificationX\Admin\Settings::get_instance()->get('settings.acao');
if ( ! empty( $acao ) ) {
header("Access-Control-Allow-Origin: $acao");
}
}
}