upskill-event-manager/wordpress-dev/wordpress/wp-content/plugins/the-events-calendar-community-events/tribe-community-events.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

317 lines
10 KiB
PHP

<?php
/**
* Plugin Name: The Events Calendar: Community
* Plugin URI: https://evnt.is/1acd
* Description: Community is an add-on providing additional functionality to the open source plugin The Events Calendar. Empower users to submit and manage their events on your website. <a href="https://theeventscalendar.com/products/community-events/?utm_campaign=in-app&utm_source=docblock&utm_medium=plugin-community">Check out the full feature list</a>. Need more features? Peruse our selection of <a href="https://theeventscalendar.com/products/?utm_campaign=in-app&utm_source=docblock&utm_medium=plugin-community" target="_blank">plugins</a>.
* Version: 5.0.6
* Requires at least: 6.3
* Requires PHP: 7.4
* Author: The Events Calendar
* Author URI: https://evnt.is/1aor
* Text Domain: tribe-events-community
* Domain Path: /lang/
* License: GPLv2 or later
* License URI: https://www.gnu.org/licenses/gpl-2.0.html
* WC requires at least: 7.1
* WC tested up to: 9.1.2
*/
/*
Copyright 2011-2024 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.
*/
use TEC\Events_Community\Integrations\Events_Community_Tickets_Provider;
define( 'EVENTS_COMMUNITY_DIR', dirname( __FILE__ ) );
define( 'EVENTS_COMMUNITY_FILE', __FILE__ );
// Load the required php min version functions
require_once dirname( EVENTS_COMMUNITY_FILE ) . '/src/functions/php-min-version.php';
require_once dirname( EVENTS_COMMUNITY_FILE ) . '/vendor/autoload.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-community', EVENTS_COMMUNITY_FILE );
/**
* Include the plugin name into the correct place
*
* @since 4.6
*
* @param array $names current list of names
*
* @return array
*/
function tribe_events_community_not_php_version_plugin_name( $names ) {
$names['tribe-events-community'] = esc_html__( 'Community', 'tribe-events-community' );
return $names;
}
add_filter( 'tribe_not_php_version_names', 'tribe_events_community_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;
}
/**
* Registering the Community Plugins.
*
* @since 5.0.0
*
* @return void
*/
function tribe_register_community() {
//remove action if we run this hook through common
remove_action( 'plugins_loaded', 'tribe_register_community', 50 );
// if we do not have a dependency checker then shut down
if ( ! class_exists( 'Tribe__Abstract_Plugin_Register' ) ) {
add_action( 'admin_notices', 'tribe_community_show_fail_message' );
add_action( 'network_admin_notices', 'tribe_community_show_fail_message' );
//prevent loading of PRO
remove_action( 'tribe_common_loaded', 'tribe_community_init' );
return;
}
tribe_community_events_autoloading();
new Tribe__Events__Community__Plugin_Register();
// CE is not properly activated, we shouldn't continue our logic.
if ( ! tribe_check_plugin( 'Tribe__Events__Community__Main' ) ) {
return;
}
// Set up Community Tickets via the Provider.
tribe_register_provider( Events_Community_Tickets_Provider::class );
}
/**
* We have some autoloading collisions with Community Tickets child plugin.
* To avoid this, we will disable CT initialization.
*
* @since 5.0.0
*/
add_action( 'tribe_common_loaded', static function() {
remove_action( 'tribe_common_loaded', 'tribe_register_community_tickets' );
remove_action( 'plugins_loaded', 'tribe_register_community_tickets', 50 );
}, 5 );
add_action( 'tribe_common_loaded', 'tribe_register_community', 5 );
// add action if Event Tickets or the Events Calendar is not active
add_action( 'plugins_loaded', 'tribe_register_community', 50 );
/**
* Instantiate class and set up WordPress actions on Common Loaded
*
* @since 4.6
*/
add_action( 'tribe_common_loaded', 'tribe_community_init' );
function tribe_community_init() {
$events_plugin_check = tribe_community_events_init();
if ( ! $events_plugin_check ) {
// We remove the notice. We will handle this ourselves.
Tribe__Admin__Notices::instance()->remove( 'Tribe__Events__Community__Main' );
}
// if we have the plugin register the dependency check will handle the messages.
if ( class_exists( 'Tribe__Abstract_Plugin_Register' ) ) {
new Tribe__Events__Community__PUE( __FILE__ );
return;
}
add_action( 'admin_notices', 'tribe_community_show_fail_message' );
add_action( 'network_admin_notices', 'tribe_community_show_fail_message' );
}
/**
* Instantiate class and set up WordPress actions on Common Loaded
*
* @since 4.6
* @since 5.0.0 changed logic to check for `Tribe__Main`.
*
* @return bool
*/
function tribe_community_events_init() {
$classes_exist = class_exists( 'Tribe__Main', false ) && class_exists( 'Tribe__Events__Community__Main', false );
$plugins_check = function_exists( 'tribe_check_plugin' ) ?
tribe_check_plugin( 'Tribe__Events__Community__Main' )
: false;
$version_ok = $classes_exist && $plugins_check;
if ( class_exists( 'Tribe__Main' ) && ! is_admin() && ! file_exists( __DIR__ . '/src/Tribe/PUE/Helper.php' ) ) {
tribe_main_pue_helper();
}
if ( ! $version_ok ) {
return false;
}
tribe_community_events_load();
return true;
}
/**
* Load the Community plugin.
*
* @since 5.0.0
*
* @param bool $no_tec_mode Whether to load avoiding The Events Calendar Requirements.
* @return void
*/
function tribe_community_events_load( $no_tec_mode = false ) {
static $loaded = false;
if ( $loaded ) {
// Ensure it loads once no matter where called.
return;
}
$loaded = true;
require_once( EVENTS_COMMUNITY_DIR . '/src/functions/template-tags.php' );
new Tribe__Events__Community__PUE( EVENTS_COMMUNITY_FILE );
tribe_singleton( 'community.main', new Tribe__Events__Community__Main( ! $no_tec_mode ) );
tribe_singleton( 'community.templates', new Tribe__Events__Community__Templates() );
add_action( 'admin_init', [ 'Tribe__Events__Community__Schema', 'init' ] );
}
/**
* Autoloading of Tribe Events Community
*
* @since 3.10
*/
function tribe_community_events_autoloading() {
if ( ! class_exists( 'Tribe__Autoloader' ) ) {
return;
}
$autoloader = Tribe__Autoloader::instance();
$autoloader->register_prefix( 'Tribe__Events__Community__', EVENTS_COMMUNITY_DIR . '/src/Tribe', 'events-community' );
$autoloader->register_prefix( 'Tribe\\Events\\Community\\', EVENTS_COMMUNITY_DIR . '/src/Tribe' );
$autoloader->register_prefix( 'TEC\\Events_Community\\', EVENTS_COMMUNITY_DIR . '/src/Events_Community' );
// deprecated classes are registered in a class to path fashion
foreach ( glob( EVENTS_COMMUNITY_DIR . '/src/deprecated/*.php' ) as $file ) {
$class_name = str_replace( '.php', '', basename( $file ) );
$autoloader->register_class( $class_name, $file );
}
$autoloader->register_autoloader();
}
/**
* Shows notice of missing requirements if Common is unavailable due to TEC not being active.
*
* @since 4.6.3
* @since 4.6.5 Added messaging for the other plugins besides just TEC.
*
* @deprecated 5.0.0
*/
function tribe_events_community_show_fail_message() {
_deprecated_function(
__FUNCTION__,
'4.6.3',
'tribe_community_show_fail_message'
);
tribe_community_show_fail_message();
}
/**
* Shows notice of missing requirements if Common is unavailable due to TEC not being active.
*
* @since 4.6.3
* @since 4.6.5 Added messaging for the other plugins besides just TEC.
*/
function tribe_community_show_fail_message() {
if ( ! current_user_can( 'activate_plugins' ) ) {
return;
}
$mopath = trailingslashit( basename( dirname( __FILE__ ) ) ) . 'lang/';
$text_domain = 'tribe-events-community';
// If we don't have Common classes load the old fashioned way
if ( ! class_exists( 'Tribe__Main' ) ) {
load_plugin_textdomain( $text_domain, false, $mopath );
} else {
// This will load `wp-content/languages/plugins` files first
Tribe__Main::instance()->load_text_domain( $text_domain, $mopath );
}
// Make sure Thickbox is available and consistent appearance regardless of which admin page we're on
wp_enqueue_style( 'plugin-install' );
wp_enqueue_script( 'plugin-install' );
add_thickbox();
$link_placeholder = '<a href="%1s" class="thickbox" title="%2s">%3s</a>';
$tec_link = sprintf(
$link_placeholder,
esc_url( 'plugin-install.php?tab=plugin-information&plugin=the-events-calendar&TB_iframe=true' ),
esc_attr__( 'The Events Calendar', 'tribe-events-community' ),
esc_html__( 'The Events Calendar', 'tribe-events-community' ),
);
$et_link = sprintf(
$link_placeholder,
esc_url( 'plugin-install.php?tab=plugin-information&plugin=event-tickets&TB_iframe=true' ),
esc_attr__( 'Event Tickets', 'tribe-events-community' ),
esc_html__( 'Event Tickets', 'tribe-events-community' ),
);
echo '<div class="error"><p>'
. sprintf(
esc_html__( 'To begin using The Events Calendar: Community, please install the latest version of either %1s or %2s.', 'tribe-events-community' ),
$tec_link,
$et_link
) .
'</p></div>';
}
register_activation_hook( EVENTS_COMMUNITY_FILE, 'tribe_ce_activate' );
function tribe_ce_activate() {
tribe_community_events_autoloading();
if ( ! class_exists( 'Tribe__Events__Community__Main' ) ) {
return;
}
Tribe__Events__Community__Main::activateFlushRewrite();
}
/**
* Instantiate class and get the party started!
*
* @deprecated 4.6
*
* @since 1.0
*/
function Tribe_CE_Load() {
_deprecated_function( __FUNCTION__, '4.6', '' );
return;
}