class-hustle-multisite.php
61 lines
| 1 | <?php |
| 2 | /** |
| 3 | * File for the Hustle_Multisite class. |
| 4 | * |
| 5 | * @package Hustle |
| 6 | * @since 4.4.7 |
| 7 | */ |
| 8 | |
| 9 | if ( ! class_exists( 'Hustle_Multisite' ) ) : |
| 10 | /** |
| 11 | * Class Hustle_Multisite. |
| 12 | */ |
| 13 | class Hustle_Multisite { |
| 14 | |
| 15 | /** |
| 16 | * Hustle_Multisite site class constructor. |
| 17 | */ |
| 18 | public function __construct() { |
| 19 | |
| 20 | // add action to clone modules to new site. |
| 21 | add_action( 'wp_insert_site', array( $this, 'clone_modules_to_new_site' ), 10, 1 ); |
| 22 | |
| 23 | } |
| 24 | /** |
| 25 | * Clone modules to the new site by ids. |
| 26 | * |
| 27 | * @param WP_Site $new_site - New site object. |
| 28 | * @return void |
| 29 | */ |
| 30 | public function clone_modules_to_new_site( $new_site ) { |
| 31 | if ( class_exists( 'Hustle_Model' ) && ! empty( $new_site->id ) ) { |
| 32 | $module_ids = apply_filters( 'hustle_clone_modules_to_new_site', array() ); |
| 33 | if ( empty( $module_ids ) ) { |
| 34 | return; |
| 35 | } |
| 36 | foreach ( $module_ids as $module_id ) { |
| 37 | $module = Hustle_Model::get_module( $module_id ); |
| 38 | try { |
| 39 | // if module id is invalid go to next module id. |
| 40 | if ( ! $module->id ) { |
| 41 | continue; |
| 42 | } |
| 43 | $data = $module->clone_module(); // clone module data. |
| 44 | switch_to_blog( $new_site->id ); |
| 45 | Hustle_Db::maybe_create_tables(); // Create Hustle custom tables. |
| 46 | $result = $module->save(); // Save the module. |
| 47 | if ( $result && ! is_wp_error( $result ) ) { |
| 48 | |
| 49 | $module->update_module( $data ); |
| 50 | } |
| 51 | restore_current_blog(); |
| 52 | } catch ( Exception $e ) { |
| 53 | error_log( 'There is something wrong with cloning modules to the new site' );// phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_error_log |
| 54 | } |
| 55 | } |
| 56 | } |
| 57 | } |
| 58 | |
| 59 | } |
| 60 | endif; |
| 61 |