コード例 #1
0
 public function test_move_site()
 {
     // Grab some example data
     $site_id = $this->factory->blog->create();
     $site = $this->factory->blog->get_object_by_id($site_id);
     $other_network_id = $this->factory->network->create();
     $other_network = $this->factory->network->get_object_by_id($other_network_id);
     // Check we start out in the main network
     $this->assertEquals(1, $site->site_id, 'Site should be created in main network by default');
     // Move the site to the other network
     $result = move_site($site_id, $other_network_id);
     $this->assertNull($result, 'Site should be moved without error');
     // Reload site data
     $site = $this->factory->blog->get_object_by_id($site_id);
     $this->assertEquals($other_network_id, $site->site_id, 'Site should be in other network after move');
     // Move it back
     $result = move_site($site_id, 1);
     $this->assertNull($result, 'Site should be moved without error');
     // Reload site data again
     $site = $this->factory->blog->get_object_by_id($site_id);
     $this->assertEquals(1, $site->site_id, 'Site should be back in main network');
 }
コード例 #2
0
/**
 * Delete a network and all its blogs
 *
 * @param integer id ID of network to delete
 * @param boolean $delete_blogs Flag to permit blog deletion - default setting
 *                               of false will prevent deletion of occupied networks
 */
function delete_network($id, $delete_blogs = false)
{
    global $wpdb;
    $id = (int) $id;
    // Ensure we have a valid network id
    $network = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->site} WHERE id = %d", $id));
    // Bail if network does not exist
    if (empty($network)) {
        return new WP_Error('network_not_exist', __('Network does not exist.', 'wp-multi-network'));
    }
    // ensure there are no blogs attached to this network */
    $sites = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$wpdb->blogs} WHERE site_id = %d", $id));
    // Bail if network has blogs and blog deletion is off
    if (false == $delete_blogs && !empty($sites)) {
        return new WP_Error('network_not_empty', __('Cannot delete network with sites.', 'wp-multi-network'));
    }
    // Are we rescuing orphans or deleting them?
    if (true == $delete_blogs && !empty($sites)) {
        foreach ($sites as $site) {
            if (RESCUE_ORPHANED_BLOGS && ENABLE_NETWORK_ZERO) {
                move_site($site->blog_id, 0);
            } else {
                wpmu_delete_blog($site->blog_id, true);
            }
        }
    }
    // Delete from sites table
    $wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->site} WHERE id = %d", $id));
    // Delete from site meta table
    $wpdb->query($wpdb->prepare($query = "DELETE FROM {$wpdb->sitemeta} WHERE site_id = %d", $id));
    do_action('delete_network', $network);
}
コード例 #3
0
/**
 * Delete a network and all its blogs
 *
 * @param integer id ID of network to delete
 * @param boolean $delete_blogs Flag to permit blog deletion - default setting
 *                               of false will prevent deletion of occupied networks
 */
