HEX
Server: LiteSpeed
System: Linux s1049.use1.mysecurecloudhost.com 4.18.0-477.27.2.lve.el8.x86_64 #1 SMP Wed Oct 11 12:32:56 UTC 2023 x86_64
User: xedaptot (3356)
PHP: 8.3.31
Disabled: NONE
Upload Files
File: /home/xedaptot/naniguide.com/wp-content/plugins/golo-framework/includes/class-golo-core.php
<?php

if (!defined('ABSPATH')) {
    exit;
}

if (!class_exists('Golo_Core')) {
    /**
     *  The core plugin class
     *  Class Golo_Core
     */
    class Golo_Core
    {

        /**
         * Instance variable for singleton pattern
         */
        private static $instance = null;
        /**
         * Return class instance
         */
        public static function instance()
        {
            if (null == self::$instance) {
                self::$instance = new self;
            }
            return self::$instance;
        }

        /**
         * Define the core functionality of the plugin
         */
        public function __construct()
        {
            $this->include_library();
            $this->template_hooks();
            $this->admin_hooks();
        }

        /**
         * Load the required dependencies for this plugin
         */
        private function include_library()
        {
            require_once GOLO_PLUGIN_DIR . 'includes/golo-helper.php';

            require_once GOLO_PLUGIN_DIR . 'includes/class-golo-optimize.php';
            require_once GOLO_PLUGIN_DIR . 'includes/class-golo-capability.php';
            require_once GOLO_PLUGIN_DIR . 'includes/class-golo-template-loader.php';
            require_once GOLO_PLUGIN_DIR . 'includes/class-golo-shortcodes.php';
            require_once GOLO_PLUGIN_DIR . 'includes/class-golo-ajax.php';

            // Mega Menu
            require_once GOLO_PLUGIN_DIR . 'includes/mega-menu/class-mega-menu.php';

            // Google Review
            include_once GOLO_PLUGIN_DIR . 'includes/google-review/class-google-review.php';

            // Yelp Review
            include_once GOLO_PLUGIN_DIR . 'includes/yelp-review/class-yelp-review.php';

            // Export
            //require_once GOLO_PLUGIN_DIR . 'includes/import/class-exporter.php';

            // Import
            require_once GOLO_PLUGIN_DIR . 'includes/class-golo-importer.php';

            // Update
            require_once GOLO_PLUGIN_DIR . 'includes/admin/class-golo-updater.php';

            // Admin
            require_once GOLO_PLUGIN_DIR . 'includes/admin/class-golo-plugins.php';
            require_once GOLO_PLUGIN_DIR . 'includes/admin/class-golo-admin-setup.php';
            require_once GOLO_PLUGIN_DIR . 'includes/admin/class-golo-admin.php';
            require_once GOLO_PLUGIN_DIR . 'includes/admin/class-golo-admin-place.php';
            require_once GOLO_PLUGIN_DIR . 'includes/admin/class-golo-admin-booking.php';
            require_once GOLO_PLUGIN_DIR . 'includes/admin/class-golo-admin-package.php';
            require_once GOLO_PLUGIN_DIR . 'includes/admin/class-golo-admin-user-package.php';
            require_once GOLO_PLUGIN_DIR . 'includes/admin/class-golo-admin-invoice.php';
            require_once GOLO_PLUGIN_DIR . 'includes/admin/class-golo-metaboxes.php';
            require_once GOLO_PLUGIN_DIR . 'includes/admin/class-golo-profile.php';
            require_once GOLO_PLUGIN_DIR . 'includes/admin/class-golo-location.php';
            require_once GOLO_PLUGIN_DIR . 'includes/admin/class-golo-schedule.php';
            require_once GOLO_PLUGIN_DIR . 'includes/admin/class-golo-rest-api.php';

            // Partials
            include_once GOLO_PLUGIN_DIR . 'includes/partials/place/class-golo-place.php';
            include_once GOLO_PLUGIN_DIR . 'includes/partials/package/class-golo-package.php';
            include_once GOLO_PLUGIN_DIR . 'includes/partials/payment/class-golo-payment.php';
            include_once GOLO_PLUGIN_DIR . 'includes/partials/payment/class-golo-trans-log.php';
            include_once GOLO_PLUGIN_DIR . 'includes/partials/invoice/class-golo-invoice.php';
            include_once GOLO_PLUGIN_DIR . 'includes/partials/booking/class-golo-booking.php';

            // Sessions
            include_once GOLO_PLUGIN_DIR . 'includes/class-golo-session.php';

            // Captcha
            include_once GOLO_PLUGIN_DIR . 'includes/class-golo-captcha.php';
        }

        /**
         * Register all of the hooks related to the admin area functionality
         */
        private function admin_hooks()
        {
            /**
             * Hook Golo_Admin_Setup
             */
            if (is_admin()) {
                $setup_page = new Golo_Admin_Setup();
                add_action('admin_menu', array($setup_page, 'admin_menu'), 12);
            }

            /**
             * Hook Golo_Admin
             */
            $golo_admin = new Golo_Admin();
            add_filter('glf_meta_box_config', array($golo_admin, 'register_meta_boxes'));
            add_filter('glf_register_post_type', array($golo_admin, 'register_post_type'));
            add_filter('glf_register_taxonomy', array($golo_admin, 'register_taxonomy'));
            add_filter('glf_register_term_meta', array($golo_admin, 'register_term_meta'));

            add_filter('glf_option_config', array($golo_admin, 'register_options_config'));
            add_action('init', array($golo_admin, 'register_post_status'));
            add_action('admin_menu', array($golo_admin, 'admin_menu'));
            add_action('after_setup_theme', array($golo_admin, 'remove_admin_bar'));

            /**
             * Hook Golo_Admin_Place
             */
            $golo_admin_place = new Golo_Admin_Place();
            add_filter('golo_place_slug', array($golo_admin_place, 'modify_place_slug'));
            add_filter('golo_place_type_slug', array($golo_admin_place, 'modify_place_type_slug'));
            add_filter('golo_place_categories_slug', array($golo_admin_place, 'modify_place_categories_slug'));
            add_filter('golo_place_amenities_slug', array($golo_admin_place, 'modify_place_amenities_slug'));
            add_filter('golo_place_city_slug', array($golo_admin_place, 'modify_place_city_slug'));
            add_filter('golo_place_neighborhood_slug', array($golo_admin_place, 'modify_place_neighborhood_slug'));
            add_action('restrict_manage_posts', array($golo_admin_place, 'filter_restrict_manage_place'));
            add_filter('parse_query', array($golo_admin_place, 'place_filter'));
            add_action('admin_init', array($golo_admin_place, 'approve_place'));
            add_action('admin_init', array($golo_admin_place, 'expire_place'));
            add_action('admin_init', array($golo_admin_place, 'hidden_place'));
            add_action('admin_init', array($golo_admin_place, 'show_place'));

            add_action('wp_ajax_golo_get_city_by_country_ajax', array($golo_admin_place, 'get_city_by_country_ajax'));
            add_action('wp_ajax_nopriv_golo_get_city_by_country_ajax', array($golo_admin_place, 'get_city_by_country_ajax'));
            add_action('wp_ajax_golo_action_claim_listing', array($golo_admin_place, 'action_claim_listing'));
            add_action('wp_ajax_nopriv_golo_action_claim_listing', array($golo_admin_place, 'action_claim_listing'));

            add_action('wp_ajax_golo_get_neighborhoods_by_city_ajax', array($golo_admin_place, 'get_neighborhoods_by_city_ajax'));
            add_action('wp_ajax_nopriv_golo_get_neighborhoods_by_city_ajax', array($golo_admin_place, 'get_neighborhoods_by_city_ajax'));

            // Disable gutenberg for place
            $enable_gutenberg_edit_place = golo_get_option('enable_gutenberg_edit_place', 0);
            if ($enable_gutenberg_edit_place == 0) {
                if (version_compare($GLOBALS['wp_version'], '5.0-beta', '>')) {
                    // WP > 5 beta
                    add_filter('use_block_editor_for_post_type', array($golo_admin_place, 'golo_disable_gutenberg_for_post_type'), 10, 2);
                } else {
                    // WP < 5 beta
                    add_filter('gutenberg_can_edit_post_type', array($golo_admin_place, 'golo_disable_gutenberg_for_post_type'), 10, 2);
                }
            }

            /**
             * Hook Golo_Package_Admin
             */
            $golo_admin_package = new Golo_Admin_Package();
            add_filter('golo_package_slug', array($golo_admin_package, 'modify_package_slug'));

            // Agent Packages Post Type
            $golo_user_package_admin = new Golo_User_Package_Admin();
            add_filter('golo_user_package_slug', array($golo_user_package_admin, 'modify_user_package_slug'));
            add_action('restrict_manage_posts', array($golo_user_package_admin, 'filter_restrict_manage_user_package'));
            add_action('before_delete_post', array($golo_user_package_admin, 'action_delete_post'));
            add_filter('parse_query', array($golo_user_package_admin, 'user_package_filter'));

            /**
             * Hook Golo_Invoice_Admin
             */
            $golo_admin_invoice = new Golo_Admin_Invoice();
            add_action('golo_invoice_slug', array($golo_admin_invoice, 'modify_invoice_slug'));
            add_action('restrict_manage_posts', array($golo_admin_invoice, 'filter_restrict_manage_invoice'));
            add_action('parse_query', array($golo_admin_invoice, 'invoice_filter'));

            /**
             * Hook Golo_Booking_Admin
             */
            $golo_admin_booking = new Golo_Admin_Booking();
            add_action('admin_init', array($golo_admin_booking, 'approve_booking'));
            add_action('admin_init', array($golo_admin_booking, 'cancel_booking'));

            /**
             * Hook Golo_Booking_Admin
             */
            $golo_booking = new Golo_Booking();
            add_action('wp', array($golo_booking, 'booking_action_handler'));

            /**
             * Hook Golo_Rest_API
             */
            $golo_rest_api = new Golo_Rest_API();
            add_action('rest_api_init', array($golo_rest_api, 'register_fields_api'));

            // add_filter( 'rest_authentication_errors', function( $result ) {
            //     if ( ! empty( $result ) ) {
            //         return $result;
            //     }
            //     if ( ! is_user_logged_in() ) {
            //         return new WP_Error( 'rest_not_logged_in', 'You are not currently logged in.', array( 'status' => 401 ) );
            //     }
            //     return $result;
            // });

            $profile = new Golo_Profile();
            add_filter('show_user_profile', array($profile, 'custom_user_profile_fields'));
            add_filter('edit_user_profile', array($profile, 'custom_user_profile_fields'));
            add_action('edit_user_profile_update', array($profile, 'update_custom_user_profile_fields'));
            add_action('personal_options_update', array($profile, 'update_custom_user_profile_fields'));
            add_action('admin_head', array($profile, 'my_profile_upload_js'));

            /**
             * Hook Golo_Plugins
             */
            $golo_plugins = new Golo_Plugins();
            add_action('wp_ajax_process_plugin_actions', array($golo_plugins, 'process_plugin_actions'));
            add_action('wp_ajax_nopriv_process_plugin_actions', array($golo_plugins, 'process_plugin_actions'));

            /**
             * Hook Golo_Metaboxes
             */
            $golo_metaboxes = new Golo_Metaboxes();
            add_action('load-post.php', array($golo_metaboxes, 'meta_boxes_setup'));
            add_action('load-post-new.php', array($golo_metaboxes, 'meta_boxes_setup'));

            /**
             * Hook Golo_Location
             */
            $golo_location = new Golo_Location();
            add_action('admin_menu', array($golo_location, 'countries_create_menu'));
            add_filter('admin_init', array($golo_location, 'countries_register_setting'));

            //coupon
            add_action('place-coupon_add_form_fields', array($golo_location, 'add_form_fields_place_coupon'), 10, 1);
            add_action('place-coupon_edit_form_fields', array($golo_location, 'edit_form_fields_place_coupon'), 10, 2);
            add_action('created_place-coupon', array($golo_location, 'save_place_coupon_meta'), 10, 2);
            add_action('edited_place-coupon', array($golo_location, 'update_place_coupon_meta'), 10, 2);
            add_action('admin_head', function() {
                $screen = get_current_screen();
                if ($screen && $screen->taxonomy === 'place-coupon') {
                    echo '<style>
                        .term-description-wrap, .column-description, th.column-description, td.column-description {display:none!important;}
                        .form-field.term-slug-wrap, .column-slug, th.column-slug, td.column-slug {display:none!important;}
                        .form-field.term-parent-wrap, .column-parent, th.column-parent, td.column-parent {display:none!important;}
                    </style>';
                }
            });
            add_action('admin_head', function() {
                $screen = get_current_screen();
                if ($screen && $screen->taxonomy === 'place-coupon') {
                    echo '<style>
                        .row-actions .view, .row-actions span.view {display:none!important;}
                        .column-name .row-actions .view, .column-name .row-actions span.view {display:none!important;}
                    </style>';
                }
            });
            add_filter('manage_edit-place-coupon_columns', array($golo_location, 'add_columns_place_coupon'));
            add_filter('manage_place-coupon_custom_column', array($golo_location, 'add_columns_place_coupon_content'), 10, 3);
            add_filter('manage_edit-place-coupon_sortable_columns', array($golo_location, 'add_columns_place_coupon_sortable'));
            add_filter('manage_edit-place-coupon_columns', function($columns) {
                unset($columns['description']);
                unset($columns['slug']);
                unset($columns['posts']);
                return $columns;
            });
            
            //City
            add_action('place-neighborhood_add_form_fields',  array($golo_location, 'add_form_fields_place_neighborhood'), 10, 2);
            add_action('created_place-neighborhood',  array($golo_location, 'save_place_neighborhood_meta'), 10, 2);
            add_action('place-neighborhood_edit_form_fields',  array($golo_location, 'edit_form_fields_place_neighborhood'), 10, 2);
            add_action('edited_place-neighborhood',  array($golo_location, 'update_place_neighborhood_meta'), 10, 2);
            add_filter('manage_edit-place-neighborhood_columns', array($golo_location,  'add_columns_place_neighborhood'));
            add_filter('manage_place-neighborhood_custom_column', array($golo_location,  'add_columns_place_neighborhood_content'), 10, 3);
            add_filter('manage_edit-place-neighborhood_sortable_columns',  array($golo_location, 'add_columns_place_neighborhood_sortable'));

            $golo_schedule = new Golo_Schedule();
            register_deactivation_hook(__FILE__, array($golo_schedule, 'golo_per_listing_check_expire'));
            add_action('init', array($golo_schedule, 'scheduled_hook'));
            add_action('golo_per_listing_check_expire', array($golo_schedule, 'per_listing_check_expire'));

            if (is_admin()) {
                global $pagenow;

                // place custom columns
                if ($pagenow == 'edit.php' && isset($_GET['post_type']) && esc_attr($_GET['post_type']) == 'place') {
                    add_filter('manage_edit-place_columns', array($golo_admin_place, 'register_custom_column_titles'));
                    add_action('manage_posts_custom_column', array($golo_admin_place, 'display_custom_column'));
                    add_filter('manage_edit-place_sortable_columns', array($golo_admin_place, 'sortable_columns'));
                    add_filter('request', array($golo_admin_place, 'column_orderby'));
                    add_filter('post_row_actions', array($golo_admin_place, 'modify_list_row_actions'), 10, 2);
                }

                // booking custom columns
                if ($pagenow == 'edit.php' && isset($_GET['post_type']) && esc_attr($_GET['post_type']) == 'booking') {
                    add_filter('manage_edit-booking_columns', array($golo_admin_booking, 'register_custom_column_titles'));
                    add_action('manage_posts_custom_column', array($golo_admin_booking, 'display_custom_column'));
                    add_filter('post_row_actions', array($golo_admin_booking, 'modify_list_row_actions'), 10, 2);
                }

                // package custom columns
                if ($pagenow == 'edit.php' && isset($_GET['post_type']) && esc_attr($_GET['post_type']) == 'package') {
                    add_filter('manage_edit-package_columns', array($golo_admin_package, 'register_custom_column_titles'));
                    add_action('manage_posts_custom_column', array($golo_admin_package, 'display_custom_column'));
                    add_filter('post_row_actions', array($golo_admin_package, 'modify_list_row_actions'), 10, 2);
                }

                // agent package custom columns
                if ($pagenow == 'edit.php' && isset($_GET['post_type']) && esc_attr($_GET['post_type']) == 'user_package') {
                    add_filter('manage_edit-user_package_columns', array($golo_user_package_admin, 'register_custom_column_titles'));
                    add_action('manage_posts_custom_column', array($golo_user_package_admin, 'display_custom_column'));
                    add_action('before_delete_post', array($golo_user_package_admin, 'action_delete_post'));
                    add_filter('post_row_actions', array($golo_user_package_admin, 'modify_list_row_actions'), 10, 2);
                }

                // Invoice custom columns
                if ($pagenow == 'edit.php' && isset($_GET['post_type']) && esc_attr($_GET['post_type']) == 'invoice') {
                    add_filter('manage_edit-invoice_columns', array($golo_admin_invoice, 'register_custom_column_titles'));
                    add_action('manage_posts_custom_column', array($golo_admin_invoice, 'display_custom_column'));
                    add_filter('manage_edit-invoice_sortable_columns', array($golo_admin_invoice, 'sortable_columns'));
                    add_filter('request', array($golo_admin_invoice, 'column_orderby'));
                    add_filter('post_row_actions', array($golo_admin_invoice, 'modify_list_row_actions'), 10, 2);
                }
            }
        }

        /**
         * Register all of the hooks related to the public-facing functionality
         */
        private function template_hooks()
        {
            /**
             * Hook Golo_Template_Loader
             */
            $golo_template_loader = new Golo_Template_Loader();
            add_filter('template_include', array($golo_template_loader, 'template_loader'));
            add_action('admin_enqueue_scripts', array($golo_template_loader, 'admin_enqueue'));
            add_action('wp_enqueue_scripts', array($golo_template_loader, 'enqueue_styles'));
            add_action('wp_enqueue_scripts', array($golo_template_loader, 'enqueue_scripts'));

            /**
             * Hook Golo_Ajax
             */
            $golo_ajax = new Golo_Ajax();
            add_action('wp_ajax_golo_pagination_ajax', array($golo_ajax, 'golo_pagination_ajax'));
            add_action('wp_ajax_nopriv_golo_pagination_ajax', array($golo_ajax, 'golo_pagination_ajax'));

            add_action('wp_ajax_golo_place_search_map_ajax', array($golo_ajax, 'golo_place_search_map_ajax'));
            add_action('wp_ajax_nopriv_golo_place_search_map_ajax', array($golo_ajax, 'golo_place_search_map_ajax'));

            add_action('wp_ajax_golo_filter_my_place', array($golo_ajax, 'golo_filter_my_place'));
            add_action('wp_ajax_nopriv_golo_filter_my_place', array($golo_ajax, 'golo_filter_my_place'));

            add_action('wp_ajax_golo_update_profile_ajax', array($golo_ajax, 'golo_update_profile_ajax'));
            add_action('wp_ajax_nopriv_golo_update_profile_ajax', array($golo_ajax, 'golo_update_profile_ajax'));

            add_action('wp_ajax_golo_change_password_ajax', array($golo_ajax, 'golo_change_password_ajax'));
            add_action('wp_ajax_nopriv_golo_change_password_ajax', array($golo_ajax, 'golo_change_password_ajax'));

            // Add to wishlist
            add_action('wp_ajax_golo_add_to_wishlist', array($golo_ajax, 'golo_add_to_wishlist'));
            add_action('wp_ajax_nopriv_golo_add_to_wishlist', array($golo_ajax, 'golo_add_to_wishlist'));

            // Ajax search
            add_action('wp_ajax_golo_search_ajax', array($golo_ajax, 'golo_search_ajax'));
            add_action('wp_ajax_nopriv_golo_search_ajax', array($golo_ajax, 'golo_search_ajax'));

            add_action('wp_ajax_golo_search_location_ajax', array($golo_ajax, 'golo_search_location_ajax'));
            add_action('wp_ajax_nopriv_golo_search_location_ajax', array($golo_ajax, 'golo_search_location_ajax'));

            // Ajax booking form
            add_action('wp_ajax_golo_booking_form_ajax', array($golo_ajax, 'golo_booking_form_ajax'));
            add_action('wp_ajax_nopriv_golo_booking_form_ajax', array($golo_ajax, 'golo_booking_form_ajax'));
            add_action('wp_ajax_golo_claim_form_ajax', array($golo_ajax, 'golo_claim_form_ajax'));
            add_action('wp_ajax_nopriv_golo_claim_form_ajax', array($golo_ajax, 'golo_claim_form_ajax'));

            // Ajax captcha
            add_action('wp_ajax_create_captcha_ajax', array($golo_ajax, 'create_captcha_ajax'));
            add_action('wp_ajax_nopriv_create_captcha_ajax', array($golo_ajax, 'create_captcha_ajax'));

            // Ajax Single Place Open Close
            add_action('wp_ajax_check_place_open_close', array($golo_ajax, 'check_place_open_close'));
            add_action('wp_ajax_nopriv_check_place_open_close', array($golo_ajax, 'check_place_open_close'));

            // Ajax notification
            add_action('wp_ajax_golo_load_unseen_notification_ajax', array($golo_ajax, 'golo_load_unseen_notification_ajax'));
            add_action('wp_ajax_nopriv_golo_load_unseen_notification_ajax', array($golo_ajax, 'golo_load_unseen_notification_ajax'));

            /**
             * Hook Golo_Place
             */
            $golo_place = new Golo_Place();
            add_filter('golo_single_place_before', array($golo_place, 'golo_set_place_view'));

            add_action('wp_ajax_golo_place_img_upload_ajax', array($golo_place, 'place_img_upload_ajax'));
            add_action('wp_ajax_nopriv_golo_place_img_upload_ajax', array($golo_place, 'place_img_upload_ajax'));

            add_action('wp_ajax_remove_place_img_ajax', array($golo_place, 'remove_place_img_ajax'));
            add_action('wp_ajax_nopriv_remove_place_img_ajax', array($golo_place, 'remove_place_img_ajax'));

            add_action('wp_ajax_place_submit_ajax', array($golo_place, 'place_submit_ajax'));
            add_action('wp_ajax_nopriv_place_submit_ajax', array($golo_place, 'place_submit_ajax'));

            add_action('wp_ajax_golo_place_submit_review_ajax', array($golo_place, 'submit_review_ajax'));
            add_action('wp_ajax_nopriv_golo_place_submit_review_ajax', array($golo_place, 'submit_review_ajax'));

            add_filter('golo_place_rating_meta', array($golo_place, 'rating_meta_filter'), 4, 9);

            add_action('wp_ajax_golo_place_submit_reply_ajax', array($golo_place, 'submit_reply_ajax'));
            add_action('wp_ajax_nopriv_golo_place_submit_reply_ajax', array($golo_place, 'submit_reply_ajax'));

            add_action('wp_ajax_golo_contact_agent_ajax', array($golo_place, 'contact_agent_ajax'));
            add_action('wp_ajax_nopriv_golo_contact_agent_ajax', array($golo_place, 'contact_agent_ajax'));

            add_action('wp_ajax_remove_review_img_ajax', array($golo_place, 'remove_review_img_ajax'));
            add_action('wp_ajax_nopriv_remove_review_img_ajax', array($golo_place, 'remove_review_img_ajax'));

            /**
             * Hook Golo_Payment
             */
            $golo_payment = new Golo_Payment();
            add_action('wp_ajax_golo_paypal_payment_per_package_ajax', array($golo_payment, 'paypal_payment_per_package_ajax'));
            add_action('wp_ajax_nopriv_golo_paypal_payment_per_package_ajax', array($golo_payment, 'paypal_payment_per_package_ajax'));

            add_action('wp_ajax_golo_woocommerce_payment_per_package_ajax', array($golo_payment, 'woocommerce_payment_per_package_ajax'));
            add_action('wp_ajax_nopriv_golo_woocommerce_payment_per_package_ajax', array($golo_payment, 'woocommerce_payment_per_package_ajax'));

            add_action('wp_ajax_golo_wire_transfer_per_package_ajax', array($golo_payment, 'wire_transfer_per_package_ajax'));
            add_action('wp_ajax_nopriv_golo_wire_transfer_per_package_ajax', array($golo_payment, 'wire_transfer_per_package_ajax'));

            add_action('wp_ajax_golo_free_package_ajax', array($golo_payment, 'free_package_ajax'));
            add_action('wp_ajax_nopriv_golo_free_package_ajax', array($golo_payment, 'free_package_ajax'));
        }

        /**
         * Get template path
         */
        public function template_path()
        {
            return apply_filters('golo_template_path', 'golo-framework/');
        }
    }
}

if (!function_exists('GOLO')) {
    function GOLO()
    {
        return Golo_Core::instance();
    }
}
// Global for backwards compatibility.
$GLOBALS['Golo_Core'] = GOLO();