/**
  * Get all duplicable sites
  * @since 0.2.0
  * @return array of blog data
  */
 public static function get_site_list()
 {
     $site_list = array();
     $network_blogs = wp_get_sites(array('limit' => MUCD_MAX_NUMBER_OF_SITE));
     foreach ($network_blogs as $blog) {
         if (MUCD_Functions::is_duplicable($blog['blog_id']) && MUCD_SITE_DUPLICATION_EXCLUDE != $blog['blog_id']) {
             $site_list[] = $blog;
         }
     }
     return $site_list;
 }
 /**
  * Get select box with duplicable site list
  * @since 0.2.0
  * @param  array $site_list all the sites
  * @param  id $current_blog_id parameters
  * @return string the output
  */
 public static function select_site_list($site_list, $current_blog_id = null)
 {
     $output = '';
     if (count($site_list) == 1) {
         $blog_id = $site_list[0]['blog_id'];
     } else {
         if (isset($current_blog_id) && MUCD_Functions::value_in_array($current_blog_id, $site_list, 'blog_id') && MUCD_Functions::is_duplicable($current_blog_id)) {
             $blog_id = $current_blog_id;
         }
     }
     $output .= '<select name="site[source]">';
     foreach ($site_list as $site) {
         if (isset($blog_id) && $site['blog_id'] == $blog_id) {
             $output .= '    <option selected value="' . $site['blog_id'] . '">' . substr($site['domain'] . $site['path'], 0, -1) . '</option>';
         } else {
             $output .= '    <option value="' . $site['blog_id'] . '">' . substr($site['domain'] . $site['path'], 0, -1) . '</option>';
         }
     }
     $output .= '</select>';
     $output .= '&emsp;<a href="' . network_admin_url("settings.php#mucd_duplication") . '" title="' . MUCD_NETWORK_PAGE_DUPLICATE_TOOLTIP . '">?</a>';
     return $output;
 }
Beispiel #3
0
 /**
  * Duplication form validation
  * @since 0.2.0
  * @param  array $init_data default data
  * @return array $data validated data, or errors
  */
 public static function check_form($init_data)
 {
     $data = $init_data;
     $data['copy_files'] = 'no';
     $data['keep_users'] = 'no';
     $data['log'] = 'no';
     // Check referer and nonce
     if (check_admin_referer(MUCD_DOMAIN)) {
         global $current_site;
         $error = array();
         // Merge $data / $_POST['site'] to get Posted data and fill form
         $data = array_merge($data, $_POST['site']);
         // format and check source
         $data['from_site_id'] = intval($data['source']);
         if ($data['from_site_id'] < 1 || !get_blog_details($data['from_site_id'], false)) {
             $error[] = new WP_Error('mucd_error', MUCD_NETWORK_PAGE_DUPLICATE_MISSING_FIELDS);
         }
         //          XTEC ************ AFEGIT - Check if the blog allow duplications and if it exists
         //          2015.11.16 @dgras
         if (!MUCD_Functions::is_duplicable($data['from_site_id'])) {
             $error[] = new WP_Error('mucd_error', MUCD_NETWORK_PAGE_DUPLICATE_BLOG_ID_DUPLICATION_NOT_ALLOWED);
         }
         if (!get_blog_details($data['from_site_id'])) {
             $error[] = new WP_Error('mucd_error', MUCD_NETWORK_PAGE_DUPLICATE_BLOG_ID_NOT_EXISTS);
         }
         //            ************ FI
         $domain = '';
         if (preg_match('|^([a-zA-Z0-9-])+$|', $data['domain'])) {
             $domain = strtolower($data['domain']);
         }
         // If not a subdomain install, make sure the domain isn't a reserved word
         if (!is_subdomain_install()) {
             /** This filter is documented in wp-includes/ms-functions.php */
             $subdirectory_reserved_names = apply_filters('subdirectory_reserved_names', array('page', 'comments', 'blog', 'files', 'feed'));
             if (in_array($domain, $subdirectory_reserved_names)) {
                 $error[] = new WP_Error('mucd_error', sprintf(MUCD_NETWORK_PAGE_DUPLICATE_DOMAIN_ERROR_RESERVED_WORDS, implode('</code>, <code>', $subdirectory_reserved_names)));
             }
         }
         if (empty($domain)) {
             $error[] = new WP_Error('mucd_error', MUCD_NETWORK_PAGE_DUPLICATE_DOMAIN_ERROR_REQUIRE);
         }
         if (is_subdomain_install()) {
             $newdomain = $domain . '.' . preg_replace('|^www\\.|', '', $current_site->domain);
             $path = $current_site->path;
         } else {
             $newdomain = $current_site->domain;
             $path = $current_site->path . $domain . '/';
         }
         // format and check title
         if (empty($data['title'])) {
             $error[] = new WP_Error('mucd_error', MUCD_NETWORK_PAGE_DUPLICATE_TITLE_ERROR_REQUIRE);
         }
         // format and check email admin
         if (empty($data['email'])) {
             $error[] = new WP_Error('mucd_error', MUCD_NETWORK_PAGE_DUPLICATE_EMAIL_MISSING);
         }
         $valid_mail = sanitize_email($data['email']);
         if (is_email($valid_mail)) {
             $data['email'] = $valid_mail;
         } else {
             $error[] = new WP_Error('mucd_error', MUCD_NETWORK_PAGE_DUPLICATE_EMAIL_ERROR_FORMAT);
         }
         $data['domain'] = $domain;
         $data['newdomain'] = $newdomain;
         $data['path'] = $path;
         $data['public'] = !isset($data['private']);
         // Network
         $data['network_id'] = $current_site->id;
         if (isset($data['log']) && $data['log'] == 'yes' && (!isset($data['log-path']) || $data['log-path'] == "" || !MUCD_Functions::valid_path($data['log-path']))) {
             $error[] = new WP_Error('mucd_error', MUCD_NETWORK_PAGE_DUPLICATE_VIEW_LOG_PATH_EMPTY);
         }
         if (isset($error[0])) {
             $data['error'] = $error[0];
         }
     } else {
         $data['error'] = MUCD_GAL_ERROR_CAPABILITIES;
     }
     return $data;
 }