/** * Add a Network * * <domain> * : Domain for network * * <path> * : Path for network * * [--site_name=<site_name>] * : Name of new network * * [--clone_network=<clone_network>] * : ID of network to clone * * [--options_to_clone=<options_to_clone>] * : Options to clone to new network * */ public function create($args, $assoc_args) { list($domain, $path) = $args; $defaults = array('site_name' => false, 'clone_network' => false, 'options_to_clone' => false); $assoc_args = wp_parse_args($assoc_args, $defaults); $clone_network = $assoc_args['clone_network']; $options_to_clone = false; if (!empty($clone_network) && !network_exists($clone_network)) { WP_CLI::error(sprintf(__("Clone network %s doesn't exist.", 'wp-multi-network'), $clone_network)); if (!empty($assoc_args['options_to_clone'])) { $options_to_clone = explode(",", $assoc_args['options_to_clone']); } } $network_id = add_network($domain, $path, $assoc_args['site_name'], $clone_network, $options_to_clone); if (is_wp_error($network_id)) { WP_CLI::error($network_id); } WP_CLI::success(sprintf(__('Created network %d.', 'wp-multi-network'), $network_id)); }
/** * Add a Network * * <domain> * : Domain for network * * <path> * : Path for network * * [--site_name=<site_name>] * : Name of new network * * [--clone_network=<clone_network>] * : ID of network to clone * * [--options_to_clone=<options_to_clone>] * : Options to clone to new network * */ public function create($args, $assoc_args) { list($domain, $path) = $args; $assoc_args = wp_parse_args($assoc_args, array('site_name' => false, 'clone_network' => false, 'options_to_clone' => false)); $clone_network = $assoc_args['clone_network']; $options_to_clone = false; if (!empty($clone_network) && !wp_get_network($clone_network)) { WP_CLI::error(sprintf(__("Clone network %s doesn't exist.", 'wp-multi-network'), $clone_network)); if (!empty($assoc_args['options_to_clone'])) { $options_to_clone = explode(",", $assoc_args['options_to_clone']); } } // Add the network $network_id = add_network(array('domain' => $domain, 'path' => $path, 'site_name' => $assoc_args['site_name'], 'user_id' => get_current_user_id(), 'clone_network' => $clone_network, 'options_to_clone' => $options_to_clone)); if (is_wp_error($network_id)) { WP_CLI::error($network_id); } WP_CLI::success(sprintf(__('Created network %d.', 'wp-multi-network'), $network_id)); }
/** * Handle the request to add a new network * * @since 1.7.0 */ private function add_network_handler() { // Options to copy if (isset($_POST['options_to_clone']) && is_array($_POST['options_to_clone'])) { $options_to_clone = array_keys($_POST['options_to_clone']); } else { $options_to_clone = array_keys(network_options_to_copy()); } // Clone from $clone = isset($_POST['clone_network']) ? (int) $_POST['clone_network'] : get_current_site()->id; // Title $network_title = isset($_POST['title']) ? $_POST['title'] : ''; // Domain $network_domain = isset($_POST['domain']) ? $_POST['domain'] : ''; // Path $network_path = isset($_POST['path']) ? $_POST['path'] : ''; // Path $site_name = !empty($_POST['new_site']) ? $_POST['new_site'] : $network_title; // Bail if missing fields if (empty($network_title) || empty($network_domain) || empty($network_path)) { $this->handler_redirect(array('page' => 'add-new-network', 'network_created' => '0')); } // Add the network $result = add_network(array('domain' => $network_domain, 'path' => $network_path, 'site_name' => $site_name, 'user_id' => get_current_user_id(), 'clone_network' => $clone, 'options_to_clone' => $options_to_clone)); // Update title if (!empty($result) && !is_wp_error($result)) { switch_to_network($result); if (!empty($_POST['title'])) { update_site_option('site_name', $_POST['title']); } // Activate WPMN on this new network update_site_option('active_sitewide_plugins', array('wp-multi-network/wpmn-loader.php' => time())); restore_current_network(); // Redirect args $r = array('network_created' => '1'); // Failure } else { $r = array('network_created' => '0'); } // Handle redirect $this->handler_redirect($r); }
/** * Handle the request to add a new network * * @since 2.0.0 */ private function handle_add_network() { // Unslash posted data for sanitization $posted = wp_unslash($_POST); // Options to copy if (isset($posted['options_to_clone']) && is_array($posted['options_to_clone'])) { $options_to_clone = array_keys($posted['options_to_clone']); } else { $options_to_clone = array_keys(network_options_to_copy()); } // Clone from $clone = isset($posted['clone_network']) ? (int) $posted['clone_network'] : get_current_site()->id; // Title $network_title = isset($posted['title']) ? strip_tags($posted['title']) : ''; // Domain $network_domain = isset($posted['domain']) ? str_replace(' ', '', strtolower($posted['domain'])) : ''; // Path $network_path = isset($posted['path']) ? str_replace(' ', '', strtolower($posted['path'])) : ''; // Site name $site_name = !empty($posted['new_site']) ? strip_tags($posted['new_site']) : $network_title; // Bail if missing fields if (empty($network_title) || empty($network_domain) || empty($network_path)) { $this->handle_redirect(array('page' => 'add-new-network', 'network_created' => '0')); } // Add the network $result = add_network(array('domain' => $network_domain, 'path' => $network_path, 'site_name' => $site_name, 'user_id' => get_current_user_id(), 'clone_network' => $clone, 'options_to_clone' => $options_to_clone)); // Update title if (!empty($result) && !is_wp_error($result)) { // Maybe update the site name if (!empty($posted['title'])) { update_network_option($result, 'site_name', $posted['title']); } // Activate WPMN on this new network update_network_option($result, 'active_sitewide_plugins', array('wp-multi-network/wpmn-loader.php' => time())); // Redirect args $r = array('network_created' => '1'); // Failure } else { $r = array('network_created' => '0'); } // Handle redirect $this->handle_redirect($r); }
/** * */ public function add_network_handler() { global $current_site; if (isset($_POST['add']) && isset($_POST['domain']) && isset($_POST['path'])) { /** grab custom options to clone if set */ if (isset($_POST['options_to_clone']) && is_array($_POST['options_to_clone'])) { $options_to_clone = array_keys($_POST['options_to_clone']); } else { $options_to_clone = array_keys(network_options_to_copy()); } $result = add_network($_POST['domain'], $_POST['path'], isset($_POST['newSite']) ? $_POST['newSite'] : esc_attr__('New Network Created', 'wp-multi-network'), isset($_POST['cloneNetwork']) ? $_POST['cloneNetwork'] : $current_site->id, $options_to_clone); if ($result && !is_wp_error($result)) { if (!empty($_POST['name'])) { switch_to_network($result); add_site_option('site_name', $_POST['name']); add_site_option('active_sitewide_plugins', array('wp-multi-network/wpmn-loader.php' => time())); restore_current_network(); } $_GET['added'] = 'yes'; $_GET['action'] = 'saved'; } else { foreach ($result->errors as $i => $error) { echo "<h2>Error: " . $error[0] . "</h2>"; } } } }