-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathextrachill-users.php
More file actions
161 lines (136 loc) · 6.47 KB
/
extrachill-users.php
File metadata and controls
161 lines (136 loc) · 6.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
<?php
/**
* Plugin Name: Extra Chill Users
* Plugin URI: https://extrachill.com
* Description: Single source of truth for user management across the ExtraChill Platform network. Handles authentication, user creation, team members, profile URL resolution, custom avatars, avatar menu, online user tracking, and lifetime memberships.
* Version: 0.7.20
* Author: Chris Huber
* Author URI: https://chubes.net
* Network: true
* Requires Plugins: extrachill-multisite, extrachill-api
* Requires at least: 5.0
* Tested up to: 6.4
* Requires PHP: 7.4
* Text Domain: extrachill-users
* Domain Path: /languages
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
define( 'EXTRACHILL_USERS_VERSION', '0.7.20' );
define( 'EXTRACHILL_USERS_PLUGIN_FILE', __FILE__ );
define( 'EXTRACHILL_USERS_PLUGIN_DIR', plugin_dir_path( __FILE__ ) );
define( 'EXTRACHILL_USERS_PLUGIN_URL', plugin_dir_url( __FILE__ ) );
define( 'EXTRACHILL_USERS_URL', plugin_dir_url( __FILE__ ) );
register_activation_hook( __FILE__, 'extrachill_users_activate' );
register_deactivation_hook( __FILE__, 'extrachill_users_deactivate' );
function extrachill_users_activate() {
require_once EXTRACHILL_USERS_PLUGIN_DIR . 'inc/core/activation.php';
extrachill_users_run_activation();
}
function extrachill_users_deactivate() {
require_once EXTRACHILL_USERS_PLUGIN_DIR . 'inc/core/activation.php';
extrachill_users_run_deactivation();
}
function extrachill_users_enqueue_block_styles() {
global $wp_filesystem;
if ( is_admin() ) {
return;
}
$blocks_to_check = array(
'login-register' => 'extrachill/login-register',
'password-reset' => 'extrachill/password-reset',
);
foreach ( $blocks_to_check as $block_slug => $block_name ) {
if ( has_block( $block_name ) ) {
$style_path = EXTRACHILL_USERS_PLUGIN_DIR . "build/{$block_slug}/style-index.css";
if ( file_exists( $style_path ) ) {
// Get WordPress core block handle (backwards compatible)
$handle = (
function_exists( 'wp_should_load_separate_core_block_assets' ) &&
wp_should_load_separate_core_block_assets()
) ? 'wp-block-library' : 'wp-block-library';
// Read the stylesheet
$styles = $wp_filesystem->get_contents( $style_path );
// Inline to WordPress core handle
wp_add_inline_style( $handle, $styles );
}
}
}
}
add_action( 'wp_enqueue_scripts', 'extrachill_users_enqueue_block_styles' );
/**
* Register Gutenberg blocks.
*/
function extrachill_users_register_blocks() {
$blocks_dir = file_exists( EXTRACHILL_USERS_PLUGIN_DIR . 'build/login-register' )
? 'build'
: 'blocks';
register_block_type( EXTRACHILL_USERS_PLUGIN_DIR . $blocks_dir . '/login-register' );
register_block_type( EXTRACHILL_USERS_PLUGIN_DIR . $blocks_dir . '/password-reset' );
register_block_type( EXTRACHILL_USERS_PLUGIN_DIR . $blocks_dir . '/onboarding' );
}
add_action( 'init', 'extrachill_users_register_blocks' );
add_action( 'plugins_loaded', 'extrachill_users_init' );
// In test context, init immediately since the plugin file is loaded during
// plugins_loaded by the test bootstrap — any add_action on the same hook
// at the same priority would be silently skipped.
if ( defined( 'WP_TESTS_DOMAIN' ) ) {
extrachill_users_init();
}
function extrachill_users_init() {
static $initialized = false;
if ( $initialized ) {
return;
}
$initialized = true;
require_once EXTRACHILL_USERS_PLUGIN_DIR . 'inc/assets.php';
require_once EXTRACHILL_USERS_PLUGIN_DIR . 'inc/admin-access-control.php';
require_once EXTRACHILL_USERS_PLUGIN_DIR . 'inc/core/moderation/bootstrap.php';
require_once EXTRACHILL_USERS_PLUGIN_DIR . 'inc/core/abilities/register.php';
require_once EXTRACHILL_USERS_PLUGIN_DIR . 'inc/core/online-users.php';
require_once EXTRACHILL_USERS_PLUGIN_DIR . 'inc/core/user-creation.php';
require_once EXTRACHILL_USERS_PLUGIN_DIR . 'inc/core/registration-emails.php';
require_once EXTRACHILL_USERS_PLUGIN_DIR . 'inc/auth/login.php';
require_once EXTRACHILL_USERS_PLUGIN_DIR . 'inc/auth/register.php';
require_once EXTRACHILL_USERS_PLUGIN_DIR . 'inc/auth/logout.php';
require_once EXTRACHILL_USERS_PLUGIN_DIR . 'inc/auth/password-reset.php';
require_once EXTRACHILL_USERS_PLUGIN_DIR . 'inc/auth/browser-handoff-handler.php';
require_once EXTRACHILL_USERS_PLUGIN_DIR . 'inc/auth/class-redirect-handler.php';
require_once EXTRACHILL_USERS_PLUGIN_DIR . 'inc/auth-tokens/tokens.php';
require_once EXTRACHILL_USERS_PLUGIN_DIR . 'inc/auth-tokens/service.php';
require_once EXTRACHILL_USERS_PLUGIN_DIR . 'inc/auth-tokens/bearer-auth.php';
require_once EXTRACHILL_USERS_PLUGIN_DIR . 'inc/auth-tokens/browser-handoff-token.php';
require_once EXTRACHILL_USERS_PLUGIN_DIR . 'inc/oauth/google-service.php';
require_once EXTRACHILL_USERS_PLUGIN_DIR . 'inc/oauth/jwt-rs256.php';
require_once EXTRACHILL_USERS_PLUGIN_DIR . 'inc/avatar-display.php';
require_once EXTRACHILL_USERS_PLUGIN_DIR . 'inc/avatar-menu.php';
require_once EXTRACHILL_USERS_PLUGIN_DIR . 'inc/avatar-menu-items.php';
require_once EXTRACHILL_USERS_PLUGIN_DIR . 'inc/artist-profiles.php';
require_once EXTRACHILL_USERS_PLUGIN_DIR . 'inc/team-members.php';
require_once EXTRACHILL_USERS_PLUGIN_DIR . 'inc/badges/user-badges.php';
require_once EXTRACHILL_USERS_PLUGIN_DIR . 'inc/rank-system/rank-tiers.php';
require_once EXTRACHILL_USERS_PLUGIN_DIR . 'inc/onboarding/service.php';
require_once EXTRACHILL_USERS_PLUGIN_DIR . 'inc/lifetime-membership.php';
require_once EXTRACHILL_USERS_PLUGIN_DIR . 'inc/shop-permissions.php';
require_once EXTRACHILL_USERS_PLUGIN_DIR . 'inc/comment-auto-approval.php';
require_once EXTRACHILL_USERS_PLUGIN_DIR . 'inc/footer/online-users-stats.php';
require_once EXTRACHILL_USERS_PLUGIN_DIR . 'inc/concert-tracking/service.php';
require_once EXTRACHILL_USERS_PLUGIN_DIR . 'inc/concert-tracking/buttons.php';
// wp-native-auth bridge: layer EC policy (membership, blocking, Turnstile)
// onto the generic wp-native-auth filter surface when both plugins are active.
if ( defined( 'WP_NATIVE_AUTH_VERSION' ) ) {
require_once EXTRACHILL_USERS_PLUGIN_DIR . 'inc/wp-native-bridge.php';
}
}
add_filter( 'newsletter_form_integrations', 'extrachill_users_newsletter_integration' );
function extrachill_users_newsletter_integration( $integrations ) {
$integrations['registration'] = array(
'label' => __( 'User Registration', 'extrachill-users' ),
'description' => __( 'Newsletter subscription during account registration', 'extrachill-users' ),
'list_id_key' => 'registration_list_id',
'enable_key' => 'enable_registration',
'plugin' => 'extrachill-users',
);
return $integrations;
}