- WordPress core y plugins - Tema Twenty Twenty-Four configurado - Plugin allow-unfiltered-html.php simplificado - .gitignore configurado para excluir wp-config.php y uploads 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
191 lines
3.9 KiB
PHP
Executable File
191 lines
3.9 KiB
PHP
Executable File
<?php
|
|
/**
|
|
* The class provides plugin installation routines.
|
|
*
|
|
* @package AdvancedAds\Pro
|
|
* @author Advanced Ads <info@wpadvancedads.com>
|
|
* @since 2.26.0
|
|
*/
|
|
|
|
namespace AdvancedAds\Pro\Installation;
|
|
|
|
use Advanced_Ads_Pro;
|
|
|
|
defined( 'ABSPATH' ) || exit;
|
|
|
|
/**
|
|
* Install.
|
|
*/
|
|
class Install {
|
|
|
|
/**
|
|
* Runs this initializer.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function initialize(): void {
|
|
if ( null !== AAP_FILE ) {
|
|
register_activation_hook( AAP_FILE, [ $this, 'activation' ] );
|
|
register_deactivation_hook( AAP_FILE, [ $this, 'deactivation' ] );
|
|
|
|
add_action( 'wp_initialize_site', [ $this, 'initialize_site' ] );
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Activation routine.
|
|
*
|
|
* @param bool $network_wide Whether the plugin is being activated network-wide.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function activation( $network_wide = false ): void {
|
|
register_uninstall_hook( AAP_FILE, [ static::class, 'uninstall' ] );
|
|
|
|
if ( ! is_multisite() || ! $network_wide ) {
|
|
$this->activate();
|
|
return;
|
|
}
|
|
|
|
$this->network_activate_deactivate( 'activate' );
|
|
}
|
|
|
|
/**
|
|
* Deactivation routine.
|
|
*
|
|
* @param bool $network_wide Whether the plugin is being activated network-wide.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function deactivation( $network_wide = false ): void {
|
|
if ( ! is_multisite() || ! $network_wide ) {
|
|
$this->deactivate();
|
|
return;
|
|
}
|
|
|
|
$this->network_activate_deactivate( 'deactivate' );
|
|
}
|
|
|
|
/**
|
|
* Fired when a new site is activated with a WPMU environment.
|
|
*
|
|
* @param WP_Site $site The new site's object.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function initialize_site( $site ): void {
|
|
switch_to_blog( $site->blog_id );
|
|
$this->activate();
|
|
restore_current_blog();
|
|
}
|
|
|
|
/**
|
|
* Run network-wide activation/deactivation of the plugin.
|
|
*
|
|
* @param string $action Action to perform.
|
|
*
|
|
* @return void
|
|
*/
|
|
private function network_activate_deactivate( $action ): void {
|
|
global $wpdb;
|
|
|
|
$site_ids = self::get_sites();
|
|
|
|
if ( empty( $site_ids ) ) {
|
|
return;
|
|
}
|
|
|
|
foreach ( $site_ids as $site_id ) {
|
|
switch_to_blog( $site_id );
|
|
$this->$action();
|
|
restore_current_blog();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Get network sites
|
|
*
|
|
* @return array|int
|
|
*/
|
|
public static function get_sites() {
|
|
global $wpdb;
|
|
|
|
return get_sites(
|
|
[
|
|
'archived' => 0,
|
|
'spam' => 0,
|
|
'deleted' => 0,
|
|
'network_id' => $wpdb->siteid,
|
|
'fields' => 'ids',
|
|
]
|
|
);
|
|
}
|
|
|
|
/**
|
|
* Plugin activation callback.
|
|
*
|
|
* @return void
|
|
*/
|
|
protected function activate(): void {
|
|
add_role(
|
|
'advanced_ads_admin',
|
|
__( 'Ad Admin', 'advanced-ads-pro' ),
|
|
[
|
|
'read' => true,
|
|
'advanced_ads_manage_options' => true,
|
|
'advanced_ads_see_interface' => true,
|
|
'advanced_ads_edit_ads' => true,
|
|
'advanced_ads_manage_placements' => true,
|
|
'advanced_ads_place_ads' => true,
|
|
'upload_files' => true,
|
|
'unfiltered_html' => true,
|
|
]
|
|
);
|
|
add_role(
|
|
'advanced_ads_manager',
|
|
__( 'Ad Manager', 'advanced-ads-pro' ),
|
|
[
|
|
'read' => true,
|
|
'advanced_ads_see_interface' => true,
|
|
'advanced_ads_edit_ads' => true,
|
|
'advanced_ads_manage_placements' => true,
|
|
'advanced_ads_place_ads' => true,
|
|
'upload_files' => true,
|
|
'unfiltered_html' => true,
|
|
]
|
|
);
|
|
add_role(
|
|
'advanced_ads_user',
|
|
__( 'Ad User', 'advanced-ads-pro' ),
|
|
[
|
|
'read' => true,
|
|
'advanced_ads_place_ads' => true,
|
|
]
|
|
);
|
|
|
|
Advanced_Ads_Pro::get_instance()
|
|
->enable_placement_test_emails();
|
|
}
|
|
|
|
/**
|
|
* Plugin deactivation callback.
|
|
*
|
|
* @return void
|
|
*/
|
|
protected function deactivate(): void {
|
|
remove_role( 'advanced_ads_admin' );
|
|
remove_role( 'advanced_ads_manager' );
|
|
remove_role( 'advanced_ads_user' );
|
|
|
|
Advanced_Ads_Pro::get_instance()
|
|
->disable_placement_test_emails();
|
|
}
|
|
|
|
/**
|
|
* Plugin uninstall callback.
|
|
*
|
|
* @return void
|
|
*/
|
|
public static function uninstall(): void {}
|
|
}
|