$shopid, 'status' => 1, 'isUninstall' => 0, 'timestamp' => time(), 'name' => (get_bloginfo('name')), 'email' => (get_option('admin_email')), 'domain' => (get_bloginfo('url')), 'wordpress_version' => $plugin_version, ); $type = 'post'; $body = assistant_api_call('/install', $init_data, $type); if ($body['status'] == 200 && count($body['data']) > 0) { $response = $body['data']; update_option('accessibility_shopid', sanitize_text_field($response['shopid'])); update_option('accessibility_tokken', sanitize_text_field($response['token'])); update_option('accessibility_install', 1); } // Set default language on activation if (get_option('my_plugin_selected_language') === false) { $site_lang = get_locale(); $lang_map = my_plugin_get_language_map(); $normalized = isset($lang_map[$site_lang]) ? $lang_map[$site_lang] : ( isset($lang_map[substr($site_lang, 0, 2)]) ? $lang_map[substr($site_lang, 0, 2)] : $site_lang ); update_option('my_plugin_selected_language', $normalized); } } } // During Deactivatation register_deactivation_hook(__FILE__, 'accessibility_deactivation'); if (!function_exists('accessibility_deactivation')) { function accessibility_deactivation() { $shopid = get_option('accessibility_shopid'); $deactivate_reason = get_option('ada_uninstall_reason'); $deactive_data = array( 'shopid' => $shopid, 'deactivate_reason' => $deactivate_reason, ); $body = assistant_api_call('/uninstallShopData', $deactive_data, 'get'); update_option('accessibility_install', 0); } } // Add Js And Style Sheet. add_action('admin_enqueue_scripts', 'accessibility_load_admin_styles'); function accessibility_load_admin_styles() { wp_enqueue_script('jquery'); wp_enqueue_script('jquery-ui-core'); // Core jQuery UI wp_enqueue_script('jquery-ui-draggable'); // Ensure draggable is included wp_enqueue_style('admin_accesibility_css', plugin_dir_url(__FILE__) . 'assets/stylesheet.css', false, '1.0.0'); wp_enqueue_style('fonts_accesibility_css', plugin_dir_url(__FILE__) . 'assets/fonts/fonts.googleapis.css', false, '1.0.0'); wp_enqueue_style('fonts_awesome_accesibility_css', plugin_dir_url(__FILE__) . 'assets/fontawesome/css/all.min.css', false, '1.0.0'); wp_enqueue_style('accesibility_bootstrap_css', plugin_dir_url(__FILE__) . 'assets/bootstrap/css/bootstrap.min.css', false, '4.4.1'); wp_enqueue_style('slick_css', plugin_dir_url(__FILE__) . 'assets/css/slick.css', false, '1.0.0'); wp_enqueue_style('slick_theme_css', plugin_dir_url(__FILE__) . 'assets/css/slick-theme.css', false, '1.0.0'); wp_enqueue_script('admin_accesibility_js', plugin_dir_url(__FILE__) . 'assets/bootstrap/js/bootstrap.bundle.min.js', false, '4.4.1', true); wp_enqueue_script('custom_js', plugins_url('assets/js/custom_js.js', __FILE__), array('jquery'), '1.0.0', true); wp_enqueue_script('slick_js', plugins_url('assets/js/slick.min.js', __FILE__), array('jquery'), '1.0.0', true); wp_enqueue_script('ada-feedback', plugin_dir_url(__FILE__) . 'assets/js/feedback.js', array('jquery'), '1.0.0', true); wp_localize_script('ada-feedback', 'ada_ajax', [ 'ajax_url' => admin_url('admin-ajax.php'), 'nonce' => wp_create_nonce('ada_nonce') ]); wp_localize_script('my-script', 'ajax_object', array('ajaxurl' => admin_url('admin-ajax.php'))); $shopid = get_option('accessibility_shopid'); wp_localize_script('custom_js', 'myScript', array( 'ajax_url' => admin_url('admin-ajax.php'), 'pluginsUrl' => plugins_url(), 'editLanguagesUrl' => admin_url('admin.php?page=accessibility-laguages'), 'backtolanguages' => admin_url('admin.php?page=accessibility-submenu'), 'planlisting' => admin_url('admin.php?page=accessibility-plan'), 'accessibilitywidget' => admin_url('admin.php?page=accessibility-assistance'), 'assistantUrl' => ASSISTANT_URL, 'shopId' => $shopid )); /***Live paypal sdk start */ wp_enqueue_script( 'paypal_sdk', 'https://www.paypal.com/sdk/js?client-id=AXA7-tKsHXdEM50A4J_-3-4NamNd6YIAgKShr_gWNQaQxCMgs9p3GtRRXZ_S20xMm0p_wKjctfI0OoHe&vault=true&intent=subscription', array(), null, true ); /***Live paypal sdk end */ // Define an array of page slugs where you want to load the script $plugin_pages = [ 'accessibility-assistance', // Main menu page 'accessibility-submenu', // Submenu page 1 'accessibility-laguages', // Submenu page 2 'accessibility-plan', // Submenu page 3 'user-guide' // Submenu page 4 ]; // Check if current admin page is part of the plugin if (isset($_GET['page']) && in_array($_GET['page'], $plugin_pages)) { wp_enqueue_script('tracking_js', plugins_url('assets/js/tracking.js', __FILE__), array('jquery'), '1.0.0', true); } } //API Send function Call through path and data...... if (!function_exists('assistant_api_call')) { function assistant_api_call($path, $fields, $type) { $url = ASSISTANT_API_URL . $path; $apidata = array( 'body' => $fields, 'timeout' => '15', 'redirection' => '5', 'httpversion' => '1.0', 'blocking' => true, 'headers' => array(), 'cookies' => array() ); if ($type == 'post') { $response = wp_remote_post($url, $apidata); } else { $response = wp_remote_get($url, $apidata); } // Log the request being made (this can help with debugging) // error_log("Making API call to: " . $url); // error_log("Request Data: " . json_encode($fields)); $body = wp_remote_retrieve_body($response); // Check if the body is empty or not in the expected format // if (empty($body)) { // error_log("API Response Body is empty or invalid."); // } // Log the API response (body) for debugging purposes // error_log("API Response Body: " . $body); return json_decode($body, true); } } /* Describe what the code snippet does so you can remember later on */ add_action('wp_footer', 'accessibility_addjsfooter'); function accessibility_addjsfooter() { $url = get_option('accessibility_url'); if (!empty($url)) { wp_enqueue_script('frontfooter_accesibility_js', $url, false, '1.0', true); } } if (is_admin()) { require_once 'admin/accessibility_assistant_admin.php'; } add_action('admin_notices', 'accessibility_installadmin_notice'); function accessibility_installadmin_notice() { $accessibility_install = get_option('accessibility_install'); if ((get_option('accessibility_shopid')) == null || (get_option('accessibility_install')) == 0) { echo '