function delete_network($id, $delete_blogs = false)
{
    global $wpdb;
    // Get network
    $network = wp_get_network($id);
    // Bail if network does not exist
    if (empty($network)) {
        return new WP_Error('network_not_exist', __('Network does not exist.', 'wp-multi-network'));
    }
    // ensure there are no blogs attached to this network */
    $sql = "SELECT * FROM {$wpdb->blogs} WHERE site_id = %d";
    $prep = $wpdb->prepare($sql, $network->id);
    $sites = $wpdb->get_results($prep);
    // Bail if network has blogs and blog deletion is off
    if (empty($delete_blogs) && !empty($sites)) {
        return new WP_Error('network_not_empty', __('Cannot delete network with sites.', 'wp-multi-network'));
    }
    // Are we rescuing orphans or deleting them?
    if (true == $delete_blogs && !empty($sites)) {
        foreach ($sites as $site) {
            if (RESCUE_ORPHANED_BLOGS) {
                move_site($site->blog_id, 0);
            } else {
                wpmu_delete_blog($site->blog_id, true);
            }
        }
    }
    // Delete from sites table
    $sql = "DELETE FROM {$wpdb->site} WHERE id = %d";
    $prep = $wpdb->prepare($sql, $network->id);
    $wpdb->query($prep);
    // Delete from site meta table
    $sql = "DELETE FROM {$wpdb->sitemeta} WHERE site_id = %d";
    $prep = $wpdb->prepare($sql, $network->id);
    $wpdb->query($prep);
    // Network deleted
    do_action('delete_network', $network);
}
コード例 #4
0
ファイル: index.php プロジェクト: Tom-Byrne/gocdb
function Draw_Page($Page_Type)
{
    // Read only pages - these pages don't strictly require user authentication.
    // Therefore, to enable permit-all page viewing, comment out the call
    // to rejectIfNotAuthenticated() in the relevant case block. Note, some of
    // these pages will replace sensitive info such as telephone/email with
    // the string 'PROTECTED'
    // ************************************************************************
    switch ($Page_Type) {
        case "default":
            //rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/start_page.php';
            startPage();
            break;
        case "View_Service_Endpoint":
            //rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/service/view_service_endpoint.php';
            view_endpoint();
            break;
        case "Service_Groups":
            //rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/service_group/view_all.php';
            showAllServiceGroups();
            break;
        case "Service_Group":
            //rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/service_group/view_sgroup.php';
            showServiceGroup();
            break;
        case "Site":
            //rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/site/view_site.php';
            view_site();
            break;
        case "NGI":
            //rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/ngi/view_ngi.php';
            view_ngi();
            break;
        case "Service":
            //rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/service/view_service.php';
            view_se();
            break;
        case "Services":
            //rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/service/view_all.php';
            drawSEs();
            break;
        case "NGIs":
            //rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/ngi/view_ngis.php';
            view_ngis();
            break;
        case "Sites":
            //rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/site/view_all.php';
            showAllSites();
            break;
        case "Projects":
            //rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/project/view_all.php';
            show_all_projects();
            break;
        case "Project":
            //rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/project/view_project.php';
            show_project();
            break;
        case "Scope_Help":
            //rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/scope_help.php';
            show_help();
            break;
        case "Site_Geo_xml":
            //rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/sitesForGoogleMapXML.php';
            show_xml();
            break;
        case "Error_Redirect":
            //rejectIfNotAuthenticated();
            show_view('error.php', $_REQUEST['error']);
            break;
        case "Static_HTML":
            //rejectIfNotAuthenticated();
            Draw_Static_HTML();
            break;
        case "Search":
            //rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/search.php';
            search();
            break;
            // CrUD Pages - These pages MUST have authentication enabled so
            // the calls to rejectIfNotAuthenticated() must be used.
            // *********************************************************************
        // CrUD Pages - These pages MUST have authentication enabled so
        // the calls to rejectIfNotAuthenticated() must be used.
        // *********************************************************************
        case "Revoke_Role":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/political_role/revoke_request.php';
            view_revoke_request();
            break;
        case "Accept_Role_Request":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/political_role/accept_request.php';
            view_accept_request();
            break;
        case "Deny_Role_Request":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/political_role/deny_request.php';
            view_deny_request();
            break;
        case "Role_Requests":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/political_role/view_requests.php';
            view_requests();
            break;
        case "Request_Role":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/political_role/request_role.php';
            request_role();
            break;
        case "Edit_Site":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/site/edit_site.php';
            edit_site();
            break;
        case "Edit_Service":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/service/edit_service.php';
            edit_service();
            break;
        case "SE_Downtimes":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/service/se_downtimes.php';
            se_downtimes();
            break;
        case "Add_Service":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/service/add_service.php';
            add_service();
            break;
        case "Add_Service_Endpoint":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/service/add_service_endpoint.php';
            add_service_endpoint();
            break;
        case "Delete_Service":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/service/delete_service.php';
            delete();
            break;
        case "Edit_User":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/user/edit_user.php';
            edit_user();
            break;
        case "User":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/user/view_user.php';
            view_user();
            break;
        case "Downtime":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/downtime/view_downtime.php';
            view();
            break;
        case "My_Sites":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/my_sites.php';
            my_sites();
            break;
        case "Edit_NGI":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/ngi/edit_ngi.php';
            edit_ngi();
            break;
        case "Edit_Service_Group":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/service_group/edit_service_group.php';
            edit_service_group();
            break;
        case "Add_Service_Group_SEs":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/service_group/add_ses.php';
            add_ses();
            break;
        case "Search_SEs":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/service_group/search_ses.php';
            search_ses();
            break;
        case "Remove_Service_Group_SEs":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/service_group/remove_ses.php';
            remove_ses();
            break;
        case "Add_Site":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/site/add_site.php';
            add_site();
            break;
        case "SGroup_Downtimes":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/service_group/view_sgroup_downtimes.php';
            view_sgroup_downtimes();
            break;
        case "Add_Service_Group":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/service_group/add_service_group.php';
            add_service_group();
            break;
        case "Site_Downtimes":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/site/site_downtimes.php';
            site_downtimes();
            break;
        case "Register":
            rejectIfNotAuthenticated('Access denied - ' . 'you need to be pre-authenticated before you can register a new account');
            require_once __DIR__ . '/controllers/user/register.php';
            register();
            break;
        case "Add_Downtime":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/downtime/add_downtime.php';
            //require_once __DIR__.'/controllers/downtime/add_downtime_old.php';
            add();
            break;
        case "Edit_Downtime":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/downtime/edit_downtime.php';
            //require_once __DIR__.'/controllers/downtime/edit_downtime_old.php';
            edit();
            break;
        case "End_Downtime":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/downtime/end_downtime.php';
            endDt();
            break;
        case "Downtime_view_endpoint_tree":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/downtime/view_endpoint_tree.php';
            getServiceandEndpointList();
            break;
        case "Edit_Downtime_view_endpoint_tree":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/downtime/view_endpoint_tree.php';
            editDowntimePopulateEndpointTree();
            break;
        case "Downtime_View_Services":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/downtime/view_services.php';
            getSitesServices();
            break;
        case "Delete_Site":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/site/delete_site.php';
            delete();
            break;
        case "Delete_Downtime":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/downtime/delete_downtime.php';
            delete();
            break;
        case "Downtimes_Overview":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/downtime/downtimes_overview.php';
            view();
            break;
        case "Delete_Service_Group":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/service_group/delete_service_group.php';
            delete();
            break;
        case "Delete_User":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/user/delete_user.php';
            delete();
            break;
        case "Edit_Certification_Status":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/site/edit_cert_status.php';
            edit();
            break;
        case "Retrieve_Account":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/user/retrieve_account.php';
            retrieve();
            break;
        case "Remove_Project_NGIs":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/project/remove_ngis.php';
            remove_ngis_project();
            break;
        case "Add_Project_NGIs":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/project/add_ngis.php';
            add_ngis_to_project();
            break;
        case "Edit_Project":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/project/edit_project.php';
            edit_project();
            break;
        case "Delete_Project":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/project/delete_project.php';
            delete_project();
            break;
        case "Admin_Move_Site":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/admin/move_site.php';
            move_site();
            break;
        case "Admin_Move_SEP":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/admin/move_service_end_point.php';
            move_service_end_point();
            break;
        case "Admin_Service_Types":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/admin/view_service_types.php';
            show_all();
            break;
        case "Admin_Service_Type":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/admin/view_service_type.php';
            view_service_type();
            break;
        case "Admin_Edit_Service_Type":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/admin/edit_service_type.php';
            edit_type();
            break;
        case "Admin_Add_Service_Type":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/admin/add_service_type.php';
            add_type();
            break;
        case "Admin_Delete_Service_Type":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/admin/delete_service_type.php';
            delete_service_type();
            break;
        case "Admin_Delete_Service_Type_Denied":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/admin/delete_service_type_denied.php';
            deny_delete_type();
            break;
        case "Admin_Add_NGI":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/admin/add_ngi.php';
            add_ngi();
            break;
        case "Admin_Users":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/admin/users.php';
            show_users();
            break;
        case "Admin_Edit_User_DN":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/admin/edit_user_dn.php';
            edit_dn();
            break;
            //        case "Admin_Change_User_Admin_Status":
            //            rejectIfNotAuthenticated();
            //            require_once __DIR__.'/controllers/admin/edit_user_isadmin.php';
            //            make_admin();
            //            break;
        //        case "Admin_Change_User_Admin_Status":
        //            rejectIfNotAuthenticated();
        //            require_once __DIR__.'/controllers/admin/edit_user_isadmin.php';
        //            make_admin();
        //            break;
        case "Admin_Add_Project":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/admin/add_project.php';
            add_project();
            break;
        case "Admin_Scopes":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/admin/scopes.php';
            show_scopes();
            break;
        case "Admin_Remove_Scope":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/admin/delete_scope.php';
            remove_scope();
            break;
        case "Admin_Add_Scope":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/admin/add_scope.php';
            add_scope();
            break;
        case "Admin_Scope":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/admin/scope.php';
            view_scope();
            break;
        case "Admin_Edit_Scope":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/admin/edit_scope.php';
            edit_scope();
            break;
        case "Admin_Delete_NGI":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/admin/delete_ngi.php';
            delete_ngi();
            break;
        case "User_Validate_DN_Change":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/user/retrieve_account_user_validate.php';
            validate_dn_change();
            break;
        case "Add_Site_Property":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/site/add_site_property.php';
            add_site_property();
            break;
        case "Add_Service_Property":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/service/add_service_property.php';
            add_service_property();
            break;
        case "Add_Endpoint_Property":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/service/add_endpoint_property.php';
            add_endpoint_property();
            break;
        case "Delete_Site_Property":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/site/delete_site_property.php';
            delete();
            break;
        case "Delete_Service_Property":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/service/delete_service_property.php';
            delete();
            break;
        case "Delete_Endpoint_Property":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/service/delete_endpoint_property.php';
            delete();
            break;
        case "Edit_Site_Property":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/site/edit_site_property.php';
            edit_property();
            break;
        case "Edit_Service_Property":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/service/edit_service_property.php';
            edit_property();
            break;
        case "Edit_Endpoint_Property":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/service/edit_endpoint_property.php';
            edit_property();
            break;
        case "Add_Service_Group_Property":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/service_group/add_service_group_property.php';
            add_service_group_property();
            break;
        case "Edit_Service_Group_Property":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/service_group/edit_service_group_property.php';
            edit_property();
            break;
        case "Delete_Service_Group_Property":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/service_group/delete_service_group_property.php';
            delete();
            break;
        case "Delete_Service_Endpoint":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/service/delete_service_endpoint.php';
            delete_endpoint();
            break;
        case "Edit_Service_Endpoint":
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/service/edit_service_endpoint.php';
            edit_endpoint();
            break;
        default:
            // require auth by default
            rejectIfNotAuthenticated();
            require_once __DIR__ . '/controllers/start_page.php';
            startPage();
            break;
    }
}
コード例 #5
0
 /**
  * Handle the request to reassign sites
  *
  * @since 1.7.0
  *
  * @global object $wpdb
  */
 private function reassign_sites_handler()
 {
     global $wpdb;
     // Coming in
     $to = isset($_POST['to']) ? $_POST['to'] : array();
     // Orphaning out
     $from = isset($_POST['from']) ? $_POST['from'] : array();
     // Bail early if no movement
     if (empty($to) && empty($from)) {
         return;
     }
     // Cast the network ID
     $network_id = (int) $_GET['id'];
     // Query for sites
     $sql = "SELECT * FROM {$wpdb->blogs}";
     $prep = $wpdb->prepare($sql, (int) $_GET['id']);
     $sites = $wpdb->get_results($prep);
     // Loop through and move sites
     foreach ($sites as $site) {
         // Skip the main site of this network
         if (is_main_site_for_network($site->blog_id, $site->site_id)) {
             continue;
         }
         // Coming in
         if (in_array($site->blog_id, $to)) {
             move_site($site->blog_id, $network_id);
             // Orphaning out
         } elseif (in_array($site->blog_id, $from)) {
             move_site($site->blog_id, 0);
         }
     }
 }
