upskill-event-manager/wordpress-dev/wordpress/wp-content/plugins/events-calendar-pro/events-calendar-pro.php
bengizmo d1509b3d60 feat(dev-env): implement backup-based development workflow
This commit introduces a more reliable and consistent approach to setting up
the development environment using backups:

- Add setup-from-backup.sh script for environment setup from existing backups
- Standardize script naming and organization
- Move obsolete scripts to bin/obsolete directory
- Update documentation with new workflow instructions
- Create migration guide for transitioning to new workflow
- Update Memory Bank with workflow improvements

The new workflow provides:
- More reliable environment setup
- Faster setup process
- Offline development capability
- Consistent development environments across team members

Breaking changes:
- setup-dev.sh is replaced by setup-from-backup.sh
- sync-and-setup.sh is replaced by separate scripts
- verify-with-wpcli.sh is no longer used

Migration path is documented in MIGRATION_GUIDE.md
2025-03-26 11:26:18 -03:00

270 lines
8.4 KiB
PHP

<?php
/**
* Plugin Name: The Events Calendar Pro
* Description: The Events Calendar Pro, a premium add-on to the open source The Events Calendar plugin (required), enables recurring events, custom attributes, venue pages, new widgets and a host of other premium features.
* Version: 7.4.2
* Requires at least: 6.5
* Requires PHP: 7.4
* Author: The Events Calendar
* Author URI: https://evnt.is/20
* Text Domain: tribe-events-calendar-pro
* License: GPLv2 or later
* Elementor tested up to: 3.23.1
* Elementor Pro tested up to: 3.23.0
*/
/*
Copyright 2010-2012 by The Events Calendar and the contributors
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
define( 'EVENTS_CALENDAR_PRO_DIR', __DIR__ );
define( 'EVENTS_CALENDAR_PRO_FILE', __FILE__ );
// Load the required php min version functions.
require_once dirname( EVENTS_CALENDAR_PRO_FILE ) . '/src/functions/php-min-version.php';
/**
* Verifies if we need to warn the user about min PHP version and bail to avoid fatals
*/
if ( tribe_is_not_min_php_version() ) {
tribe_not_php_version_textdomain( 'tribe-events-calendar-pro', EVENTS_CALENDAR_PRO_FILE );
/**
* Include the plugin name into the correct place.
*
* @since 4.6
*
* @param array $names current list of names.
*
* @return array
*/
function tribe_events_pro_not_php_version_plugin_name( $names ) {
$names['tribe-events-calendar-pro'] = esc_html__( 'Events Calendar Pro', 'tribe-events-calendar-pro' );
return $names;
}
add_filter( 'tribe_not_php_version_names', 'tribe_events_pro_not_php_version_plugin_name' );
if ( ! has_filter( 'admin_notices', 'tribe_not_php_version_notice' ) ) {
add_action( 'admin_notices', 'tribe_not_php_version_notice' );
}
return false;
}
// Register Plugin.
add_action( 'tribe_common_loaded', 'tribe_register_pro', 5 );
/**
* Attempt to Register Plugin
*
* @since 4.6
*/
function tribe_register_pro() {
// Remove action if we run this hook through common.
remove_action( 'plugins_loaded', 'tribe_register_pro', 50 );
// if we do not have a dependency checker then shut down.
if ( ! class_exists( 'Tribe__Abstract_Plugin_Register', false ) ) {
add_action( 'admin_notices', 'tribe_show_fail_message' );
add_action( 'network_admin_notices', 'tribe_show_fail_message' );
// Prevent loading of Pro.
remove_action( 'tribe_common_loaded', 'tribe_events_calendar_pro_init' );
return;
}
tribe_init_events_pro_autoloading();
new Tribe__Events__Pro__Plugin_Register();
}
add_action( 'tribe_common_loaded', 'tribe_register_pro', 5 );
// add action if Event Tickets or the Events Calendar is not active.
add_action( 'plugins_loaded', 'tribe_register_pro', 50 );
/**
* Instantiate class and set up WordPress actions on Common Loaded
*
* @since 4.6
*/
add_action( 'tribe_common_loaded', 'tribe_events_calendar_pro_init' );
function tribe_events_calendar_pro_init() {
$plugins_check = function_exists( 'tribe_check_plugin' ) ?
tribe_check_plugin( 'Tribe__Events__Pro__Main' )
: false;
$classes_exist = class_exists( 'Tribe__Events__Main', false ) && class_exists( 'Tribe__Events__Pro__Main', false );
$version_ok = $classes_exist && $plugins_check;
if ( class_exists( 'Tribe__Main', false ) && ! is_admin() && ! file_exists( __DIR__ . '/src/Tribe/PUE/Helper.php' ) ) {
tribe_main_pue_helper();
}
if ( apply_filters( 'tribe_ecp_to_run_or_not_to_run', $version_ok ) ) {
new Tribe__Events__Pro__PUE( __FILE__ );
Tribe__Events__Pro__Main::instance();
} else {
/**
* Dummy function to avoid fatal error in edge upgrade case
*
* @return bool
**/
function tribe_is_recurring_event() {
return false;
}
}
if ( ! $version_ok ) {
// if we have the plugin register the dependency check will handle the messages.
if ( class_exists( 'Tribe__Abstract_Plugin_Register', false ) ) {
new Tribe__Events__Pro__PUE( __FILE__ );
return;
}
add_action( 'admin_notices', 'tribe_show_fail_message' );
add_action( 'network_admin_notices', 'tribe_show_fail_message' );
}
}
/**
* Shows message if the plugin can't load due to TEC not being available.
*/
function tribe_show_fail_message() {
if ( ! current_user_can( 'activate_plugins' ) ) {
return;
}
$mopath = trailingslashit( basename( __DIR__ ) ) . 'lang/';
$domain = 'tribe-events-calendar-pro';
// If we don't have Common classes load the old fashioned way.
if ( ! class_exists( 'Tribe__Main', false ) ) {
load_plugin_textdomain( $domain, false, $mopath );
} else {
// This will load `wp-content/languages/plugins` files first.
Tribe__Main::instance()->load_text_domain( $domain, $mopath );
}
$url = 'plugin-install.php?tab=plugin-information&plugin=the-events-calendar&TB_iframe=true';
echo '<div class="error"><p>'
. sprintf(
'%1s <a href="%2s" class="thickbox" title="%3s">%4s</a>.',
esc_html__( 'To begin using Events Calendar Pro, please install the latest version of', 'tribe-events-calendar-pro' ),
esc_url( $url ),
esc_html__( 'The Events Calendar', 'tribe-events-calendar-pro' ),
esc_html__( 'The Events Calendar', 'tribe-events-calendar-pro' )
) .
'</p></div>';
}
/**
* Requires the autoloader class from the main plugin class and sets up
* autoloading.
*/
function tribe_init_events_pro_autoloading() {
if ( ! class_exists( 'Tribe__Autoloader', false ) ) {
return;
}
// Load Composer autoload file only if we've not included this file already.
require_once EVENTS_CALENDAR_PRO_DIR . '/vendor/autoload.php';
$autoloader = Tribe__Autoloader::instance();
$autoloader->register_prefix( 'Tribe__Events__Pro__', __DIR__ . '/src/Tribe', 'events-calendar-pro' );
// deprecated classes are registered in a class to path fashion.
foreach ( glob( __DIR__ . '/src/deprecated/*.php' ) as $file ) {
$class_name = str_replace( '.php', '', basename( $file ) );
$autoloader->register_class( $class_name, $file );
}
$autoloader->register_autoloader();
}
/**
* Register Deactivation.
*/
register_deactivation_hook( __FILE__, 'tribe_events_pro_deactivation' );
function tribe_events_pro_deactivation( $network_deactivating ) {
if ( ! class_exists( 'Tribe__Abstract_Deactivation', false ) ) {
return; // can't do anything since core isn't around.
}
require_once __DIR__ . '/src/Tribe/Main.php';
require_once __DIR__ . '/src/Tribe/Deactivation.php';
Tribe__Events__Pro__Main::deactivate( $network_deactivating );
}
/**
* Register Activation
*/
register_activation_hook( __FILE__, 'tribe_events_pro_activation' );
function tribe_events_pro_activation() {
if ( ! is_network_admin() ) {
// We set with a string to avoid having to include a file here.
set_transient( '_tribe_events_delayed_flush_rewrite_rules', 'yes', 0 );
}
// Activate Custom Tables V1, if defined.
if (
class_exists( 'Tribe__Events__Main', false )
&& class_exists( '\\TEC\\Events_Pro\\Custom_Tables\\V1\\Activation', false )
&& ! ( defined( 'TEC_CUSTOM_TABLES_V1_DISABLED' ) && TEC_CUSTOM_TABLES_V1_DISABLED )
) {
// Register the Custom Tables V1 provider, if defined, to set up the custom tables.
TEC\Events_Pro\Custom_Tables\V1\Activation::activate();
}
}
/**
* Instantiate class and set up WordPress actions.
*
* @deprecated 4.6
*/
function Tribe_ECP_Load() {
_deprecated_function( __FUNCTION__, '4.6', '' );
return;
}
/**
* Add Events Pro to the list of add-ons to check required version.
*
* @deprecated 4.6
*
* @since 4.6
*
* @param array $plugins the current list of plugins.
*
* @return array $plugins the required info
*/
function tribe_init_ecp_addon( $plugins ) {
_deprecated_function( __FUNCTION__, '4.6', '' );
$plugins['Tribe__Events__Pro__Main'] = [
'plugin_name' => 'Events Calendar Pro',
'required_version' => Tribe__Events__Pro__Main::REQUIRED_TEC_VERSION,
'current_version' => Tribe__Events__Pro__Main::VERSION,
'plugin_dir_file' => basename( __DIR__ ) . '/events-calendar-pro.php',
];
return $plugins;
}