<?php /** * Option management for the plugin */ if ( !class_exists( 'MUCD_Option' ) ) { class MUCD_Option { /** * Init 'mucd_duplicable' options * * @param string $blogs_value the value for blogs options * @param string $network_value the value for site option * @since 0.2.0 */ public static function init_duplicable_option($blogs_value = 'no', $network_value = 'all') { $network_blogs = MUCD_Functions::get_sites(); foreach ( $network_blogs as $blog ) { $blog_id = $blog['blog_id']; add_blog_option( $blog_id, 'mucd_duplicable', $blogs_value); } // end foreach; add_site_option( 'mucd_duplicables', $network_value ); } // end init_duplicable_option; /** * Delete 'mucd_duplicable' option for all sites * * @since 0.2.0 */ public static function delete_duplicable_option() { $network_blogs = MUCD_Functions::get_sites(); foreach ( $network_blogs as $blog ) { $blog_id = $blog['blog_id']; delete_blog_option( $blog_id, 'mucd_duplicable'); } // end foreach; delete_site_option( 'mucd_duplicables'); } // end delete_duplicable_option; /** * Set 'mucd_duplicable' option to "yes" for the list of blogs, other to "no" * * @since 0.2.0 * @param array $blogs list of blogs we want the option set to "yes" */ public static function set_duplicable_option($blogs) { $network_blogs = MUCD_Functions::get_sites(); foreach ( $network_blogs as $blog ) { if (in_array($blog['blog_id'], $blogs)) { update_blog_option( $blog['blog_id'], 'mucd_duplicable', 'yes'); } else { update_blog_option($blog['blog_id'], 'mucd_duplicable', 'no'); } // end if; } // end foreach; } // end set_duplicable_option; /** * Add plugin default options * * @since 1.3.0 */ public static function init_options() { add_site_option('mucd_copy_files', 'yes'); add_site_option('mucd_keep_users', 'yes'); add_site_option('mucd_log', 'no'); $upload_dir = wp_upload_dir(); add_site_option('mucd_log_dir', $upload_dir['basedir'] . '/multisite-clone-duplicator-logs/'); add_site_option('mucd_disable_enhanced_site_select', 'no'); MUCD_Option::init_duplicable_option(); } // end init_options; /** * Removes plugin options * * @since 1.3.0 */ public static function delete_options() { delete_site_option('mucd_copy_files'); delete_site_option('mucd_keep_users'); delete_site_option('mucd_log'); delete_site_option('mucd_log_dir'); delete_site_option('mucd_disable_enhanced_site_select'); MUCD_Option::delete_duplicable_option(); } // end delete_options; /** * Get log directory option * * @since 0.2.0 * @return string the path */ public static function get_option_log_directory() { $upload_dir = wp_upload_dir(); return get_site_option('mucd_log_dir', $upload_dir['basedir'] . '/multisite-clone-duplicator-logs/'); } // end get_option_log_directory; /** * Get directories to exclude from file copy when duplicated site is primary site * * @since 0.2.0 * @return array of string */ public static function get_primary_dir_exclude() { return array( 'sites', ); } // end get_primary_dir_exclude; /** * Get default options that should be preserved in the new blog. * * @since 0.2.0 * @return array of string */ public static function get_default_saved_option() { return array( 'siteurl' => '', 'home' => '', 'upload_path' => '', 'fileupload_url' => '', 'upload_url_path' => '', 'admin_email' => '', 'blogname' => '', 'schema-ActionScheduler_Abstract_Schema' => '', 'action_scheduler_hybrid_store_demarkation' => '', 'schema-ActionScheduler_StoreSchema' => '', 'schema-ActionScheduler_LoggerSchema' => '', 'action_scheduler_lock_async-request-runner' => '', ); } // end get_default_saved_option; /** * Get filtered options that should be preserved in the new blog. * * @since 0.2.0 * @return array of string (filtered) */ public static function get_saved_option() { return apply_filters('mucd_copy_blog_data_saved_options', MUCD_Option::get_default_saved_option()); } // end get_saved_option; /** * Get default fields to scan for an update after data copy * * @since 0.2.0 * @return array '%table_name' => array('%field_name_1','%field_name_2','%field_name_3', ...) */ public static function get_default_fields_to_update() { return array ( 'commentmeta' => array(), 'comments' => array(), 'links' => array('link_url', 'link_image'), 'options' => array('option_name', 'option_value'), 'postmeta' => array('meta_value'), 'posts' => array('post_content', 'guid', 'post_title', 'post_name'), 'terms' => array(), 'term_relationships' => array(), 'term_taxonomy' => array(), ); } // end get_default_fields_to_update; /** * Get filtered fields to scan for an update after data copy * * @since 0.2.0 * @return array of string (filtered) */ public static function get_fields_to_update() { return apply_filters('mucd_default_fields_to_update', MUCD_Option::get_default_fields_to_update()); } // end get_fields_to_update; /** * Get default tables to duplicate when duplicated site is primary site * * @since 0.2.0 * @return array of string */ public static function get_default_primary_tables_to_copy() { return array ( 'commentmeta', 'comments', 'links', 'options', 'postmeta', 'posts', 'terms', 'term_relationships', 'term_taxonomy', 'termmeta', ); } // end get_default_primary_tables_to_copy; /** * 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()); } // end get_primary_tables_to_copy; } // end class MUCD_Option; } // end if;