コード例 #6
0
 /**
  * Move to blog to another network
  *
  * <site_id>
  * : Site id to move
  *
  * <new_network_id>
  * : New network id
  *
  * @subcommand move-site
  */
 public function move_site($args, $assoc_args)
 {
     list($site_id, $new_network_id) = $args;
     $network_id = move_site($site_id, $new_network_id);
     if (is_wp_error($network_id)) {
         WP_CLI::error($network_id);
     }
     WP_CLI::success(sprintf(__('Blog %d has moved to network %d.', 'wp-multi-network'), $site_id, $new_network_id));
 }
コード例 #7
0
 /**
  * Handle the request to reassign sites
  *
  * @since 2.0.0
  */
 private function handle_reassign_sites()
 {
     // Coming in
     $to = isset($_POST['to']) ? array_map('absint', (array) $_POST['to']) : array();
     // Orphaning out
     $from = isset($_POST['from']) ? array_map('absint', (array) $_POST['from']) : array();
     // Bail early if no movement
     if (empty($to) && empty($from)) {
         return;
     }
     // Cast the network ID
     $network_id = (int) $_GET['id'];
     // Setup sites arrays
     $moving_to = $moving_from = array();
     // Query for sites in this network
     $sites_list = get_sites(array('network_id' => $network_id, 'fields' => 'ids'));
     // Moving out from current network
     foreach ($from as $site_id) {
         if (in_array($site_id, $sites_list, true)) {
             $moving_from[] = $site_id;
         }
     }
     // Moving into current network
     foreach ($to as $site_id) {
         if (!in_array($site_id, $sites_list, true)) {
             $moving_to[] = $site_id;
         }
     }
     // Merge into one array
     $moving = array_filter(array_merge($moving_to, $moving_from));
     // Loop through and move sites
     foreach ($moving as $site_id) {
         // Skip the main site of this network
         if (is_main_site_for_network($site_id)) {
             continue;
         }
         // Coming in
         if (in_array($site_id, $to) && !in_array($site_id, $sites_list, true)) {
             move_site($site_id, $network_id);
             // Orphaning out
         } elseif (in_array($site_id, $from, true)) {
             move_site($site_id, 0);
         }
     }
 }
