コード例 #1
0
 /**
  * Copy files from one site to another
  * @since 0.2.0
  * @param  int $from_site_id duplicated site id
  * @param  int $to_site_id   new site id
  */
 public static function copy_files($from_site_id, $to_site_id)
 {
     // Switch to Source site and get uploads info
     switch_to_blog($from_site_id);
     $wp_upload_info = wp_upload_dir();
     $from_dir['path'] = str_replace(' ', "\\ ", trailingslashit($wp_upload_info['basedir']));
     $from_site_id == MUCD_PRIMARY_SITE_ID ? $from_dir['exclude'] = MUCD_Option::get_primary_dir_exclude() : ($from_dir['exclude'] = array());
     // Switch to Destination site and get uploads info
     switch_to_blog($to_site_id);
     $wp_upload_info = wp_upload_dir();
     $to_dir = str_replace(' ', "\\ ", trailingslashit($wp_upload_info['basedir']));
     restore_current_blog();
     $dirs = array();
     $dirs[] = array('from_dir_path' => $from_dir['path'], 'to_dir_path' => $to_dir, 'exclude_dirs' => $from_dir['exclude']);
     $dirs = apply_filters('mucd_copy_dirs', $dirs, $from_site_id, $to_site_id);
     foreach ($dirs as $dir) {
         if (isset($dir['to_dir_path']) && !MUCD_Files::init_dir($dir['to_dir_path'])) {
             MUCD_Files::mkdir_error($dir['to_dir_path']);
         }
         MUCD_Duplicate::write_log('Copy files from ' . $dir['from_dir_path'] . ' to ' . $dir['to_dir_path']);
         MUCD_Files::recurse_copy($dir['from_dir_path'], $dir['to_dir_path'], $dir['exclude_dirs']);
     }
     return true;
 }
コード例 #2
0
 /**
  * Save duplication options on network settings page
  * @since 0.2.0
  */
 public static function save_admin_network_option_page()
 {
     if (!empty($_POST) && isset($_POST[MUCD_SLUG_ACTION_SETTINGS])) {
         if (check_admin_referer('siteoptions')) {
             if (isset($_POST['duplicables'])) {
                 if ($_POST['duplicables'] == 'all') {
                     update_site_option('mucd_duplicables', 'all');
                 } else {
                     update_site_option('mucd_duplicables', 'selected');
                     if (isset($_POST['duplicables-list'])) {
                         MUCD_Option::set_duplicable_option($_POST['duplicables-list']);
                     } else {
                         MUCD_Option::set_duplicable_option(array());
                     }
                 }
             }
             if (isset($_POST['mucd_copy_files']) && $_POST['mucd_copy_files'] == 'yes') {
                 update_site_option('mucd_copy_files', 'yes');
             } else {
                 update_site_option('mucd_copy_files', 'no');
             }
             if (isset($_POST['mucd_keep_users']) && $_POST['mucd_keep_users'] == 'yes') {
                 update_site_option('mucd_keep_users', 'yes');
             } else {
                 update_site_option('mucd_keep_users', 'no');
             }
             if (isset($_POST['mucd_log']) && $_POST['mucd_log'] == 'yes') {
                 update_site_option('mucd_log', 'yes');
                 if (isset($_POST['mucd_log_dir'])) {
                     update_site_option('mucd_log_dir', $_POST['mucd_log_dir']);
                 }
             } else {
                 update_site_option('mucd_log', 'no');
             }
         }
     }
 }
コード例 #3
0
 /**
  * Updated tables from a site to another
  * @since 0.2.0
  * @param  int $from_site_id duplicated site id
  * @param  int $to_site_id   new site id
  */
 public static function db_update_data($from_site_id, $to_site_id)
 {
     global $wpdb;
     $to_blog_prefix = $wpdb->get_blog_prefix($to_site_id);
     // Looking for uploads dirs
     switch_to_blog($from_site_id);
     $dir = wp_upload_dir();
     $from_upload_url = str_replace(network_site_url(), get_bloginfo('url') . '/', $dir['baseurl']);
     $from_blog_url = get_blog_option($from_site_id, 'siteurl');
     switch_to_blog($to_site_id);
     $dir = wp_upload_dir();
     $to_upload_url = str_replace(network_site_url(), get_bloginfo('url') . '/', $dir['baseurl']);
     $to_blog_url = get_blog_option($to_site_id, 'siteurl');
     restore_current_blog();
     $tables = array();
     // Bugfix : escape '_' , '%' and '/' character for mysql 'like' queries
     $to_blog_prefix_like = $wpdb->esc_like($to_blog_prefix);
     $results = MUCD_Data::do_sql_query('SHOW TABLES LIKE \'' . $to_blog_prefix_like . '%\'', 'col', FALSE);
     foreach ($results as $k => $v) {
         $tables[str_replace($to_blog_prefix, '', $v)] = array();
     }
     foreach ($tables as $table => $col) {
         $results = MUCD_Data::do_sql_query('SHOW COLUMNS FROM `' . $to_blog_prefix . $table . '`', 'col', FALSE);
         $columns = array();
         foreach ($results as $k => $v) {
             $columns[] = $v;
         }
         $tables[$table] = $columns;
     }
     $default_tables = MUCD_Option::get_fields_to_update();
     foreach ($default_tables as $table => $field) {
         $tables[$table] = $field;
     }
     $from_site_prefix = $wpdb->get_blog_prefix($from_site_id);
     $to_site_prefix = $wpdb->get_blog_prefix($to_site_id);
     $string_to_replace = array($from_upload_url => $to_upload_url, $from_blog_url => $to_blog_url, $from_site_prefix => $to_site_prefix);
     $string_to_replace = apply_filters('mucd_string_to_replace', $string_to_replace, $from_site_id, $to_site_id);
     foreach ($tables as $table => $field) {
         foreach ($string_to_replace as $from_string => $to_string) {
             MUCD_Data::update($to_blog_prefix . $table, $field, $from_string, $to_string);
         }
     }
 }
コード例 #4
0
 /**
  * What to do on plugin uninstallation
  */
 public static function uninstall()
 {
     MUCD_Option::delete_options();
 }
コード例 #5
0
echo MUCD_NETWORK_PAGE_DUPLICATE_LOG;
?>
</th>
                <td>
                    <label><input <?php 
checked(get_site_option('mucd_log', 'no'), 'yes');
?>
 id="log-box" name="site[log]" type="checkbox" value="yes" /><?php 
echo MUCD_NETWORK_PAGE_DUPLICATE_LOG_TEXT_1;
?>
</label>
                    <br /><br /><label><?php 
echo MUCD_NETWORK_PAGE_DUPLICATE_LOG_TEXT_2;
?>
 : <input id="log-path" name="site[log-path]" type="text"  class="large-text" value="<?php 
echo MUCD_Option::get_option_log_directory();
?>
"/></label>
                </td>
            </tr>
        </table>

        <p class="submit">
            <input class='button button-primary' type='submit' value='<?php 
echo MUCD_NETWORK_PAGE_DUPLICATE_BUTTON_COPY;
?>
' />
        </p>

    </form>
</div>
コード例 #6
0
 /**
  * Get filtered tables to duplicate when duplicated site is primary site
  * @since 0.2.0
  * @return  array of string (filtered)
  */
 public static function get_primary_tables_to_copy()
 {
     return apply_filters('mucd_default_primary_tables_to_copy', MUCD_Option::get_default_primary_tables_to_copy());
 }