PluginProbe
Templately – Elementor & Gutenberg Template Library: 6500+ Free & Pro Ready Templates And Cloud! / 3.4.5
Templately – Elementor & Gutenberg Template Library: 6500+ Free & Pro Ready Templates And Cloud! v3.4.5
3.7.5 3.7.4 3.7.3 3.7.2 1-final 3.7.1 3.7.0 3.6.8 3.6.7 3.6.6 3.6.5 3.6.4 3.6.3 3.6.2 3.6.1 3.0.3 3.0.4 3.0.5 3.0.6 3.0.7 3.0.8 3.0.9 3.1.0 3.1.1 3.1.10 All 111 releases
← All changes | includes/Core/Importer/Import.php +45 -46 3.1.103.4.5 View file →
@@ -2,24 +2,26 @@
2 2
3 3 namespace Templately\Core\Importer;
4 4
5 5 use Exception;
6 +use Templately\Core\Importer\Exception\NonRetirableErrorException;
7 +use Templately\Core\Importer\Runners\AIContent;
8 +use Templately\Core\Importer\Runners\Attachments;
6 9 use Templately\Core\Importer\Runners\BaseRunner;
7 10 use Templately\Core\Importer\Runners\Customizer;
11 +use Templately\Core\Importer\Runners\Dependencies;
8 12 use Templately\Core\Importer\Runners\ElementorContent;
9 13 use Templately\Core\Importer\Runners\ExtraContent;
10 14 use Templately\Core\Importer\Runners\Finalizer;
11 15 use Templately\Core\Importer\Runners\GutenbergContent;
16 +use Templately\Core\Importer\Runners\Loop;
12 17 use Templately\Core\Importer\Runners\Templates;
13 18 use Templately\Core\Importer\Runners\WPContent;
14 19
15 20 class Import {
16 21 use LogHelper;
22 + use Loop;
17 23
18 - /**
19 - * @var FullSiteImport
20 - */
21 - public $full_site_import;
22 24
23 25 /**
24 26 * @var array
25 27 */
@@ -25,8 +27,10 @@
25 27 */
26 28 private $manifest;
27 29
28 30 private $runners;
31 + private $request_params;
32 + private $session_id;
29 33
30 34 private $imported_data = [];
31 35
32 36 /**
@@ -31,13 +35,13 @@
31 35
32 36 /**
33 37 * @throws Exception
34 38 */
35 - public function __construct( $full_site_import ) {
36 - $this->full_site_import = $full_site_import;
39 + public function __construct( $args ) {
40 + $this->request_params = $args;
41 + $this->manifest = $args['manifest'];
42 + $this->session_id = $args['session_id'];
37 43
38 - $this->manifest = $full_site_import->manifest;
39 -
40 44 $this->register_runners();
41 45 }
42 46
43 47 /**
@@ -45,38 +49,43 @@
45 49 */
46 50 private function register_runners() {
47 51 $this->runners = [
48 52 // TODO: Site Settings Import Runner
49 - new Customizer( $this->full_site_import ),
50 - new ExtraContent( $this->full_site_import ),
51 - new Templates( $this->full_site_import ),
52 - new GutenbergContent( $this->full_site_import ),
53 - new ElementorContent( $this->full_site_import ),
54 - new WPContent( $this->full_site_import ),
55 - new Finalizer( $this->full_site_import )
53 + new Dependencies( $this->request_params ),
54 + new Attachments( $this->request_params ),
55 + new Customizer( $this->request_params ),
56 + new ExtraContent( $this->request_params ),
57 + new Templates( $this->request_params ),
58 + new GutenbergContent( $this->request_params ),
59 + new ElementorContent( $this->request_params ),
60 + new WPContent( $this->request_params ),
61 + // new AIContent( $this->request_params ),
62 + new Finalizer( $this->request_params )
56 63 ];
57 64 }
58 65
59 66 public function run( $callable = null ): array {
60 - $data = $this->full_site_import->get_request_params();
61 - $progress = $this->full_site_import->get_progress();
67 + $data = $this->request_params;
62 68
63 69 // Get the cached imported_data
64 - $this->imported_data = $data['imported_data'] ?? [];
70 + // $this->imported_data = $data['imported_data'] ?? [];
65 71
66 72 /**
67 73 * @var BaseRunner $runner
68 74 */
69 - foreach ( $this->runners as $id => $runner ) {
70 - $import = null;
71 - // If the template has been processed, skip it
72 - if (in_array($id, $progress)) {
73 - continue;
74 - }
75 + $imported_data = $this->loop( $this->runners, function($id, $runner, $imported_data ) use($data) {
76 + $import = [];
77 +
75 78 try{
76 - if ( $runner->should_run( $data, $this->imported_data ) ) {
77 - $import = $runner->import( $data, $this->imported_data );
78 - $this->imported_data = array_merge_recursive( $this->imported_data, $import );
79 + if ( $runner->should_run( $data, $imported_data ) ) {
80 + $progress = $this->get_progress();
81 + if(!in_array($runner->get_name(), $progress)){
82 + $runner->log( 0 );
83 + $progress[] = $runner->get_name();
84 + $this->update_progress( $progress);
85 + }
86 + $import = $runner->import( $data, $imported_data );
87 + $imported_data = array_merge_recursive( $imported_data, $import );
79 88
80 89 if( $runner->get_name() != 'finalize' ) {
81 90 $runner->log( 100 );
82 91 } else {
@@ -84,31 +93,21 @@
84 93 }
85 94 }
86 95 }catch (Exception $e){
87 96 error_log($e->getMessage());
97 +
98 + // Re-throw NonRetirableErrorException to stop the import process
99 + if ($e instanceof NonRetirableErrorException) {
100 + throw $e;
101 + }
88 102 }
89 103
90 - // Update the progress
91 - $progress[] = $id;
92 - $this->full_site_import->update_progress($progress, $import);
104 + return $imported_data;
105 + }, null, true);
93 106
94 - if(end($this->runners) !== $runner) {
95 - // $_runner = $this->runners[$id + 1];
96 - // if($_runner){
97 - // $_runner->log();
98 - // }
99 - $this->sse_message( [
100 - 'type' => 'continue',
101 - 'action' => 'continue',
102 - 'results' => $runner->get_label(),
103 - ] );
104 - exit;
105 - }
106 - }
107 -
108 - return $this->imported_data;
107 + return $imported_data;
109 108 }
110 109
111 110 public function get_runners() {
112 111 return $this->runners;
113 112 }
114 -}
113 +}