コード例 #8
0
    public function reassign_site_page()
    {
        global $wpdb;
        if (isset($_POST['reassign']) && isset($_GET['id'])) {
            /** Javascript enabled for client - check the 'to' box */
            if (isset($_POST['jsEnabled'])) {
                if (!isset($_POST['to'])) {
                    die(esc_html__('No blogs selected.', 'wp-multi-network'));
                }
                $sites = $_POST['to'];
                /** Javascript disabled for client - check the 'from' box */
            } else {
                if (!isset($_POST['from'])) {
                    die(esc_html_e('No blogs selected.', 'wp-multi-network'));
                }
                $sites = $_POST['from'];
            }
            $current_blogs = $wpdb->get_results($wpdb->prepare("SELECT * FROM {$wpdb->blogs} WHERE site_id = %d", (int) $_GET['id']));
            foreach ($sites as $site) {
                move_site($site, (int) $_GET['id']);
            }
            /* true sync - move any unlisted blogs to 'zero' network */
            if (ENABLE_NETWORK_ZERO) {
                foreach ($current_blogs as $current_blog) {
                    if (!in_array($current_blog->blog_id, $sites)) {
                        move_site($current_blog->blog_id, 0);
                    }
                }
            }
            $_GET['moved'] = 'yes';
            $_GET['action'] = 'saved';
        } else {
            // get network by id
            $network = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$wpdb->site} WHERE id = %d", (int) $_GET['id']));
            if (empty($network)) {
                die(esc_html__('Invalid network id.', 'wp-multi-network'));
            }
            $sites = $wpdb->get_results("SELECT * FROM {$wpdb->blogs}");
            if (empty($sites)) {
                die(esc_html__('Site table inaccessible.', 'wp-multi-network'));
            }
            foreach ($sites as $key => $site) {
                $table_name = $wpdb->get_blog_prefix($site->blog_id) . "options";
                $site_name = $wpdb->get_row($wpdb->prepare("SELECT * FROM {$table_name} WHERE option_name = %s", 'blogname'));
                if (empty($site_name)) {
                    die(esc_html__('Invalid blog.', 'wp-multi-network'));
                }
                $sites[$key]->name = stripslashes($site_name->option_value);
            }
            ?>
			<div class="wrap">
				<form method="post" id="site-assign-form" action="<?php 
            echo $_SERVER['REQUEST_URI'];
            ?>
">
					<?php 
            screen_icon('ms-admin');
            ?>
					<h2><?php 
            esc_html_e('Networks', 'wp-multi-network');
            ?>
</h2>
					<h3><?php 
            esc_html_e('Assign Sites to', 'wp-multi-network');
            ?>
: http://<?php 
            echo esc_html($network->domain . $network->path);
            ?>
</h3>
					<noscript>
						<div id="message" class="updated"><p><?php 
            esc_html_e('Select the blogs you want to assign to this network from the column at left, and click "Update Assignments."', 'wp-multi-network');
            ?>
</p></div>
					</noscript>
					<table class="widefat">
						<thead>
							<tr>
								<th><?php 
            esc_html_e('Available', 'wp-multi-network');
            ?>
</th>
								<th style="width: 2em;"></th>
								<th><?php 
            esc_html_e('Assigned', 'wp-multi-network');
            ?>
</th>
							</tr>
						</thead>
						<tr>
							<td>
								<select name="from[]" id="from" multiple style="height: auto; width: 98%;">
								<?php 
            foreach ($sites as $site) {
                if ($site->site_id != $network->id) {
                    echo '<option value="' . esc_attr($site->blog_id) . '">' . esc_html(sprintf('%1$s (%2$s%3$s)', $site->name, $site->domain, $site->path)) . '</option>';
                }
            }
            ?>
								</select>
							</td>
							<td>
								<input type="button" name="unassign" id="unassign" value="<<" /><br />
								<input type="button" name="assign" id="assign" value=">>" />
							</td>
							<td valign="top">
							<?php 
            if (!ENABLE_NETWORK_ZERO) {
                ?>
								<ul style="margin: 0; padding: 0; list-style-type: none;">
								<?php 
                foreach ($sites as $site) {
                    ?>
									<?php 
                    if ($site->site_id === $network->id) {
                        ?>
									<li><?php 
                        echo esc_html(sprintf('%1$s (%2$s%3$s)', $site->name, $site->domain, $site->path));
                        ?>
</li>
									<?php 
                    }
                    ?>
								<?php 
                }
                ?>
								</ul>
							<?php 
            }
            ?>
								<select name="to[]" id="to" multiple style="height: auto; width: 98%">
									<?php 
            if (ENABLE_NETWORK_ZERO) {
                foreach ($sites as $site) {
                    if ($site->site_id === $network->id) {
                        echo '<option value="' . esc_attr($site->blog_id) . '">' . esc_html(sprintf('%1$s (%2$s%3$s)', $site->name, $site->domain, $site->path)) . '</option>';
                    }
                }
            }
            ?>
								</select>
							</td>
						</tr>
					</table>
					<br class="clear" />
						<?php 
            if (has_action('add_move_blog_option')) {
                ?>
						<table class="widefat">
							<thead>
								<tr scope="col"><th colspan="2"><?php 
                esc_html_e('Options', 'wp-multi-network');
                ?>
:</th></tr>
							</thead>
							<?php 
                do_action('add_move_blog_option', $site->blog_id);
                ?>
						</table>
						<br />
						<?php 
            }
            ?>
					<?php 
            submit_button(esc_attr__('Update Assignments', 'wp-multi-network'), 'primary', 'reassign', false);
            ?>
					<a class="button" href="<?php 
            echo $this->admin_url();
            ?>
"><?php 
            esc_html_e('Cancel', 'wp-multi-network');
            ?>
</a>
				</form>
			</div>
			<?php 
        }
    }
