Files
hub-insurance/wp-content/plugins/automattic-for-agencies-client/src/class-automattic-for-agencies-client.php
T
2026-07-02 15:54:39 -06:00

165 lines
4.7 KiB
PHP

<?php
/**
* Primary class file for the Automattic For Agencies Client plugin.
*
* @package automattic/automattic-for-agencies-client-plugin
*/
if ( ! defined( 'ABSPATH' ) ) {
exit( 0 );
}
use Automattic\Jetpack\Assets;
use Automattic\Jetpack\Connection\Initial_State as Connection_Initial_State;
use Automattic\Jetpack\Connection\Manager as Connection_Manager;
use Automattic\Jetpack\Connection\Rest_Authentication as Connection_Rest_Authentication;
use Automattic\Jetpack\Plugin_Deactivation\Deactivation_Handler;
use Automattic\Jetpack\Sync\Data_Settings;
/**
* Class Automattic_For_Agencies_Client
*/
class Automattic_For_Agencies_Client {
/**
* Initialize the plugin.
*/
public static function init() {
// Set up the REST authentication hooks.
Connection_Rest_Authentication::init();
// Init Jetpack packages
add_action( 'plugins_loaded', array( static::class, 'init_packages' ), 1 );
// Add submenu.
add_action( 'admin_menu', array( static::class, 'add_submenu' ) );
// Add scripts and styles to our admin page.
add_action( 'load-settings_page_' . AUTOMATTIC_FOR_AGENCIES_CLIENT_SLUG, array( static::class, 'load_scripts_styles' ) );
// Display a modal when trying to deactivate the plugin.
$manager = new Connection_Manager( 'automattic-for-agencies-client' );
if ( $manager->is_connected() ) {
Deactivation_Handler::init( AUTOMATTIC_FOR_AGENCIES_CLIENT_SLUG, __DIR__ . '/admin/deactivation-dialog.php' );
}
}
/**
* Configure what Jetpack packages should get automatically initialized.
*
* @since 0.1.0
*
* @return void
*/
public static function init_packages() {
$config = new Automattic\Jetpack\Config();
// Connection package.
$config->ensure(
'connection',
array(
'slug' => AUTOMATTIC_FOR_AGENCIES_CLIENT_SLUG,
'name' => AUTOMATTIC_FOR_AGENCIES_CLIENT_NAME,
'url_info' => AUTOMATTIC_FOR_AGENCIES_CLIENT_URI,
)
);
// Sync package.
$must_sync_data = Data_Settings::MUST_SYNC_DATA_SETTINGS;
// Add additional modules.
$must_sync_data['jetpack_sync_modules'][] = 'Automattic\\Jetpack\\Sync\\Modules\\Plugins';
$must_sync_data['jetpack_sync_modules'][] = 'Automattic\\Jetpack\\Sync\\Modules\\Users';
$must_sync_data['jetpack_sync_modules'][] = 'Automattic\\Jetpack\\Sync\\Modules\\Meta';
$must_sync_data['jetpack_sync_modules'][] = 'Automattic\\Jetpack\\Sync\\Modules\\Stats';
$config->ensure( 'sync', $must_sync_data );
// Identity crisis package.
$config->ensure( 'identity_crisis' );
}
/**
* Add submenu.
*
* @since 0.1.0
*
* @return void
*/
public static function add_submenu() {
add_submenu_page(
'',
AUTOMATTIC_FOR_AGENCIES_CLIENT_NAME,
__( 'Automattic for Agencies', 'automattic-for-agencies-client' ),
'manage_options',
AUTOMATTIC_FOR_AGENCIES_CLIENT_SLUG,
array( static::class, 'plugin_settings_page' )
);
}
/**
* Set up Admin Settings screen.
*/
public static function load_scripts_styles() {
add_action( 'admin_enqueue_scripts', array( static::class, 'enqueue_admin_scripts' ) );
}
/**
* Enqueue plugin admin scripts and styles.
*/
public static function enqueue_admin_scripts() {
Assets::register_script(
'automattic-for-agencies-client',
'build/index.js',
AUTOMATTIC_FOR_AGENCIES_CLIENT_ROOT_FILE,
array(
'in_footer' => true,
'textdomain' => 'automattic-for-agencies-client',
)
);
Assets::enqueue_script( 'automattic-for-agencies-client' );
// Initial JS state including JP Connection data.
Connection_Initial_State::render_script( 'automattic-for-agencies-client' );
wp_add_inline_script( 'automattic-for-agencies-client', static::render_initial_state(), 'before' );
}
/**
* Render the initial state into a JavaScript variable.
*
* @return string
*/
private static function render_initial_state() {
return 'var automatticForAgenciesClientInitialState=' . wp_json_encode( static::initial_state(), JSON_UNESCAPED_SLASHES | JSON_HEX_TAG | JSON_HEX_AMP ) . ';';
}
/**
* Get the initial state data for hydrating the React UI.
*
* @return array
*/
private static function initial_state() {
return array(
'apiRoot' => esc_url_raw( rest_url() ),
'apiNonce' => wp_create_nonce( 'wp_rest' ),
'registrationNonce' => wp_create_nonce( 'jetpack-registration-nonce' ),
);
}
/**
* Main plugin settings page.
*/
public static function plugin_settings_page() {
?>
<div id="automattic-for-agencies-client-root"></div>
<?php
}
/**
* Removes plugin from the connection manager
* If it's the last plugin using the connection, the site will be disconnected.
*
* @access public
* @static
*/
public static function plugin_deactivation() {
$manager = new Connection_Manager( 'automattic-for-agencies-client' );
$manager->remove_connection();
}
}