CreateDemoContent
5 years ago
CustomizerImporter.php
5 years ago
CustomizerOption.php
5 years ago
Downloader.php
5 years ago
Helpers.php
5 years ago
ImportActions.php
5 years ago
Importer.php
5 years ago
Logger.php
5 years ago
OneClickDemoImport.php
5 years ago
PluginInstaller.php
5 years ago
PluginInstallerSkin.php
5 years ago
PluginInstallerSkinSilent.php
5 years ago
ReduxImporter.php
5 years ago
ViewHelpers.php
5 years ago
WPCLICommands.php
5 years ago
WXRImporter.php
5 years ago
WidgetImporter.php
5 years ago
ImportActions.php
164 lines
| 1 | <?php |
| 2 | /** |
| 3 | * Class for the import actions used in the One Click Demo Import plugin. |
| 4 | * Register default WP actions for OCDI plugin. |
| 5 | * |
| 6 | * @package ocdi |
| 7 | */ |
| 8 | |
| 9 | namespace OCDI; |
| 10 | |
| 11 | class ImportActions { |
| 12 | /** |
| 13 | * Register all action hooks for this class. |
| 14 | */ |
| 15 | public function register_hooks() { |
| 16 | // Before content import. |
| 17 | add_action( 'ocdi/before_content_import_execution', array( $this, 'before_content_import_action' ), 10, 3 ); |
| 18 | |
| 19 | // After content import. |
| 20 | add_action( 'ocdi/after_content_import_execution', array( $this, 'before_widget_import_action' ), 10, 3 ); |
| 21 | add_action( 'ocdi/after_content_import_execution', array( $this, 'widgets_import' ), 20, 3 ); |
| 22 | add_action( 'ocdi/after_content_import_execution', array( $this, 'redux_import' ), 30, 3 ); |
| 23 | |
| 24 | // Customizer import. |
| 25 | add_action( 'ocdi/customizer_import_execution', array( $this, 'customizer_import' ), 10, 1 ); |
| 26 | |
| 27 | // After full import action. |
| 28 | add_action( 'ocdi/after_all_import_execution', array( $this, 'after_import_action' ), 10, 3 ); |
| 29 | |
| 30 | // Special widget import cases. |
| 31 | if ( Helpers::apply_filters( 'ocdi/enable_custom_menu_widget_ids_fix', true ) ) { |
| 32 | add_action( 'ocdi/widget_settings_array', array( $this, 'fix_custom_menu_widget_ids' ) ); |
| 33 | } |
| 34 | } |
| 35 | |
| 36 | |
| 37 | /** |
| 38 | * Change the menu IDs in the custom menu widgets in the widget import data. |
| 39 | * This solves the issue with custom menu widgets not having the correct (new) menu ID, because they |
| 40 | * have the old menu ID from the export site. |
| 41 | * |
| 42 | * @param array $widget The widget settings array. |
| 43 | */ |
| 44 | public function fix_custom_menu_widget_ids( $widget ) { |
| 45 | // Skip (no changes needed), if this is not a custom menu widget. |
| 46 | if ( ! array_key_exists( 'nav_menu', $widget ) || empty( $widget['nav_menu'] ) || ! is_int( $widget['nav_menu'] ) ) { |
| 47 | return $widget; |
| 48 | } |
| 49 | |
| 50 | // Get import data, with new menu IDs. |
| 51 | $ocdi = OneClickDemoImport::get_instance(); |
| 52 | $content_import_data = $ocdi->importer->get_importer_data(); |
| 53 | $term_ids = $content_import_data['mapping']['term_id']; |
| 54 | |
| 55 | // Set the new menu ID for the widget. |
| 56 | $widget['nav_menu'] = $term_ids[ $widget['nav_menu'] ]; |
| 57 | |
| 58 | return $widget; |
| 59 | } |
| 60 | |
| 61 | |
| 62 | /** |
| 63 | * Execute the widgets import. |
| 64 | * |
| 65 | * @param array $selected_import_files Actual selected import files (content, widgets, customizer, redux). |
| 66 | * @param array $import_files The filtered import files defined in `ocdi/import_files` filter. |
| 67 | * @param int $selected_index Selected index of import. |
| 68 | */ |
| 69 | public function widgets_import( $selected_import_files, $import_files, $selected_index ) { |
| 70 | if ( ! empty( $selected_import_files['widgets'] ) ) { |
| 71 | WidgetImporter::import( $selected_import_files['widgets'] ); |
| 72 | } |
| 73 | } |
| 74 | |
| 75 | |
| 76 | /** |
| 77 | * Execute the Redux import. |
| 78 | * |
| 79 | * @param array $selected_import_files Actual selected import files (content, widgets, customizer, redux). |
| 80 | * @param array $import_files The filtered import files defined in `ocdi/import_files` filter. |
| 81 | * @param int $selected_index Selected index of import. |
| 82 | */ |
| 83 | public function redux_import( $selected_import_files, $import_files, $selected_index ) { |
| 84 | if ( ! empty( $selected_import_files['redux'] ) ) { |
| 85 | ReduxImporter::import( $selected_import_files['redux'] ); |
| 86 | } |
| 87 | } |
| 88 | |
| 89 | |
| 90 | /** |
| 91 | * Execute the customizer import. |
| 92 | * |
| 93 | * @param array $selected_import_files Actual selected import files (content, widgets, customizer, redux). |
| 94 | * @param array $import_files The filtered import files defined in `ocdi/import_files` filter. |
| 95 | * @param int $selected_index Selected index of import. |
| 96 | */ |
| 97 | public function customizer_import( $selected_import_files ) { |
| 98 | if ( ! empty( $selected_import_files['customizer'] ) ) { |
| 99 | CustomizerImporter::import( $selected_import_files['customizer'] ); |
| 100 | } |
| 101 | } |
| 102 | |
| 103 | |
| 104 | /** |
| 105 | * Execute the action: 'ocdi/before_content_import'. |
| 106 | * |
| 107 | * @param array $selected_import_files Actual selected import files (content, widgets, customizer, redux). |
| 108 | * @param array $import_files The filtered import files defined in `ocdi/import_files` filter. |
| 109 | * @param int $selected_index Selected index of import. |
| 110 | */ |
| 111 | public function before_content_import_action( $selected_import_files, $import_files, $selected_index ) { |
| 112 | $this->do_import_action( 'ocdi/before_content_import', $import_files[ $selected_index ] ); |
| 113 | } |
| 114 | |
| 115 | |
| 116 | /** |
| 117 | * Execute the action: 'ocdi/before_widgets_import'. |
| 118 | * |
| 119 | * @param array $selected_import_files Actual selected import files (content, widgets, customizer, redux). |
| 120 | * @param array $import_files The filtered import files defined in `ocdi/import_files` filter. |
| 121 | * @param int $selected_index Selected index of import. |
| 122 | */ |
| 123 | public function before_widget_import_action( $selected_import_files, $import_files, $selected_index ) { |
| 124 | $this->do_import_action( 'ocdi/before_widgets_import', $import_files[ $selected_index ] ); |
| 125 | } |
| 126 | |
| 127 | |
| 128 | /** |
| 129 | * Execute the action: 'ocdi/after_import'. |
| 130 | * |
| 131 | * @param array $selected_import_files Actual selected import files (content, widgets, customizer, redux). |
| 132 | * @param array $import_files The filtered import files defined in `ocdi/import_files` filter. |
| 133 | * @param int $selected_index Selected index of import. |
| 134 | */ |
| 135 | public function after_import_action( $selected_import_files, $import_files, $selected_index ) { |
| 136 | $this->do_import_action( 'ocdi/after_import', $import_files[ $selected_index ] ); |
| 137 | } |
| 138 | |
| 139 | |
| 140 | /** |
| 141 | * Register the do_action hook, so users can hook to these during import. |
| 142 | * |
| 143 | * @param string $action The action name to be executed. |
| 144 | * @param array $selected_import The data of selected import from `ocdi/import_files` filter. |
| 145 | */ |
| 146 | private function do_import_action( $action, $selected_import ) { |
| 147 | if ( false !== Helpers::has_action( $action ) ) { |
| 148 | $ocdi = OneClickDemoImport::get_instance(); |
| 149 | $log_file_path = $ocdi->get_log_file_path(); |
| 150 | |
| 151 | ob_start(); |
| 152 | Helpers::do_action( $action, $selected_import ); |
| 153 | $message = ob_get_clean(); |
| 154 | |
| 155 | // Add this message to log file. |
| 156 | $log_added = Helpers::append_to_file( |
| 157 | $message, |
| 158 | $log_file_path, |
| 159 | $action |
| 160 | ); |
| 161 | } |
| 162 | } |
| 163 | } |
| 164 |