コード例 #9
0
 /**
  * Delete a network and all its blogs
  *
  * @param int  $network_id   ID of network to delete
  * @param bool $delete_blogs Flag to permit blog deletion - default setting
  *                           of false will prevent deletion of occupied networks
  */
 function delete_network($network_id, $delete_blogs = false)
 {
     global $wpdb;
     // Get network
     $network = get_network($network_id);
     // Bail if network does not exist
     if (empty($network)) {
         return new WP_Error('network_not_exist', __('Network does not exist.', 'wp-multi-network'));
     }
     // Ensure there are no blogs attached to this network
     $sites = get_sites(array('network_id' => $network->id));
     // Network has sites
     if (!empty($sites)) {
         // Bail if blog deletion is off
         if (empty($delete_blogs)) {
             return new WP_Error('network_not_empty', __('Cannot delete network with sites.', 'wp-multi-network'));
             // Are we rescuing orphans or deleting them?
         } elseif (true === $delete_blogs) {
             foreach ($sites as $site) {
                 wp_should_rescue_orphaned_sites() ? move_site($site->blog_id, 0) : wpmu_delete_blog($site->blog_id, true);
             }
         }
     }
     // Delete from sites table
     $sql = "DELETE FROM {$wpdb->site} WHERE id = %d";
     $prep = $wpdb->prepare($sql, $network->id);
     $wpdb->query($prep);
     // Delete from site meta table
     $sql = "DELETE FROM {$wpdb->sitemeta} WHERE site_id = %d";
     $prep = $wpdb->prepare($sql, $network->id);
     $wpdb->query($prep);
     // Clean network cache
     clean_network_cache(array($network->id));
     // Network deleted
     do_action('delete_network', $network);
 }