File "eventer.php"
Full Path: /home/exhehbu/www/wp-content/plugins/eventer/eventer.php
File size: 9.92 KB
MIME-type: text/x-php
Charset: utf-8
<?php
/*
* Plugin Name: Eventer
* Plugin URI: https://eventer.imithemes.com
* Description: WordPress Event Manager Plugin
* Author: imithemes
* Version: 3.8.1.1
* Author URI: http://www.imithemes.com
* Licence: GPLv2
* License URI: http://www.gnu.org/licenses/gpl-2.0.html
* Copyright: (c) 2024 imithemes. All rights reserved
* Text Domain: eventer
* Domain Path: /languages
*/
// Do not allow direct access to this file.
defined('ABSPATH') or die('No script kiddies please!');
define('EVENTER__PLUGIN_PATH', plugin_dir_path(__FILE__));
define('EVENTER__PLUGIN_URL', plugin_dir_url(__FILE__));
/* PARTIALS ATTACHMENTS
================================================== */
require_once EVENTER__PLUGIN_PATH . '/admin/admin_functions.php';
require_once EVENTER__PLUGIN_PATH . '/admin/eventer-type.php';
require_once EVENTER__PLUGIN_PATH . '/admin/settings_page.php';
require_once EVENTER__PLUGIN_PATH . '/admin/meta_fields.php';
if (!is_admin()) {
require_once EVENTER__PLUGIN_PATH . '/front/eventer-shortcodes.php';
}
require_once EVENTER__PLUGIN_PATH . '/front/front_functions.php';
require_once EVENTER__PLUGIN_PATH . '/front/eventer_rest_endpoints.php';
require_once EVENTER__PLUGIN_PATH . '/front/eventer_rest_endpoints_v2.php';
require_once EVENTER__PLUGIN_PATH . '/front/eventer_actions.php';
require_once EVENTER__PLUGIN_PATH . '/front/shortcodes.php';
require_once EVENTER__PLUGIN_PATH . '/front/schema.php';
require_once EVENTER__PLUGIN_PATH . '/front/ipn.php';
require_once EVENTER__PLUGIN_PATH . 'WC/WC.php';
require_once EVENTER__PLUGIN_PATH . '/VC/VC.php';
/* SET LANGUAGE FILE FOLDER
=================================================== */
add_action('plugins_loaded', 'eventer_load_textdomain');
function eventer_load_textdomain()
{
load_plugin_textdomain('eventer', false, basename(dirname(__FILE__)) . '/languages');
$site_lang = substr(get_locale(), 0, 2);
if (function_exists('icl_object_id') && class_exists('SitePress')) {
$site_lang = ICL_LANGUAGE_CODE;
}
define('EVENTER__LANGUAGE_CODE', $site_lang);
$woocommerce_switch = eventer_get_settings('eventer_enable_woocommerce_ticketing');
$woocommerce_layout = eventer_get_settings('eventer_woo_layout');
$eventer_slug = eventer_get_settings('eventer_event_permalink');
$event_slug = (empty($eventer_slug)) ? 'eventer' : $eventer_slug;
$event_link = $_SERVER['REQUEST_URI'];
if ($woocommerce_switch == 'on' && $woocommerce_layout == 'on' && !defined('WOOCOMMERCE_CHECKOUT') && strpos($event_link, $event_slug)) {
define('WOOCOMMERCE_CHECKOUT', true);
}
}
/* GETTING EVENTER SETTING PAGE ID
=================================================== */
function eventer_get_settings($id)
{
$options = get_option('eventer_options');
if (isset($options[$id])) {
return $options[$id];
}
}
register_activation_hook(__FILE__, 'imi_redirect_after_activation');
function imi_redirect_after_activation() {
add_option('redirect_eventer_activation', true);
}
add_action('admin_init', 'imi_activation_redirect');
function imi_activation_redirect() {
if (get_option('redirect_eventer_activation', false)) {
delete_option('redirect_eventer_activation');
exit(wp_redirect(admin_url( 'edit.php?post_type=eventer&page=eventer-license' )));
}
}
add_action('admin_menu', 'eventer_register_license_page');
function eventer_register_license_page() {
add_submenu_page(
'edit.php?post_type=eventer',
__( 'License', 'eventer' ),
__( 'License', 'eventer' ),
'manage_options',
'eventer-license',
'eventer_license_callback'
);
}
function disallowed_eventer_admin_pages()
{
global $pagenow;
if ($pagenow == 'edit.php') {
$domain = preg_replace( '|https?://([^/]+)|', '$1', home_url() );
$localhost = false;
if ( parse_url( home_url() , PHP_URL_PATH ) || 'localhost' === $domain || preg_match( '|^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$|', $domain ) ) {
$localhost = true;
}
if (!$localhost && (!empty($_REQUEST['page']) && $_REQUEST['page'] == 'eventer_settings_options')) {
if (empty(get_option('eventer_authenticate'))) {
wp_safe_redirect(admin_url('edit.php?post_type=eventer&page=eventer-license'));
exit;
}
}
}
}
add_action('admin_init', 'disallowed_eventer_admin_pages');
function eventerProcessAuthentication()
{
$status = $_REQUEST['status'];
$authCode = $_REQUEST['authCode'];
update_option('eventer_authenticate', $status);
update_option('eventer_auth_code', $authCode);
wp_die();
}
add_action('wp_ajax_eventerProcessAuthentication', 'eventerProcessAuthentication');
/**
* Display callback for the submenu page.
*/
function eventer_license_callback() {
?>
<div class="wrap about-wrap">
<h1><?php esc_html_e('License Activation','eventer'); ?></h1>
<?php
$purchaseCode = $purchaseCodeRaw = $showRegisterForm = "";
$showUnRegisterForm = ' style="display: none;"';
if(!empty(get_option('eventer_auth_code'))) {
$purchaseCode = "xxxxxx-xxxx-xxxxxxx-xxxxx".substr(get_option('eventer_auth_code'), -4);
$purchaseCodeRaw = get_option('eventer_auth_code');
$showRegisterForm = ' style="display: none;"';
$showUnRegisterForm = "";
}
?>
<div class="imi-box-content activation_welcome_box" <?php echo ''.$showRegisterForm; ?>>
<p>
<?php echo esc_html__('Thank you for choosing Eventer! Please register it to get access to all the features & settings. The instructions below must be followed exactly to successfully register your purchase.', 'eventer'); ?>
</p>
<div class="eventer-activate"></div>
</div>
<div class="eventer-validation-steps">
<div class="imi-box-content imi-theme-reg-box" <?php echo ''.$showUnRegisterForm; ?>>
<h3 style="color: green; text-align: left">Plugin is active</h3>
</div>
<div class="imi-box-content imi-theme-reg-box" <?php echo ''.$showRegisterForm; ?>>
<h3 style="color: red; text-align: left">Please activate your Eventer purchase code</h3>
</div>
<div class="imi-box-content">
<form class="imi_eventer_val" <?php echo ''.$showRegisterForm; ?>>
<label for="imi_purchase_code"><?php esc_html_e('Purchase Code: ','framework') ?></label>
<input type="text" value="" class="eventer-purchase-code">
<input type="hidden" value="<?php echo urlencode(site_url()); ?>" class="eventer-verified-dm">
<input type="hidden" value="<?php echo esc_url($_SERVER['REMOTE_ADDR']); ?>" class="eventer-server-type">
<input type="submit" value="Register">
<div class="eventer-message"></div>
</form>
<form class="imi_eventer_vals" <?php echo ''.$showUnRegisterForm; ?>>
<label for="imi_purchase_code"><?php esc_html_e('Purchase Code: ','framework') ?></label>
<input type="text" class="eventer-hidden-code" value="<?php echo esc_attr($purchaseCode); ?>">
<input type="hidden" value="<?php echo urlencode(site_url()) ?>" class="eventer-verified-dm">
<input type="hidden" value="<?php echo esc_url($_SERVER['REMOTE_ADDR']); ?>" class="eventer-server-type">
<input type="hidden" value="<?php echo esc_attr($purchaseCodeRaw); ?>" class="eventer-purchase-code">
<input type="submit" value="Unregister">
<p><small>Unregister the purchase code to use it on any other domain/website.</small></p>
<div class="eventer-message"></div>
</form>
<div <?php echo ''.$showRegisterForm; ?>>
<h3><?php _e( 'Instructions for registering your purchase code', 'framework' ); ?></h3>
<p>Whenever you purchase an item via the Codecanyon, they will provide you with a purchase code for each item purchased. The purchase code is used for purchase validation for use of the item and also so that you can access the support.</p>
<ol>
<li>Log in to Codecanyon with your Envato account.</li>
<li>Navigate to the Downloads tab. Your all purchases and items appear in this page.</li>
<li>Locate your item, and click the Download button.</li>
<li>Choose between License Certificate & Purchase Code (PDF) or License Certificate & Purchase Code (Text).</li>
<li>Open the file to find the purchase code.</li>
</ol>
<p><a href="https://www.youtube.com/watch?v=yTScONNFnZ8" target="_blank">See instructions video</a></p>
</div>
</div>
</div>
<?php
}
/* EVENTER DATE DIFFERENCE FUNCTION
=================================================== */
if (!function_exists('eventer_dateDiff')) {
function eventer_dateDiff($start, $end)
{
$start_ts = strtotime($start);
$end_ts = strtotime($end);
$diff = $end_ts - $start_ts;
return floor($diff / 86400);
}
}
// User Roles
function eventer_add_eventer_manager_role()
{
add_role('eventer_manager', esc_html__('Event manager', 'eventer'), array('edit_post' => true, 'edit_published_posts' => true, 'edit_posts' => true, 'publish_posts' => true, 'read_post' => true, 'read' => true, 'delete_post' => true, 'edit_published_posts' => true, 'upload_files' => true, 'edit_product' => true, 'edit_published_products' => true, 'edit_products' => true, 'publish_products' => true, 'read_product' => true, 'delete_product' => true));
}
// Elementor Widget
// Custom Elementor Widgets Registration
function register_eventer_elementor_widget( $widgets_manager ) {
require_once(EVENTER__PLUGIN_PATH . '/elementor/class-eventer.php');
$widgets_manager->register( new \Elementor_Eventer_Widget() );
}
add_action( 'elementor/widgets/register', 'register_eventer_elementor_widget' );
/* PLUGIN ACTIVATION HOOK
=================================================== */
register_activation_hook(__FILE__, 'eventer_add_eventer_manager_role');
add_action('admin_init', array('Eventer_Settings_Options', 'eventer_create_ticket_details_table'));
register_activation_hook(__FILE__, array('Eventer_Settings_Options', 'eventer_flush_rewrite_activate'));
register_activation_hook(__FILE__, array('Eventer_Settings_Options', 'eventer_flush_rewrite_deactivate'));
register_activation_hook(__FILE__, array('Eventer_Settings_Options', 'eventer_store_default_settings'));