define_constants();
$this->includes();
$this->init_hooks();
$this->api = new fielddayApi();
$this->engine = new fielddayCore();
$cookieoffset = $this->engine->getCookieStorage('offset', false);
if ($cookieoffset) {
$fielddaySetting['offset'] = $cookieoffset;
} else {
$fielddaySetting['offset'] = 300;
}
/*$cookievisitbefore = $this->engine->getCookieStorage('visitbefore', false);
if ($cookievisitbefore)
{ echo "visitedbefore";
echo $fielddaySetting['visitbefore'] = $cookievisitbefore;
} else
{ echo "notvisitedbefore";
$fielddaySetting['visitbefore'] = '';
}*/
if (isset($_REQUEST['cartId'])) {
setcookie('GcartId', $_REQUEST['cartId'], time() + (86400), "/"); // 86400 = 1 day
}
if (isset($_REQUEST['parentId'])) {
setcookie('GparentId', $_REQUEST['parentId'], time() + (86400), "/"); // 86400 = 1 day
}
$fielddaySetting['siteName'] = get_bloginfo();
if (!$this->engine->getValue('global_popup_key', $fielddaySetting, false)) {
$randomnumber = "field_day_" . rand(1, 9999);
$fielddaySetting['global_popup_key'] = $randomnumber;
}
//$fielddaySetting['global_popup_key'] = "_global_discount_check23222";
$this->suffix = (defined('WP_DEBUG') && true === WP_DEBUG) ? "" : '.min';
}
/**
* Hook into actions and filters.
*
* @since 1.0.0
*/
private function init_hooks()
{
register_activation_hook(fieldday_PLUGIN_FILE, array($this, 'fieldday_plugin_install'));
add_action('init', array($this, 'init'), 0);
add_action('after_setup_theme', [$this, 'remove_admin_bar']);
/* register front end scripts */
add_action('wp_enqueue_scripts', array($this, 'fielddayScripts'), 0);
/* register admin scripts */
add_action('admin_enqueue_scripts', array($this, 'fielddayAdminScripts'), 0);
/* add popup messages in footer */
add_action('wp_footer', [$this, 'KmAlertMessages']);
/*
Not Required Anymore
add_action('wp_footer', [$this, 'KmStickyWidget']);
Not Required Anymore end
*/
add_action('wp_footer', [$this, 'KmStickyWidgetAddToCartIcon']);
/* add script in header section */
add_action('wp_head', [$this, 'fielddayHead']);
/* add fieldday user into menu selected */
add_filter('wp_nav_menu_items', [$this, 'fielddayUserInMenu'], 999, 2);
/* add cart icon into menu selected */
//add_filter('wp_nav_menu_items', [$this, 'fielddayCartInMenu'], 999, 2);
}
public function fielddayHead()
{
global $fielddaySetting;
$this->engine->getValue('fieldday_header_Script', $fielddaySetting);
$kmPrimaryColor = $this->engine->getValue('primary_color', $fielddaySetting, false);
$kmSecondaryColor = $this->engine->getValue('secondary_color', $fielddaySetting, false);
$kmHighlightColor = $this->engine->getValue('highlightcolor', $fielddaySetting, false);
$fieldday_bullets = $this->engine->getValue('fieldday_bullets', $fielddaySetting, false);
$fieldday_text_color = $this->engine->getValue('textcolor', $fielddaySetting, false);
if ($fieldday_text_color == '') {
$fieldday_text_color = "#ffffff";
}
$fieldday_text_color2 = $this->engine->getValue('textcolor2', $fielddaySetting, false);
$fieldday_user_menu_font_size = $this->engine->getValue('fieldday_user_menu_font_size', $fielddaySetting, false);
if ($fieldday_text_color2 == '') {
$fieldday_text_color2 = "#ffffff";
}
print "";
}
/**
* user HTML in menu
* @global Array $fielddaySetting
* @param String $items
* @param mixed $args
* @return String menu Html
*/
public function fielddayUserInMenu($items, $args)
{
global $fielddaySetting;
$selectedMenu = $this->engine->getValue('user_menu', $fielddaySetting, false);
$selectedCartMenu = $this->engine->getValue('cart_menu', $fielddaySetting, false);
if (isset($args->menu->term_id)) {
if ($selectedCartMenu == $args->menu->term_id) {
$items .= $this->engine->GetCartView();
}
if ($selectedMenu == $args->menu->term_id) {
$items .= $this->engine->UserInMenuHtml();
}
return $items;
} else {
$menu = wp_get_nav_menu_object($args->menu);
if ($selectedCartMenu == $menu->term_id) {
$items .= $this->engine->GetCartView();
}
if ($selectedMenu == $menu->term_id) {
$items .= $this->engine->UserInMenuHtml();
}
return $items;
}
}
/*
* fieldday instalation hook
*/
public function fieldday_plugin_install() {}
/**
* Init plugin when WordPress Initialises.
*/
public function init()
{
global $KmUser;
$KmUser = $this->getKmUser();
$this->BlockfielddayDashboard();
if (!session_id()) {
session_start();
}
add_role(
fieldday_ROLE,
__('fieldday User'),
array(
'read' => true, // true allows this capability
)
);
}
/**
* Define fieldday Constants.
*/
private function define_constants()
{
$this->define('fieldday_ABSPATH', dirname(fieldday_PLUGIN_FILE) . '/');
$this->define('fieldday_BASENAME', plugin_basename(fieldday_PLUGIN_FILE));
$this->define('fieldday_URL', plugins_url(basename(fieldday_ABSPATH)));
$this->define('fieldday_VERSION', $this->version);
$this->define('fieldday_PLACEHOLDER', fieldday_URL . '/assets/img/placeholder.png');
$this->define('fieldday_PLACEHOLDER_CHECK', fieldday_URL . '/assets/img/refund_cancel_check.png');
$this->define('fieldday_PLACEHOLDER_USER', fieldday_URL . '/assets/img/personal_info.png');
$this->define('fieldday_CURRENCY', '$');
$this->define('fieldday_ROLE', 'km_user');
$this->define('fieldday_NOT_ALLOWED_INPUT_CHAR', '/http:|https:|script|src=|\/|\.js|<|>/i');
}
/**
* Include required core files used in admin and on the frontend.
*/
public function includes()
{
global $fielddaySetting;
$activetheme = array_key_exists('fieldday_theme_mode', $fielddaySetting) ? $fielddaySetting['fieldday_theme_mode'] : null;
include_once fieldday_ABSPATH . '/inc/ClassFielddayBase.php';
include_once fieldday_ABSPATH . '/inc/ClassFielddayhubCore.php';
include_once fieldday_ABSPATH . '/lib/FielddayApi/FielddayApi.php';
include_once fieldday_ABSPATH . '/inc/ClassShortcodes.php';
include_once fieldday_ABSPATH . '/inc/ClassActions.php';
include_once fieldday_ABSPATH . '/inc/widgets/classWidgets.php';
/*active theme fucntion file*/
if ($activetheme && file_exists(fieldday_ABSPATH . "/views/theme/{$activetheme}/functions.php")) {
include_once fieldday_ABSPATH . "/views/theme/{$activetheme}/functions.php";
}
/* add admin files */
/* add admin files */
if (is_admin()) {
include_once fieldday_ABSPATH . '/inc/ClassAdminOptions.php';
}
}
/**
* get fieldday Current loggedin user
*
* @return boolean
*/
public function getKmUser()
{
$km_user = wp_get_current_user();
if ($km_user) {
$meta = get_user_meta($km_user->ID, 'km_user_data', true);
if ($meta) {
$KmUser = $this->api->getUser($meta->_id, $meta->accessToken);
if ($KmUser->statusCode === 200) {
$KmUser->data->accessToken = $meta->accessToken;
return $KmUser->data;
}
}
}
return false;
}
/*
* add some alert messages in wordpress footer
*/
public function KmAlertMessages()
{
global $fielddaySetting;
$cookieCheck = $this->engine->getCookieStorage($fielddaySetting['global_popup_key'], false);
$isenabled = $this->engine->getValue('fieldday_global_popup', $fielddaySetting, false);
$isPopupEnablePage = $this->engine->getValue('fieldday_globalpopup_page', $fielddaySetting, false);
$pageID = get_the_ID();
if ($isenabled == 'enabled' && !$cookieCheck) {
if ($isPopupEnablePage == $pageID || $isPopupEnablePage == 'all') {
echo $this->engine->getView('global_popup');
}
}
global $fielddaySetting;
$this->engine->getValue('fieldday_footer_Script', $fielddaySetting);
echo $this->engine->getView('fieldday_alerts');
}
/*
* add some alert messages in wordpress footer
*/
public function KmStickyWidget()
{
global $fielddaySetting;
$isenabled = $this->engine->getValue('fieldday_sticky_widget', $fielddaySetting, false);
$StickyOption = $this->engine->getValue('fieldday_sticky_option', $fielddaySetting, false);
if ($isenabled == 'enable') {
echo '
';
}
}
public function KmStickyWidgetAddToCartIcon()
{
global $fielddaySetting;
$isenabled = $this->engine->getValue('fieldday_sticky_widget', $fielddaySetting, false);
$fieldday_sticky_icon_bg_color = $this->engine->getValue('fieldday_sticky_icon_bg_color', $fielddaySetting, false);
$fieldday_sticky_icon_textcolor = $this->engine->getValue('fieldday_sticky_icon_textcolor', $fielddaySetting, false);
$kmPrimaryColor_Value = $this->engine->getValue('primary_color', $fielddaySetting, false);
$cartdata = fieldday()->engine->GetCartData();
if ($cartdata) {
$count = count($cartdata);
} else {
$count = 0;
}
if (!$fieldday_sticky_icon_textcolor || $fieldday_sticky_icon_textcolor == '') {
$fieldday_sticky_icon_textcolor = '#ffffff';
}
if (!$fieldday_sticky_icon_bg_color || $fieldday_sticky_icon_bg_color == '') {
if ($kmPrimaryColor_Value && $kmPrimaryColor_Value != '') {
$fieldday_sticky_icon_bg_color = $kmPrimaryColor_Value;
} else {
$fieldday_sticky_icon_bg_color = '#000000';
}
}
if ($isenabled == 'enable') {
echo '';
}
}
/**
* register and enque front end styles and scripts.
*
* @since 1.0.0
*/
public function fielddayScripts()
{
global $post;
global $fielddaySetting;
$post_id = isset($post) ? $post->ID : 0;
$activetheme = $this->engine->getvalue('fieldday_theme_mode', $fielddaySetting, false);
wp_register_script('intl-tel-input', fieldday_URL . '/assets/js/intlTelInput.js', [], fieldday_VERSION);
wp_register_script('cleave', fieldday_URL . '/assets/js/cleave.min.js', array(), fieldday_VERSION);
wp_register_script('cleave-phone.us', fieldday_URL . '/assets/js/cleave-phone.i18n.js', array(), fieldday_VERSION);
wp_register_script('parsley', fieldday_URL . '/assets/js/parsley.min.js', array(), fieldday_VERSION);
wp_register_script('serializejson', fieldday_URL . '/assets/js/jquery.serializejson.js', array(), fieldday_VERSION);
wp_register_script('select2', fieldday_URL . '/assets/js/select2.min.js', array('jquery'), fieldday_VERSION, true);
wp_register_script('km_slider', fieldday_URL . '/assets/js/slick.min.js', array('jquery'), fieldday_VERSION, true);
wp_register_script('km_daterangepicker', fieldday_URL . '/assets/js/daterangepicker.min.js', array('jquery'), fieldday_VERSION, true);
wp_register_script('km_multidatespicker', fieldday_URL . '/assets/js/jquery-ui.multidatespicker.js', array('jquery'), fieldday_VERSION, true);
wp_register_script('km_stripe_v2', 'https://js.stripe.com/v2/', [], fieldday_VERSION, true);
wp_register_script('km_stripe_v3', 'https://js.stripe.com/v3/', [], fieldday_VERSION, true);
wp_register_script('km_fullcalendar', fieldday_URL . '/assets/js/fullcalendar.min.js', array('jquery'), fieldday_VERSION, true);
$themeJsFile = fieldday_ABSPATH . "/views/theme/{$activetheme}/assets/js/scripts.js";
if (file_exists($themeJsFile)) {
wp_enqueue_script('km_theme_js_custom', fieldday_URL . "/views/theme/{$activetheme}/assets/js/scripts.js", array('jquery'), fieldday_VERSION);
}
//wp_enqueue_script('fieldday_script', fieldday_URL . "/assets/js/fieldday{$this->suffix}.js", array('jquery', 'moment', 'intl-tel-input', 'cleave', 'cleave-phone.us', 'parsley', 'serializejson', 'select2', 'km_slider', 'km_daterangepicker', 'km_fullcalendar', 'km_theme_js_custom'), fieldday_VERSION);
wp_enqueue_script('fieldday_script', fieldday_URL . "/assets/js/fieldday{$this->suffix}.js", array('jquery', 'km_stripe_v2', 'km_stripe_v3', 'moment', 'intl-tel-input', 'cleave', 'cleave-phone.us', 'parsley', 'serializejson', 'select2', 'km_slider', 'km_daterangepicker', 'km_fullcalendar', 'km_theme_js_custom'), fieldday_VERSION);
wp_enqueue_script('google-api', '//www.google.com/recaptcha/api.js?h1=en&', array(), fieldday_VERSION);
/**** Pollyfill js commented becuase of hack attack */
/*
wp_enqueue_script('google-polyfill-fixed', '//polyfill.io/v3/polyfill.js?features=Symbol%2CObject.getOwnPropertySymbols%2CSymbol.asyncIterator%2CSymbol.for%2CSymbol.hasInstance%2CSymbol.isConcatSpreadable%2CSymbol.iterator%2CSymbol.keyFor%2CSymbol.match%2CSymbol.replace%2CSymbol.prototype.description%2CSymbol.search%2CSymbol.species%2CSymbol.split%2CSymbol.toPrimitive%2CSymbol.toStringTag%2CSymbol.unscopables
', array(), fieldday_VERSION);
*/
$googlemapapi = $this->engine->getvalue('fieldday_googlemapapi_mode', $fielddaySetting, false);
wp_enqueue_script('google-map-api', "//maps.googleapis.com/maps/api/js?key={$googlemapapi}&libraries=places", array(), fieldday_VERSION);
/* if(!$this->engine->isKmLogin() ){
wp_enqueue_script('google-map-api', "//maps.googleapis.com/maps/api/js?key={$googlemapapi}&libraries=places&sensor=false", array(), fieldday_VERSION);
} */
//wp_enqueue_script('stripe', 'https://js.stripe.com/v2/');
wp_enqueue_script('jquery-ui-datepicker');
wp_enqueue_script('km_multidatespicker');
wp_register_style('km_fontawesome', fieldday_URL . '/assets/css/fontawesome.full.min.css');
wp_register_style('intl-tel-input', fieldday_URL . '/assets/css/intlTelInput.css', [], fieldday_VERSION);
wp_register_style('jquery-ui', fieldday_URL . '/assets/css/jquery-ui.css');
wp_register_style('select2css', fieldday_URL . '/assets/css/select2.min.css', false, fieldday_VERSION);
wp_register_style('km_slider', fieldday_URL . '/assets/css/slick.min.css', false, fieldday_VERSION);
wp_register_style('km_slider_theme', fieldday_URL . '/assets/css/slick-theme.css', false, fieldday_VERSION);
wp_register_style('km_daterangepicker_theme', fieldday_URL . '/assets/css/daterangepicker.css', false, fieldday_VERSION);
wp_register_style('km_multidatespicker_theme', fieldday_URL . '/assets/css/jquery-ui.multidatespicker.css', false, fieldday_VERSION);
wp_register_style('km_fullcalendar_theme', fieldday_URL . '/assets/css/fullcalendar.min.css', false, fieldday_VERSION);
$themeCssFile = fieldday_ABSPATH . "/views/theme/{$activetheme}/assets/css/style.css";
if (file_exists($themeCssFile)) {
wp_register_style('km_theme_css_custom', fieldday_URL . "/views/theme/{$activetheme}/assets/css/style.css", false, fieldday_VERSION);
}
wp_enqueue_style('fieldday_style', fieldday_URL . "/assets/css/fieldday{$this->suffix}.css", array('intl-tel-input', 'km_fontawesome', 'jquery-ui', 'select2css', 'km_slider', 'km_slider_theme', 'km_theme_css_custom', 'km_daterangepicker_theme', 'km_fullcalendar_theme'), fieldday_VERSION);
wp_localize_script(
'fieldday_script',
'fieldday_ajax',
array(
'ajax_url' => admin_url('admin-ajax.php'),
"permalink" => get_permalink($post_id),
'_wpnonce' => wp_create_nonce('km_nonce_' . $post_id),
'isKmUser' => $this->engine->isKmLogin(),
'fieldday_stripe_token' => $this->engine->getStripeToken(),
'add_to_cart_btn' => $this->engine->displayText('add_to_cart_btn', false),
'atc_next_btn' => $this->engine->displayText('atc_next_btn', false),
'atc_prev_btn' => $this->engine->displayText('atc_prev_btn', false),
'invalid_form_message' => $this->engine->displayText('invalid_form_message', false),
'delteConfirm' => $this->engine->displayText('delete_confirm_text', false),
'map_header_text' => $this->engine->displayText('map_header_text', false),
'map_footer_button_text' => $this->engine->displayText('map_footer_button_text', false),
'g_sitekey' => $this->engine->getvalue('fieldday_google_recaptcha_id', $fielddaySetting, false),
'confirm_pop_text' => $this->engine->displayText('confirm_pop_text', false),
'global_popup_key' => $fielddaySetting['global_popup_key'],
'isEnabledLocationPopUpPurchasePage' => $fielddaySetting['fieldday_sticky_location_widget'] ?? '',
'fieldday_provider_country_code' => $fielddaySetting['fieldday_provider_country_code'] ?? 'US',
'fieldday_provider_dial_code' => $fielddaySetting['fieldday_provider_dial_code'] ?? '1',
)
);
}
public function fielddayAdminScripts()
{
// Register and enqueue the JavaScript file with jQuery as a dependency
wp_register_script('intl-tel-input-admin-js', fieldday_URL . '/assets/js/intlTelInput.js', [], fieldday_VERSION, true);
wp_enqueue_script('intl-tel-input-admin-js');
wp_register_style('intl-tel-input-admin-css', fieldday_URL . '/assets/css/intlTelInput.css', [], fieldday_VERSION);
wp_enqueue_style('intl-tel-input-admin-css');
// Register and enqueue the CSS file and js file
wp_register_script('fieldday_pickr_script', fieldday_URL . '/assets/js/pickr.min.js', [], fieldday_VERSION);
wp_enqueue_script('fieldday_admin_script', fieldday_URL . '/assets/js/fieldday_admin.js', array('jquery', 'fieldday_pickr_script'), fieldday_VERSION);
wp_enqueue_style('fieldday_admin_style', fieldday_URL . '/assets/css/fielday_admin.css', array('fieldday_pickr_style'), fieldday_VERSION);
wp_register_style('fieldday_pickr_style', fieldday_URL . '/assets/css/pickr.min.css', array(), fieldday_VERSION);
}
/**
* Define constant if not already set.
*
* @param string $name Constant name.
* @param string|bool $value Constant value.
*/
private function define($name, $value)
{
if (!defined($name)) {
define($name, $value);
}
}
/**
* logout fieldday user on admin url
*/
private function BlockfielddayDashboard()
{
if (is_admin() && current_user_can(fieldday_ROLE) && !current_user_can('administrator') && !(defined('DOING_AJAX') && DOING_AJAX)) {
wp_clear_auth_cookie();
wp_redirect(admin_url());
exit;
}
}
public function remove_admin_bar()
{
if (!is_admin() && current_user_can(fieldday_ROLE)) {
show_admin_bar(false);
}
}
}