![]() Server : Apache/2 System : Linux server-15-235-50-60 5.15.0-164-generic #174-Ubuntu SMP Fri Nov 14 20:25:16 UTC 2025 x86_64 User : gositeme ( 1004) PHP Version : 8.2.29 Disable Function : exec,system,passthru,shell_exec,proc_close,proc_open,dl,popen,show_source,posix_kill,posix_mkfifo,posix_getpwuid,posix_setpgid,posix_setsid,posix_setuid,posix_setgid,posix_seteuid,posix_setegid,posix_uname Directory : /home/gositeme/domains/gositeme.com/public_html/wp-content/plugins/virtual_assistant/ |
<?php
/*
Plugin Name: Virtual Assistant for Wordpress
Description: Virtual Assistant, Voice command for Wordpress, build your own Google Now, Siri or Cortana.
Author: BestBug
Version: 2.3.3
Author URI: https://codecanyon.net/user/bestbug/portfolio
Text Domain: bestbug
Domain Path: /languages
*/
// If this file is called directly, abort.
if ( ! defined( 'WPINC' ) ) {
die;
}
defined( 'BESTBUG_VA_URL' ) or define('BESTBUG_VA_URL', plugins_url( '/', __FILE__ ));
defined( 'BESTBUG_VA_PATH' ) or define('BESTBUG_VA_PATH', basename( dirname( __FILE__ )));
defined( 'BESTBUG_VA_FULLPATH' ) or define('BESTBUG_VA_FULLPATH', plugins_url( '/', __FILE__ ));
defined( 'BESTBUG_VA_TEXTDOMAIN' ) or define('BESTBUG_VA_TEXTDOMAIN', plugins_url( '/', __FILE__ ));
defined( 'BESTBUG_VA_VERSION' ) or define('BESTBUG_VA_VERSION', '2.3.3');
defined( 'BESTBUG_VA_CATEGORY' ) or define('BESTBUG_VA_CATEGORY', 'Virtual Assistant');
defined( 'BESTBUG_VA_PREFIX' ) or define('BESTBUG_VA_PREFIX', 'virtual_assistant_');
// POSTTYPES
defined( 'BESTBUG_VA_POSTTYPE' ) or define('BESTBUG_VA_POSTTYPE', 'virtual_assistant');
// PAGE SLUG
defined( 'BESTBUG_VA_SLUG' ) or define('BESTBUG_VA_SLUG', 'virtual_assistant');
defined( 'BESTBUG_VA_SLUG_SETTINGS' ) or define('BESTBUG_VA_SLUG_SETTINGS', 'virtual_assistant_settings');
defined( 'BESTBUG_VA_ALL_VIRTUAL_ASSISTANT_SLUG' ) or define('BESTBUG_VA_ALL_VIRTUAL_ASSISTANT_SLUG', 'all_commands');
defined( 'BESTBUG_VA_ADD_VIRTUAL_ASSISTANT_SLUG' ) or define('BESTBUG_VA_ADD_VIRTUAL_ASSISTANT_SLUG', 'add_command');
// SHORTCODES
defined( 'BESTBUG_VA_SHORTCODE' ) or define('BESTBUG_VA_SHORTCODE', 'virtual_assistant');
// AJAX
defined( 'BESTBUG_VA_SAVE_SETTINS' ) or define('BESTBUG_VA_SAVE_SETTINS', 'virtual_assistant_save_settings');
defined( 'BESTBUG_VA_AJAX_EXCHANGE_RATES' ) or define('BESTBUG_VA_AJAX_EXCHANGE_RATES', 'virtual_assistant_exchange_rates');
if ( ! class_exists( 'BESTBUG_VA_CLASS' ) ) {
/**
* BESTBUG_VA_CLASS Class
*
* @since 1.0
*/
class BESTBUG_VA_CLASS {
/**
* Constructor
*
* @return void
* @since 1.0
*/
function __construct() {
// Load core
if(!class_exists('BESTBUG_CORE_CLASS')) {
include_once 'bestbugcore/index.php';
}
//BESTBUG_CORE_CLASS::support('vc-params');
BESTBUG_CORE_CLASS::support('options');
BESTBUG_CORE_CLASS::support('posttypes');
include_once 'includes/index.php';
if(is_admin()) {
include_once 'includes/admin/index.php';
}
add_action( 'init', array( $this, 'init' ) );
// Editor
// add_filter("mce_external_plugins", array( $this, "enqueue_plugin_scripts"));
// add_filter("mce_buttons", array( $this, "register_buttons_editor"));
// add_action( 'wp_footer', array( $this, 'virtual_assistant') );
}
public function init() {
// Load enqueueScripts
if(is_admin()) {
add_action( 'admin_enqueue_scripts', array( $this, 'adminEnqueueScripts' ) );
if(bb_option(BESTBUG_VA_PREFIX . 'use_in_backend') == 'yes') {
add_action( 'admin_enqueue_scripts', array( $this, 'enqueueScripts' ) );
}
}
add_action( 'wp_enqueue_scripts', array( $this, 'enqueueScripts' ) );
}
public function adminEnqueueScripts() {
BestBug_Core_Class::adminEnqueueScripts();
wp_enqueue_script( 'sweetalert', BESTBUG_CORE_URL . '/assets/admin/js/sweetalert.min.js', array( 'jquery' ), null, true );
wp_enqueue_script( 'virtual-assistant-admin', BESTBUG_VA_URL . '/assets/admin/js/script.js', array( 'jquery' ), '1.0', true );
wp_enqueue_script( 'checked-js', BESTBUG_VA_URL . 'assets/admin/js/removeChecked.js' );
wp_enqueue_style( 'font-awesome', BESTBUG_VA_URL . '/assets/libr/font-awesome/css/font-awesome.min.css' );
wp_enqueue_style( 'style', BESTBUG_VA_URL . '/assets/css/style.css' );
}
public function enqueueScripts() {
BESTBUG_CORE_CLASS::enqueueScripts();
wp_enqueue_style( 'virtual-assistant', BESTBUG_VA_URL . '/assets/css/style.css', array(), BESTBUG_VA_VERSION );
// wp_enqueue_style( 'virtual-assistant-kitt-flat', BESTBUG_VA_URL . '/assets/css/flat.css' );
wp_enqueue_script( 'responsivevoice', '//code.responsivevoice.org/responsivevoice.js?key=ZtJFiuqV', array( 'jquery' ), null, true );
wp_enqueue_script( 'annyang', BESTBUG_VA_URL . '/assets/js/annyang.min.js', array( 'jquery' ), '2.6.0', true );
// wp_enqueue_script( 'speechkitt', BESTBUG_VA_URL . '/assets/js/speechkitt.min.js', array( 'jquery' ), '1.0.0', true );
wp_enqueue_script( 'virtual-assistant', BESTBUG_VA_URL . '/assets/js/script.js', array( 'jquery' ), '1.1.3', true );
$textIntro = bb_option(BESTBUG_VA_PREFIX . 'text_instruction');
$speakIntro = bb_option(BESTBUG_VA_PREFIX . 'speak_instruction');
$speakIn = bb_option(BESTBUG_VA_PREFIX . 'lang_speak_in');
$vaVoice = bb_option(BESTBUG_VA_PREFIX . 'va_voice');
$mainColor = bb_option(BESTBUG_VA_PREFIX . 'main_color');
$secColor = bb_option(BESTBUG_VA_PREFIX . 'secondary_color');
$textColor = bb_option(BESTBUG_VA_PREFIX . 'text_color');
$mainColor = ($mainColor != '')?$mainColor:'#2980B9';
$secColor = ($secColor != '')?$secColor:'#3498DB';
$textColor = ($textColor != '')?$textColor:'#FFFFFF';
$custom_css = "
.skitt-ui--not-listening #skitt-toggle-button {
background-color: {$mainColor};
}
.skitt-ui--listening #skitt-listening-box {
color: {$textColor};
}
@-webkit-keyframes 'listen_pulse' {
0% {
background-color: {$mainColor};
}
50% {
background-color: {$secColor};
}
100% {
background-color: {$mainColor};
}
}
.skitt-ui--not-listening #skitt-toggle-button:hover, .skitt-ui--listening #skitt-toggle-button:hover, #skitt-ui {
background-color: {$secColor};
}
";
wp_add_inline_style( 'virtual-assistant-kitt-flat', $custom_css );
wp_localize_script( 'annyang', 'VA_SETTINGS',
array(
'ajaxurl' => admin_url( 'admin-ajax.php' ),
'TEXT_INTRO' => (isset($textIntro) && !empty($textIntro))?$textIntro:esc_html__('Say somethings...'),
'SPEAK_INTRO' => (isset($speakIntro) && !empty($speakIntro))?$speakIntro:'',
'USER_LANG' => (isset($speakIn) && !empty($speakIn))?$speakIn:'en-US',
'VA_VOICE' => (isset($vaVoice) && !empty($vaVoice))?$vaVoice:'UK English Female',
// 'ajaxnonce' => wp_create_nonce( 'itr_ajax_nonce' ),
)
);
$commands = array();
$commands_posts = get_posts(array(
'numberposts' => -1,
'post_type' => BESTBUG_VA_POSTTYPE,
));
ob_start();
?>
var va_d = new Date();
var va_date = va_d.getDate();
var va_day = va_d.getDay();
var va_year = va_d.getFullYear();
var va_hour = va_d.getHours();
var va_minute = va_d.getMinutes();
var va_month = va_d.getMonth();
var va_second = va_d.getSeconds();
var va_period = (va_hour<=12)?'<?php esc_attr_e('AM',' bestbug') ?>':'<?php esc_attr_e('PM',' bestbug') ?>';
var va_dofw = new Array(
'<?php esc_attr_e('Monday', 'bestbug') ?>',
'<?php esc_attr_e('Tuesday', 'bestbug') ?>',
'<?php esc_attr_e('Wednesday', 'bestbug') ?>',
'<?php esc_attr_e('Thursday', 'bestbug') ?>',
'<?php esc_attr_e('Friday', 'bestbug') ?>',
'<?php esc_attr_e('Saturday', 'bestbug') ?>',
'<?php esc_attr_e('Sunday', 'bestbug') ?>'
);
va_day = va_dofw[va_dofw];
var va_mofy = new Array(
'<?php esc_attr_e('January', 'bestbug') ?>',
'<?php esc_attr_e('February', 'bestbug') ?>',
'<?php esc_attr_e('March', 'bestbug') ?>',
'<?php esc_attr_e('April', 'bestbug') ?>',
'<?php esc_attr_e('May', 'bestbug') ?>',
'<?php esc_attr_e('June', 'bestbug') ?>',
'<?php esc_attr_e('July', 'bestbug') ?>',
'<?php esc_attr_e('August', 'bestbug') ?>',
'<?php esc_attr_e('September', 'bestbug') ?>',
'<?php esc_attr_e('October', 'bestbug') ?>',
'<?php esc_attr_e('November', 'bestbug') ?>',
'<?php esc_attr_e('December', 'bestbug') ?>'
);
va_month = va_mofy[va_month];
var va_commands = {
<?php foreach ($commands_posts as $id => $commands_post): ?>
"<?php echo strtolower(esc_attr($commands_post->post_title)) ?>": function(data) {
<?php
$activity = get_post_meta($commands_post->ID, BESTBUG_VA_PREFIX . 'activity', true);
$speak_content_finally = get_post_meta($commands_post->ID, BESTBUG_VA_PREFIX . 'speak_content_finally', true);
switch ($activity) {
case 'speak':
$speak_content = get_post_meta($commands_post->ID, BESTBUG_VA_PREFIX . 'speak_content', true);
if(!empty($speak_content)) {
?>
responsiveVoice.speak("<?php echo esc_attr(ucfirst($speak_content)) ?>", VA_SETTINGS.VA_VOICE);
<?php
}
break;
case 'read':
$read_selector = get_post_meta($commands_post->ID, BESTBUG_VA_PREFIX . 'read_selector', true);
?>
if(jQuery("<?php echo esc_attr($read_selector) ?>").length > 0) {
responsiveVoice.speak(jQuery("<?php echo esc_attr(ucfirst($read_selector)) ?>").text(), VA_SETTINGS.VA_VOICE);
}
<?php
break;
case 'go_to_link':
$link = get_post_meta($commands_post->ID, BESTBUG_VA_PREFIX . 'link', true);
$target = get_post_meta($commands_post->ID, BESTBUG_VA_PREFIX . 'target', true);
$link_spacing = get_post_meta($commands_post->ID, BESTBUG_VA_PREFIX . 'link_spacing', true);
$link_replace = get_post_meta($commands_post->ID, BESTBUG_VA_PREFIX . 'link_replace', true);
$size = ($target == '_new')?'width=200,height=200':'';
if(isset($link_spacing) && !empty($link_spacing)):
if($link_spacing == 'remove'):
?>
data = data.replace(" ", "");
<?php elseif($link_spacing == 'replace'): ?>
data = data.replace(" ", "<?php echo esc_attr($link_replace) ?>");
<?php endif; ?>
<?php endif; ?>
window.open("<?php echo esc_html($link) ?>".replace("[data]", data) , "<?php echo esc_attr($target) ?>", "<?php echo esc_attr($size) ?>");
<?php
break;
case 'scroll':
$scroll = get_post_meta($commands_post->ID, BESTBUG_VA_PREFIX . 'scroll_target', true);
$custom_scroll = get_post_meta($commands_post->ID, BESTBUG_VA_PREFIX . 'custom_scroll', true);
$scroll_selector = get_post_meta($commands_post->ID, BESTBUG_VA_PREFIX . 'scroll_selector', true);
?>
var scrollTo = 0;
<?php
switch ($scroll) {
case 'top':
?>scrollTo = 0;<?php
break;
case 'bottom':
?>scrollTo = jQuery('html').outerHeight();<?php
break;
case 'middle':
?>scrollTo = jQuery('html').outerHeight() /2;<?php
break;
case 'down':
?>scrollTo = jQuery(window).scrollTop() + parseInt("<?php echo esc_attr($custom_scroll) ?>");<?php
break;
case 'up':
?>scrollTo = jQuery(window).scrollTop() - parseInt("<?php echo esc_attr($custom_scroll) ?>");<?php
break;
case 'element':
?>
if(jQuery("<?php echo esc_attr($scroll_selector) ?>").length > 0) {
scrollTo = jQuery("<?php echo esc_attr($scroll_selector) ?>").offset().top;
}
<?php
break;
case 'custom':
?>scrollTo = '<?php echo esc_attr($custom_scroll) ?>';<?php
break;
default:
$scrollTo = 0;
break;
}
?>
jQuery('html, body').animate({
scrollTop: scrollTo
});
<?php
break;
case 'add_to_cart':
$product_id = get_post_meta($commands_post->ID, BESTBUG_VA_PREFIX . 'product_id', true);
?>
jQuery.get('<?php echo home_url() ?>?post_type=product&add-to-cart=<?php echo esc_attr($product_id) ?>', function() {
});
<?php
break;
case 'click':
$click_selector = get_post_meta($commands_post->ID, BESTBUG_VA_PREFIX . 'click_selector', true);
?>
if(jQuery("<?php echo esc_attr($click_selector) ?>").length > 0) {
jQuery("<?php echo esc_attr($click_selector) ?>").trigger('click');
}
<?php
break;
case 'time':
$time_speak_content = get_post_meta($commands_post->ID, BESTBUG_VA_PREFIX . 'time_speak_content', true);
?>
var va_time_speak = "<?php echo esc_attr($time_speak_content) ?>";
va_time_speak = va_time_speak.replace("[YEAR]", va_year);
va_time_speak = va_time_speak.replace("[MONTH]", va_month);
va_time_speak = va_time_speak.replace("[DATE]", va_date);
va_time_speak = va_time_speak.replace("[HOUR]", va_hour);
va_time_speak = va_time_speak.replace("[MINUTE]", va_minute);
va_time_speak = va_time_speak.replace("[SECOND]", va_second);
va_time_speak = va_time_speak.replace("[DAY]", va_day);
va_time_speak = va_time_speak.replace("[PERIOD]", va_period);
responsiveVoice.speak(va_time_speak, VA_SETTINGS.VA_VOICE);
<?php
break;
case 'custom':
$custom_js = get_post_meta($commands_post->ID, BESTBUG_VA_PREFIX . 'custom_js', true);
echo $custom_js;
break;
default:
# code...
break;
} // End switch
if( $speak_content_finally != '') {
?>responsiveVoice.speak("<?php echo esc_attr(ucfirst($speak_content_finally)) ?>", VA_SETTINGS.VA_VOICE);<?php
}
?>
},
<?php endforeach; ?>
};
<?php
$commands = trim(preg_replace('/(\t+|\n+|\r+)/', '', ob_get_contents()));
ob_end_clean();
wp_add_inline_script('virtual-assistant', $commands);
}
public function loadTextDomain() {
load_plugin_textdomain( BESTBUG_VA_TEXTDOMAIN, false, BESTBUG_VA_PATH . '/languages/' );
}
}
new BESTBUG_VA_CLASS();
}