' . esc_html(__('Please uninstall this plugin and reinstall it.', 'accessibility-assistant')) . '

'; } } // function my_plugin_load_textdomain() // { // $lang = get_option('my_plugin_selected_language', 'en_US'); // $domain = 'accessibility-assistant'; // $locale = apply_filters('plugin_locale', $lang, $domain); // $mofile = plugin_dir_path(__FILE__) . "languages/$locale/accessibility-assistant.mo"; // if (file_exists($mofile)) { // load_textdomain($domain, $mofile); // } else { // load_plugin_textdomain($domain, false, basename(dirname(__FILE__)) . '/languages'); // } // } // add_action('plugins_loaded', 'my_plugin_load_textdomain'); // add_action('init', 'my_plugin_handle_language_switch'); // function my_plugin_handle_language_switch() { // if (isset($_POST['plugin_language'])) { // $selected_lang = sanitize_text_field($_POST['plugin_language']); // update_option('my_plugin_selected_language', $selected_lang); // // Redirect safely after POST // wp_redirect(esc_url_raw($_SERVER['REQUEST_URI'])); // exit; // } // } // Language Map function my_plugin_get_language_map() { return [ 'af' => 'af_ZA', 'am' => 'am_ET', 'ar' => 'ar_SA', 'az' => 'az_AZ', 'be' => 'be_BY', 'bg' => 'bg_BG', 'bn' => 'bn_BD', 'bo' => 'bo_CN', 'bs' => 'bs_BA', 'ca' => 'ca_ES', 'ceb' => 'ceb_PH', 'chk' => 'chk_FM', 'ckb' => 'ckb_IQ', 'cnh' => 'cnh_MM', 'cs' => 'cs_CZ', 'cy' => 'cy_GB', 'da' => 'da_DK', 'de' => 'de_DE', 'dv' => 'dv_MV', 'el' => 'el_GR', 'en' => 'en_US', 'es' => 'es_ES', 'es_419' => 'es_419', 'es_MX' => 'es_MX', 'es_PR' => 'es_PR', 'et' => 'et_EE', 'eu' => 'eu_ES', 'fa' => 'fa_IR', 'ff' => 'ff_SN', 'fi' => 'fi_FI', 'fj' => 'fj_FJ', 'fr' => 'fr_FR', 'fr_CA' => 'fr_CA', 'ga' => 'ga_IE', 'gu' => 'gu_IN', 'hak' => 'hak_TW', 'ha' => 'ha_NG', 'haw' => 'haw_US', 'he' => 'he_IL', 'hi' => 'hi_IN', 'hil' => 'hil_PH', 'hmn' => 'hmn_US', 'hr' => 'hr_HR', 'ht' => 'ht_HT', 'hu' => 'hu_HU', 'hy' => 'hy_AM', 'id' => 'id_ID', 'ig' => 'ig_NG', 'ilo' => 'ilo_PH', 'is' => 'is_IS', 'it' => 'it_IT', 'ja' => 'ja_JP', 'jv' => 'jv_ID', 'ka' => 'ka_GE', 'kea' => 'kea_CV', 'kk' => 'kk_KZ', 'km' => 'km_KH', 'kn' => 'kn_IN', 'ko' => 'ko_KR', 'ksw' => 'ksw_MM', 'ku' => 'ku_TR', 'ky' => 'ky_KG', 'la' => 'la_VA', 'lo' => 'lo_LA', 'lt' => 'lt_LT', 'lv' => 'lv_LV', 'man' => 'man_GM', 'mh' => 'mh_MH', 'mi' => 'mi_NZ', 'mien' => 'mien_US', 'mk' => 'mk_MK', 'ml' => 'ml_IN', 'mn' => 'mn_MN', 'mr' => 'mr_IN', 'ms' => 'ms_MY', 'mt' => 'mt_MT', 'my' => 'my_MM', 'ne' => 'ne_NP', 'nl' => 'nl_NL', 'nl_BE' => 'nl_BE', 'no' => 'no_NO', 'nv' => 'nv_US', 'om' => 'om_ET', 'pa' => 'pa_IN', 'pl' => 'pl_PL', 'ps' => 'ps_AF', 'pt' => 'pt_PT', 'pt_BR' => 'pt_BR', 'qu' => 'qu_PE', 'rn' => 'rn_BI', 'ro' => 'ro_RO', 'rom' => 'rom_MD', 'ru' => 'ru_RU', 'rw' => 'rw_RW', 'sm' => 'sm_WS', 'smj' => 'smj_NO', 'sk' => 'sk_SK', 'sl' => 'sl_SI', 'so' => 'so_SO', 'sq' => 'sq_AL', 'sr' => 'sr_RS', 'sr_ME' => 'sr_ME', 'sv' => 'sv_SE', 'sw' => 'sw_TZ', 'ta' => 'ta_IN', 'te' => 'te_IN', 'th' => 'th_TH', 'ti' => 'ti_ER', 'tl' => 'tl_PH', 'to' => 'to_TO', 'tr' => 'tr_TR', 'tt' => 'tt_RU', 'uk' => 'uk_UA', 'ur' => 'ur_PK', 'uz' => 'uz_UZ', 'vi' => 'vi_VN', 'wo' => 'wo_SN', 'xh' => 'xh_ZA', 'yi' => 'yi_001', 'yo' => 'yo_NG', 'zh' => 'zh_CN', 'zh_Hant' => 'zh_TW' ]; } // Normalize selected language function my_plugin_get_selected_locale() { $site_lang = get_locale(); $lang_map = my_plugin_get_language_map(); $stored = get_option('my_plugin_selected_language'); if (!$stored) { $stored = $site_lang; } // Normalize to full locale if (isset($lang_map[$stored])) { return $lang_map[$stored]; } // Try short version if full code doesn’t exist $short = substr($stored, 0, 2); if (isset($lang_map[$short])) { return $lang_map[$short]; } return $stored; } // Load translation early function my_plugin_load_textdomain() { $domain = 'accessibility-assistant'; $locale = my_plugin_get_selected_locale(); $mofile = plugin_dir_path(__FILE__) . "languages/$locale/$domain.mo"; if (file_exists($mofile)) { load_textdomain($domain, $mofile); } else { load_plugin_textdomain($domain, false, basename(dirname(__FILE__)) . '/languages'); } } add_action('plugins_loaded', 'my_plugin_load_textdomain'); // Handle language switch via POST function my_plugin_handle_language_switch() { if (isset($_POST['plugin_language'])) { $input_lang = sanitize_text_field($_POST['plugin_language']); $lang_map = my_plugin_get_language_map(); $normalized = isset($lang_map[$input_lang]) ? $lang_map[$input_lang] : $input_lang; update_option('my_plugin_selected_language', $normalized); wp_redirect(esc_url_raw($_SERVER['REQUEST_URI'])); exit; } } add_action('init', 'my_plugin_handle_language_switch'); // Redirect to "Acessibiity assustance plugin main" page on plugin activation add_action('admin_init', 'accessibility_redirect_after_activation'); function accessibility_redirect_after_activation() { if (get_option('accessibility_do_redirect')) { delete_option('accessibility_do_redirect'); if (!isset($_GET['activate-multi'])) { wp_safe_redirect(admin_url('admin.php?page=accessibility-assistance')); exit; } } } // Handle AJAX request for deactivation feedback add_action('wp_ajax_ada_submit_reason', function () { check_ajax_referer('ada_nonce'); $reason = sanitize_text_field($_POST['reason'] ?? ''); update_option('ada_uninstall_reason', $reason); wp_send_json_success(); }); //Load plan popup add_action('wp_ajax_load_plan_popup', 'load_plan_popup_callback'); function load_plan_popup_callback() { require_once plugin_dir_path(__FILE__) . 'admin/plan-popup.php'; wp_die(); // Always call wp_die() in Ajax handlers }