Astra Starter Sites - Version 2.5.0

Version Description

Download this release

Release Info

Developer brainstormworg
Plugin Icon Astra Starter Sites
Version 2.5.0
Comparing to
See all releases

Code changes from version 2.4.0 to 2.5.0

astra-sites.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Starter Templates
4
  * Plugin URI: https://wpastra.com/
5
  * Description: Starter Templates is all in one solution for complete starter sites, single page templates, blocks & images. This plugin offers the premium library of ready templates & provides quick access to beautiful Pixabay images that can be imported in your website easily.
6
- * Version: 2.4.0
7
  * Author: Brainstorm Force
8
  * Author URI: https://www.brainstormforce.com
9
  * Text Domain: astra-sites
@@ -19,7 +19,7 @@ if ( ! defined( 'ASTRA_SITES_NAME' ) ) {
19
  }
20
 
21
  if ( ! defined( 'ASTRA_SITES_VER' ) ) {
22
- define( 'ASTRA_SITES_VER', '2.4.0' );
23
  }
24
 
25
  if ( ! defined( 'ASTRA_SITES_FILE' ) ) {
3
  * Plugin Name: Starter Templates
4
  * Plugin URI: https://wpastra.com/
5
  * Description: Starter Templates is all in one solution for complete starter sites, single page templates, blocks & images. This plugin offers the premium library of ready templates & provides quick access to beautiful Pixabay images that can be imported in your website easily.
6
+ * Version: 2.5.0
7
  * Author: Brainstorm Force
8
  * Author URI: https://www.brainstormforce.com
9
  * Text Domain: astra-sites
19
  }
20
 
21
  if ( ! defined( 'ASTRA_SITES_VER' ) ) {
22
+ define( 'ASTRA_SITES_VER', '2.5.0' );
23
  }
24
 
25
  if ( ! defined( 'ASTRA_SITES_FILE' ) ) {
inc/assets/css/admin-rtl.css CHANGED
@@ -1188,7 +1188,6 @@ body.loading-content .select-page-builder {
1188
  }
1189
  .astra-sites-welcome a {
1190
  text-decoration: none;
1191
- color: inherit;
1192
  }
1193
  .astra-sites-welcome a:focus,
1194
  .astra-sites-welcome a {
1188
  }
1189
  .astra-sites-welcome a {
1190
  text-decoration: none;
 
1191
  }
1192
  .astra-sites-welcome a:focus,
1193
  .astra-sites-welcome a {
inc/assets/css/admin.css CHANGED
@@ -1188,7 +1188,6 @@ body.loading-content .select-page-builder {
1188
  }
1189
  .astra-sites-welcome a {
1190
  text-decoration: none;
1191
- color: inherit;
1192
  }
1193
  .astra-sites-welcome a:focus,
1194
  .astra-sites-welcome a {
@@ -1355,6 +1354,10 @@ body.loading-content .select-page-builder {
1355
  .astra-sites-result-preview .dashicons {
1356
  vertical-align: middle;
1357
  font-size: 1rem;
 
 
 
 
1358
  }
1359
 
1360
  .astra-site-import-process-wrap progress::-webkit-progress-value {
@@ -1560,6 +1563,8 @@ body.loading-content .select-page-builder {
1560
  border-left: 1px solid #eee;
1561
  color: #aaa;
1562
  font-size: 22px;
 
 
1563
  }
1564
  .astra-sites-result-preview .close:hover {
1565
  color: #0073aa;
@@ -2826,3 +2831,147 @@ body.loading-content .select-page-builder {
2826
  .required-plugins-count-1.dont-use-astra-theme .astra-sites-import-plugins {
2827
  display: none;
2828
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1188
  }
1189
  .astra-sites-welcome a {
1190
  text-decoration: none;
 
1191
  }
1192
  .astra-sites-welcome a:focus,
1193
  .astra-sites-welcome a {
1354
  .astra-sites-result-preview .dashicons {
1355
  vertical-align: middle;
1356
  font-size: 1rem;
1357
+ opacity: 0;
1358
+ visibility: hidden;
1359
+ height: auto;
1360
+ vertical-align: middle;
1361
  }
1362
 
1363
  .astra-site-import-process-wrap progress::-webkit-progress-value {
1563
  border-left: 1px solid #eee;
1564
  color: #aaa;
1565
  font-size: 22px;
1566
+ opacity: 1;
1567
+ visibility: visible;
1568
  }
1569
  .astra-sites-result-preview .close:hover {
1570
  color: #0073aa;
2831
  .required-plugins-count-1.dont-use-astra-theme .astra-sites-import-plugins {
2832
  display: none;
2833
  }
2834
+
2835
+ .subscription-popup {
2836
+ display: none;
2837
+ }
2838
+
2839
+ .subscription-form {
2840
+ margin-top: 2em;
2841
+ }
2842
+
2843
+ .subscription-field select,
2844
+ .subscription-field input[type="text"],
2845
+ .subscription-field input[type="email"] {
2846
+ width: 100%;
2847
+ border-radius: 3px;
2848
+ border: 1px solid #8b959d;
2849
+ font-size: 13px;
2850
+ height: 40px;
2851
+ padding: 0 10px;
2852
+ }
2853
+
2854
+ .subscription-fields .subscription-field {
2855
+ margin-bottom: 1.4em;
2856
+ }
2857
+
2858
+ .subscription-user-type .label {
2859
+ margin-right: 1em;
2860
+ margin-left: 2px;
2861
+ }
2862
+
2863
+ .button-subscription-skip:focus {
2864
+ box-shadow: none;
2865
+ }
2866
+
2867
+ .button-subscription-skip {
2868
+ margin-top: .8em;
2869
+ display: inline-block;
2870
+ }
2871
+
2872
+ .subscription-actions {
2873
+ display: flex;
2874
+ align-items: center;
2875
+ margin-top: 1.6em;
2876
+ }
2877
+
2878
+ .subscription-user-type {
2879
+ display: flex;
2880
+ margin-bottom: 2em;
2881
+ }
2882
+
2883
+ .subscription-field .subscription-input .error {
2884
+ border-color: red;
2885
+ }
2886
+
2887
+ .subscription-input input[type="email"] {
2888
+ width: 100%;
2889
+ }
2890
+
2891
+ .subscription-popup .astra-sites-import-content {
2892
+ height: 260px;
2893
+ padding: 20px 35px 20px 35px;
2894
+ }
2895
+
2896
+ .subscription-actions .submitting .dashicons,
2897
+ .subscription-actions .submitted .dashicons {
2898
+ opacity: 1;
2899
+ visibility: visible;
2900
+ }
2901
+
2902
+ .subscription-actions .submitting .dashicons {
2903
+ animation: rotation 2s infinite linear;
2904
+ }
2905
+
2906
+ .wp-core-ui .subscription-field select {
2907
+ background-position: right 7px top 55%;
2908
+ }
2909
+
2910
+ .wp-core-ui .astra-sites-result-preview .subscription-actions .button.button-hero {
2911
+ margin: 0;
2912
+ box-shadow: none;
2913
+ font-size: 13px;
2914
+ min-height: 38px;
2915
+ padding: 0 18px;
2916
+ width: 100%;
2917
+ }
2918
+
2919
+ .wp-core-ui .subscription-user-type select:focus,
2920
+ .subscription-field input[type="text"]:focus,
2921
+ .subscription-field input[type="email"]:focus,
2922
+ .wp-core-ui .subscription-user-type select:hover,
2923
+ .subscription-field input[type="text"]:hover,
2924
+ .subscription-field input[type="email"]:hover {
2925
+ border-color: #444C53;
2926
+ }
2927
+
2928
+ .subscription-input input[type="email"],
2929
+ .subscription-input input[type="text"] {
2930
+ color: #444;
2931
+ }
2932
+
2933
+ .wp-core-ui .subscription-user-type select:focus,
2934
+ .subscription-field input[type="text"]:focus,
2935
+ .subscription-field input[type="email"]:focus {
2936
+ box-shadow: none;
2937
+ }
2938
+
2939
+ .wp-core-ui .subscription-user-type select,
2940
+ .subscription-user-type .subscription-input {
2941
+ width: 100%;
2942
+ color: #72777c;
2943
+ }
2944
+
2945
+ .subscription-actions + p {
2946
+ margin: 30px 0 0 0;
2947
+ }
2948
+
2949
+ .subscription-footer {
2950
+ margin-top: 0.8em;
2951
+ text-align: center;
2952
+ }
2953
+
2954
+ .subscription-footer p {
2955
+ margin: 0;
2956
+ }
2957
+ @media screen and (max-width: 768px) {
2958
+ .astra-sites-result-preview .inner {
2959
+ max-height: 100%;
2960
+ }
2961
+ .subscription-popup .astra-sites-import-content {
2962
+ height: 100%;
2963
+ }
2964
+ }
2965
+
2966
+ @media screen and (min-width: 768px) {
2967
+ .subscription-fields {
2968
+ display: flex;
2969
+ }
2970
+ .subscription-fields .subscription-field:first-child {
2971
+ padding-right: 1.2em;
2972
+ }
2973
+ .subscription-fields .subscription-field {
2974
+ margin-bottom: 1.4em;
2975
+ width: 50%;
2976
+ }
2977
+ }
inc/assets/css/import-status-rtl.css ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #wpadminbar #astra-sites-import-status-admin-bar {
2
+ padding-right: 10px;
3
+ border-right: 1px solid #3d4349;
4
+ color: #fff;
5
+ }
6
+
7
+ .astra-sites-import-screen.failed .import-step:before {
8
+ content: "\f335";
9
+ color: #F44336;
10
+ }
11
+
12
+ .astra-sites-import-screen .dashicons-external {
13
+ font-size: inherit;
14
+ vertical-align: middle;
15
+ }
16
+
17
+ #astra-sites-import-status-admin-bar .dashicons {
18
+ font-family: 'dashicons';
19
+ display: inline-block;
20
+ line-height: 1;
21
+ font-weight: 400;
22
+ font-style: normal;
23
+ speak: none;
24
+ text-decoration: inherit;
25
+ text-transform: none;
26
+ text-rendering: auto;
27
+ -webkit-font-smoothing: antialiased;
28
+ -moz-osx-font-smoothing: grayscale;
29
+ font-size: 20px;
30
+ vertical-align: text-top;
31
+ text-align: center;
32
+ transition: color 0.1s ease-in;
33
+ margin-left: 5px;
34
+ }
35
+
36
+ #astra-sites-import-status-admin-bar .loading::before {
37
+ color: #9ea3a8;
38
+ content: "\f463";
39
+ display: inline-block;
40
+ font: normal 20px/1 'dashicons';
41
+ -webkit-font-smoothing: antialiased;
42
+ -moz-osx-font-smoothing: grayscale;
43
+ vertical-align: top;
44
+ animation: rotation 2s infinite linear;
45
+ margin: 5px -2px 0 5px;
46
+ font-weight: revert;
47
+ }
48
+
49
+ .astra-sites-import-screen .import-steps {
50
+ padding: 1.5em 1.5em 1em 1em;
51
+ }
52
+
53
+ .astra-sites-import-screen .import-step.processing:before {
54
+ content: "\f463";
55
+ animation: rotation 2s infinite linear;
56
+ }
57
+
58
+ .astra-sites-import-screen .import-step:before {
59
+ color: #9ea3a8;
60
+ content: "\f139";
61
+ display: inline-block;
62
+ font: normal 20px/1 'dashicons';
63
+ -webkit-font-smoothing: antialiased;
64
+ -moz-osx-font-smoothing: grayscale;
65
+ vertical-align: top;
66
+ font-weight: revert;
67
+ margin-left: 3px;
68
+ }
69
+
70
+ .astra-sites-import-screen .import-step.success::before {
71
+ content: "\f147";
72
+ color: #4CAF50;
73
+ }
74
+
75
+ .astra-sites-import-screen .import-step.fail::before {
76
+ color: #FF5722;
77
+ content: "\f335";
78
+ }
79
+
80
+ .astra-sites-import-screen .footer {
81
+ text-align: right;
82
+ padding: 10px 15px;
83
+ display: flex;
84
+ align-items: center;
85
+ justify-content: space-between;
86
+ position: relative;
87
+ }
88
+
89
+ .astra-sites-import-screen .content {
90
+ text-align: right;
91
+ padding: 2em 5em 4em 5em;
92
+ }
93
+
94
+ .astra-sites-import-screen .view-site-button .dashicons {
95
+ font-size: initial;
96
+ vertical-align: middle;
97
+ }
inc/assets/css/import-status.css ADDED
@@ -0,0 +1,97 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ #wpadminbar #astra-sites-import-status-admin-bar {
2
+ padding-left: 10px;
3
+ border-left: 1px solid #3d4349;
4
+ color: #fff;
5
+ }
6
+
7
+ .astra-sites-import-screen.failed .import-step:before {
8
+ content: "\f335";
9
+ color: #F44336;
10
+ }
11
+
12
+ .astra-sites-import-screen .dashicons-external {
13
+ font-size: inherit;
14
+ vertical-align: middle;
15
+ }
16
+
17
+ #astra-sites-import-status-admin-bar .dashicons {
18
+ font-family: 'dashicons';
19
+ display: inline-block;
20
+ line-height: 1;
21
+ font-weight: 400;
22
+ font-style: normal;
23
+ speak: none;
24
+ text-decoration: inherit;
25
+ text-transform: none;
26
+ text-rendering: auto;
27
+ -webkit-font-smoothing: antialiased;
28
+ -moz-osx-font-smoothing: grayscale;
29
+ font-size: 20px;
30
+ vertical-align: text-top;
31
+ text-align: center;
32
+ transition: color 0.1s ease-in;
33
+ margin-right: 5px;
34
+ }
35
+
36
+ #astra-sites-import-status-admin-bar .loading::before {
37
+ color: #9ea3a8;
38
+ content: "\f463";
39
+ display: inline-block;
40
+ font: normal 20px/1 'dashicons';
41
+ -webkit-font-smoothing: antialiased;
42
+ -moz-osx-font-smoothing: grayscale;
43
+ vertical-align: top;
44
+ animation: rotation 2s infinite linear;
45
+ margin: 5px 5px 0 -2px;
46
+ font-weight: revert;
47
+ }
48
+
49
+ .astra-sites-import-screen .import-steps {
50
+ padding: 1.5em 1em 1em 1.5em;
51
+ }
52
+
53
+ .astra-sites-import-screen .import-step.processing:before {
54
+ content: "\f463";
55
+ animation: rotation 2s infinite linear;
56
+ }
57
+
58
+ .astra-sites-import-screen .import-step:before {
59
+ color: #9ea3a8;
60
+ content: "\f139";
61
+ display: inline-block;
62
+ font: normal 20px/1 'dashicons';
63
+ -webkit-font-smoothing: antialiased;
64
+ -moz-osx-font-smoothing: grayscale;
65
+ vertical-align: top;
66
+ font-weight: revert;
67
+ margin-right: 3px;
68
+ }
69
+
70
+ .astra-sites-import-screen .import-step.success::before {
71
+ content: "\f147";
72
+ color: #4CAF50;
73
+ }
74
+
75
+ .astra-sites-import-screen .import-step.fail::before {
76
+ color: #FF5722;
77
+ content: "\f335";
78
+ }
79
+
80
+ .astra-sites-import-screen .footer {
81
+ text-align: left;
82
+ padding: 10px 15px;
83
+ display: flex;
84
+ align-items: center;
85
+ justify-content: space-between;
86
+ position: relative;
87
+ }
88
+
89
+ .astra-sites-import-screen .content {
90
+ text-align: left;
91
+ padding: 2em 5em 4em 5em;
92
+ }
93
+
94
+ .astra-sites-import-screen .view-site-button .dashicons {
95
+ font-size: initial;
96
+ vertical-align: middle;
97
+ }
inc/assets/js/admin-page.js CHANGED
@@ -170,6 +170,11 @@ var AstraSitesAjaxQueue = (function() {
170
 
171
  AstraSitesAdmin = {
172
 
 
 
 
 
 
173
  remaining_activate_plugins: [],
174
  required_plugins_original_list: [],
175
 
@@ -485,6 +490,132 @@ var AstraSitesAjaxQueue = (function() {
485
  $( document ).on( 'heartbeat-send', AstraSitesAdmin._sendHeartbeat );
486
  $( document ).on( 'heartbeat-tick', AstraSitesAdmin._heartbeatDone );
487
  $( document ).on('click' , '.ui-autocomplete .ui-menu-item', AstraSitesAdmin._show_search_term );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
488
  },
489
 
490
  _heartbeatDone: function( e, data ) {
@@ -1841,20 +1972,23 @@ var AstraSitesAjaxQueue = (function() {
1841
  }
1842
  },
1843
 
1844
- _resetData: function(event) {
1845
- event.preventDefault();
1846
 
1847
- AstraSitesAdmin.import_start_time = new Date();
1848
 
1849
- if( $( this ).hasClass('updating-message') ) {
1850
- return;
 
 
 
 
1851
  }
1852
 
 
 
1853
  $(this).addClass('updating-message installing').text( 'Importing..' );
1854
  $('body').addClass('importing-site');
1855
- $('.astra-sites-result-preview .inner > h3').text('We\'re importing your website.');
1856
- $('.install-theme-info').hide();
1857
- $('.ast-importing-wrap').show();
1858
  var output = '<div class="current-importing-status-title"></div><div class="current-importing-status-description"></div>';
1859
  $('.current-importing-status').html( output );
1860
 
@@ -2255,19 +2389,45 @@ var AstraSitesAjaxQueue = (function() {
2255
  if( false === response.success ) {
2256
  AstraSitesAdmin._importFailMessage( response.data, 'Import Complete Failed!' );
2257
  } else {
 
 
 
 
 
2258
 
2259
- $('body').removeClass('importing-site');
 
 
 
2260
 
2261
- var template = wp.template('astra-sites-site-import-success');
2262
- $('.astra-sites-result-preview .inner').html( template() );
 
 
2263
 
2264
- $('.rotating,.current-importing-status-wrap,.notice-warning').remove();
2265
- $('.astra-sites-result-preview').addClass('astra-sites-result-preview');
 
2266
 
2267
- // 5. Pass - Import Complete.
2268
- AstraSitesAdmin._importSuccessButton();
2269
- }
2270
- });
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2271
  },
2272
 
2273
  /**
@@ -3085,7 +3245,7 @@ var AstraSitesAjaxQueue = (function() {
3085
  var site_id = AstraSitesAdmin._get_id( $('#site-pages').attr( 'data-site-id') ) || '';
3086
 
3087
  $('.astra-sites-result-preview')
3088
- .removeClass('astra-sites-activate-license astra-sites-get-agency-bundle astra-sites-site-import-popup astra-sites-page-import-popup')
3089
  .addClass('preview-page-from-search-result')
3090
  .show();
3091
 
@@ -3259,7 +3419,7 @@ var AstraSitesAjaxQueue = (function() {
3259
  // Set compatibilities.
3260
  var compatibilities = astraSitesVars.compatibilities;
3261
 
3262
- AstraSitesAdmin.skip_and_import_popups = [];
3263
 
3264
  AstraSitesAdmin.required_plugins = response.data['required_plugins'];
3265
 
@@ -3286,7 +3446,6 @@ var AstraSitesAjaxQueue = (function() {
3286
  AstraSitesAdmin.skip_and_import_popups['astra-sites-dynamic-page'] = '';
3287
  }
3288
 
3289
-
3290
  // Release disabled class from import button.
3291
  $('.astra-demo-import')
3292
  .removeClass('disabled not-click-able')
@@ -3305,7 +3464,6 @@ var AstraSitesAjaxQueue = (function() {
3305
  var remaining_plugins = 0;
3306
  var required_plugins_markup = '';
3307
 
3308
-
3309
  /**
3310
  * Not Installed
3311
  *
@@ -3386,6 +3544,13 @@ var AstraSitesAjaxQueue = (function() {
3386
  return;
3387
  }
3388
 
 
 
 
 
 
 
 
3389
  $( '.astra-sites-page-import-popup .site-install-site-button, .preview-page-from-search-result .site-install-site-button' ).addClass('updating-message installing').text( 'Importing..' );
3390
 
3391
  AstraSitesAdmin.import_start_time = new Date();
@@ -3537,11 +3702,9 @@ var AstraSitesAjaxQueue = (function() {
3537
  },
3538
  success: function( response ){
3539
  if( response.success ) {
3540
- $('body').removeClass('importing-site');
3541
- $('.rotating,.current-importing-status-wrap,.notice-warning').remove();
3542
-
3543
- var template = wp.template('astra-sites-page-import-success');
3544
- $('.astra-sites-result-preview .inner').html( template( response.data ) );
3545
  } else {
3546
  AstraSitesAdmin._importFailMessage( response.data, 'Page Rest API Request Failed!' );
3547
  }
170
 
171
  AstraSitesAdmin = {
172
 
173
+ subscribe_status: false,
174
+ site_import_status: false,
175
+ page_import_status: false,
176
+ imported_page_data: null,
177
+
178
  remaining_activate_plugins: [],
179
  required_plugins_original_list: [],
180
 
490
  $( document ).on( 'heartbeat-send', AstraSitesAdmin._sendHeartbeat );
491
  $( document ).on( 'heartbeat-tick', AstraSitesAdmin._heartbeatDone );
492
  $( document ).on('click' , '.ui-autocomplete .ui-menu-item', AstraSitesAdmin._show_search_term );
493
+
494
+ $( document ).on('click', '.button-subscription-submit', AstraSitesAdmin._subscribe );
495
+ $( document ).on('click' , '.button-subscription-skip', AstraSitesAdmin._hide_subscription_popup );
496
+ $( document ).on('blur' , '.subscription-input input[type="email"], .subscription-input input[type="text"], .subscription-input [name="user_type"]', AstraSitesAdmin._validate_fields );
497
+
498
+ },
499
+
500
+ _validate_fields: function( event ) {
501
+ var first_name_field = $( '.subscription-input input[name="first_name"]' ) || '';
502
+ var user_type = $( '.subscription-input [name="user_type"]' ) || '';
503
+ var email_field = $( '.subscription-input input[name="email"]' ) || '';
504
+
505
+ $( '.subscription-input input, .subscription-input select' ).removeClass('error');
506
+
507
+ if( ! first_name_field.val() ) {
508
+ first_name_field.addClass('error');
509
+ if( event && $( event.target ).hasClass( 'subscription-input-user-name' ) ) {
510
+ return;
511
+ }
512
+ }
513
+
514
+ if( ! user_type.val() ) {
515
+ user_type.addClass('error');
516
+ if( event && $( event.target ).hasClass( 'subscription-input-user-type' ) ) {
517
+ return;
518
+ }
519
+ }
520
+
521
+
522
+ if( ! email_field.val() || false === AstraSitesAdmin.isValidEmail( email_field.val() ) ) {
523
+ email_field.addClass('error');
524
+ if( event && $( event.target ).hasClass( 'subscription-input-user-email' ) ) {
525
+ return;
526
+ }
527
+ }
528
+ },
529
+
530
+ _hide_subscription_popup: function( event ) {
531
+ $('.subscription-popup').hide();
532
+ $('.astra-sites-result-preview .default').show();
533
+
534
+ AstraSitesAdmin.subscribe_status = true;
535
+
536
+ if( 'astra-sites' === AstraSitesAdmin.action_slug ) {
537
+ $('.ast-importing-wrap').show();
538
+ $( '.astra-sites-result-preview' ).removeClass( 'astra-sites-subscription-popup' );
539
+ $( '.ast-actioms-wrap .button' ).hide();
540
+ $( '.ast-actioms-wrap .site-install-site-button' ).show();
541
+ $( '.ast-actioms-wrap .site-import-cancel' ).show();
542
+
543
+ if( true === AstraSitesAdmin.site_import_status ) {
544
+ AstraSitesAdmin.import_complete();
545
+ }
546
+ } else {
547
+ if( true === AstraSitesAdmin.page_import_status ) {
548
+ AstraSitesAdmin.page_import_complete();
549
+ }
550
+ }
551
+
552
+ astraSitesVars.subscribed = 'yes';
553
+ },
554
+
555
+ _subscribe: function( event ) {
556
+
557
+ var submit_button = $(this);
558
+
559
+ if( submit_button.hasClass( 'submitting' ) ) {
560
+ return;
561
+ }
562
+
563
+ var subscription_first_name = $( '.subscription-input input[name="first_name"]' ).val() || '';
564
+ var subscription_last_name = $( '.subscription-input input[name="last_name"]' ).val() || '';
565
+ var subscription_email = $( '.subscription-input input[name="email"]' ).val() || '';
566
+ var subscription_type = $( '.subscription-input [name="user_type"]' ).val() || '';
567
+
568
+ AstraSitesAdmin._validate_fields();
569
+
570
+ if( ! subscription_first_name || ! subscription_type ) {
571
+ return;
572
+ }
573
+
574
+ if( ! subscription_email || false === AstraSitesAdmin.isValidEmail( subscription_email ) ) {
575
+ return;
576
+ }
577
+
578
+ submit_button.addClass( 'submitting' );
579
+
580
+ var subscription_fields = {
581
+ page_builder: astraSitesVars.default_page_builder_data.name,
582
+ first_name: subscription_first_name,
583
+ last_name: subscription_last_name,
584
+ email: subscription_email,
585
+ type: subscription_type,
586
+ };
587
+
588
+ $.ajax({
589
+ url : astraSitesVars.ajaxurl,
590
+ type : 'POST',
591
+ data : {
592
+ action : 'astra-sites-update-subscription',
593
+ _ajax_nonce : astraSitesVars._ajax_nonce,
594
+ data: JSON.stringify( subscription_fields ),
595
+ },
596
+ beforeSend: function() {
597
+ console.groupCollapsed( 'Email Subscription' );
598
+ },
599
+ })
600
+ .done(function ( response ) {
601
+ AstraSitesAdmin._log( response );
602
+
603
+ submit_button.removeClass( 'submitting' ).addClass('submitted');
604
+ $('.astra-sites-result-preview .dashicons').removeClass('dashicons-update').addClass('dashicons-yes')
605
+ setTimeout( function() {
606
+ AstraSitesAdmin._hide_subscription_popup();
607
+ }, 500);
608
+ console.groupEnd();
609
+ });
610
+
611
+ },
612
+
613
+ isValidEmail: function(eMail) {
614
+ if (/^[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+@[a-zA-Z0-9-]+(?:\.[a-zA-Z0-9-]+)*$/.test( eMail ) ) {
615
+ return true;
616
+ }
617
+
618
+ return false;
619
  },
620
 
621
  _heartbeatDone: function( e, data ) {
1972
  }
1973
  },
1974
 
1975
+ _resetData: function() {
 
1976
 
1977
+ $('.install-theme-info').hide();
1978
 
1979
+ if( astraSitesVars.isWhiteLabeled || astraSitesVars.isPro || astraSitesVars.subscribed ) {
1980
+ AstraSitesAdmin.subscribe_status = true;
1981
+ $('.ast-importing-wrap').show();
1982
+ } else {
1983
+ $( '.subscription-popup' ).show();
1984
+ $( '.astra-sites-result-preview .default').hide();
1985
  }
1986
 
1987
+ AstraSitesAdmin.import_start_time = new Date();
1988
+
1989
  $(this).addClass('updating-message installing').text( 'Importing..' );
1990
  $('body').addClass('importing-site');
1991
+
 
 
1992
  var output = '<div class="current-importing-status-title"></div><div class="current-importing-status-description"></div>';
1993
  $('.current-importing-status').html( output );
1994
 
2389
  if( false === response.success ) {
2390
  AstraSitesAdmin._importFailMessage( response.data, 'Import Complete Failed!' );
2391
  } else {
2392
+ AstraSitesAdmin.site_import_status = true;
2393
+ AstraSitesAdmin.import_complete();
2394
+ }
2395
+ });
2396
+ },
2397
 
2398
+ page_import_complete: function() {
2399
+ if( false === AstraSitesAdmin.subscribe_status ) {
2400
+ return;
2401
+ }
2402
 
2403
+ $('body').removeClass('importing-site');
2404
+ $('.rotating, .current-importing-status-wrap,.notice-warning').remove();
2405
+ var template = wp.template('astra-sites-page-import-success');
2406
+ $('.astra-sites-result-preview .inner').html( template( AstraSitesAdmin.imported_page_data ) );
2407
 
2408
+ AstraSitesAdmin.page_import_status = false;
2409
+ AstraSitesAdmin.subscribe_status = false;
2410
+ },
2411
 
2412
+ import_complete: function() {
2413
+
2414
+ if( false === AstraSitesAdmin.subscribe_status ) {
2415
+ return;
2416
+ }
2417
+
2418
+ $('body').removeClass('importing-site');
2419
+
2420
+ var template = wp.template('astra-sites-site-import-success');
2421
+ $('.astra-sites-result-preview .inner').html( template() );
2422
+
2423
+ $('.rotating,.current-importing-status-wrap,.notice-warning').remove();
2424
+ $('.astra-sites-result-preview').addClass('astra-sites-result-preview');
2425
+
2426
+ // 5. Pass - Import Complete.
2427
+ AstraSitesAdmin._importSuccessButton();
2428
+
2429
+ AstraSitesAdmin.site_import_status = false;
2430
+ AstraSitesAdmin.subscribe_status = false;
2431
  },
2432
 
2433
  /**
3245
  var site_id = AstraSitesAdmin._get_id( $('#site-pages').attr( 'data-site-id') ) || '';
3246
 
3247
  $('.astra-sites-result-preview')
3248
+ .removeClass('astra-sites-subscription-popup astra-sites-activate-license astra-sites-get-agency-bundle astra-sites-site-import-popup astra-sites-page-import-popup')
3249
  .addClass('preview-page-from-search-result')
3250
  .show();
3251
 
3419
  // Set compatibilities.
3420
  var compatibilities = astraSitesVars.compatibilities;
3421
 
3422
+ AstraSitesAdmin.skip_and_import_popups = [ ];
3423
 
3424
  AstraSitesAdmin.required_plugins = response.data['required_plugins'];
3425
 
3446
  AstraSitesAdmin.skip_and_import_popups['astra-sites-dynamic-page'] = '';
3447
  }
3448
 
 
3449
  // Release disabled class from import button.
3450
  $('.astra-demo-import')
3451
  .removeClass('disabled not-click-able')
3464
  var remaining_plugins = 0;
3465
  var required_plugins_markup = '';
3466
 
 
3467
  /**
3468
  * Not Installed
3469
  *
3544
  return;
3545
  }
3546
 
3547
+ if( astraSitesVars.isWhiteLabeled || astraSitesVars.isPro || astraSitesVars.subscribed ) {
3548
+ AstraSitesAdmin.subscribe_status = true;
3549
+ } else {
3550
+ $( '.subscription-popup' ).show();
3551
+ $( '.astra-sites-result-preview .default').hide();
3552
+ }
3553
+
3554
  $( '.astra-sites-page-import-popup .site-install-site-button, .preview-page-from-search-result .site-install-site-button' ).addClass('updating-message installing').text( 'Importing..' );
3555
 
3556
  AstraSitesAdmin.import_start_time = new Date();
3702
  },
3703
  success: function( response ){
3704
  if( response.success ) {
3705
+ AstraSitesAdmin.page_import_status = true;
3706
+ AstraSitesAdmin.imported_page_data = response.data
3707
+ AstraSitesAdmin.page_import_complete();
 
 
3708
  } else {
3709
  AstraSitesAdmin._importFailMessage( response.data, 'Page Rest API Request Failed!' );
3710
  }
inc/assets/js/import-status.js ADDED
@@ -0,0 +1,102 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ (function($){
2
+
3
+ AstraSitesImportStatus = {
4
+ timer: null,
5
+ ajax_in_process: false,
6
+ current_step: null,
7
+ interval: $( '.astra-sites-import-screen' ).length ? 1000 : 10000,
8
+
9
+ /**
10
+ * Init
11
+ */
12
+ init: function()
13
+ {
14
+ this.start();
15
+ },
16
+
17
+ /**
18
+ * Start
19
+ */
20
+ start: function() {
21
+ AstraSitesImportStatus.timer = setInterval( AstraSitesImportStatus.check_status, AstraSitesImportStatus.interval );
22
+ },
23
+
24
+ /**
25
+ * Check Status
26
+ */
27
+ check_status: function() {
28
+ if( false === AstraSitesImportStatus.ajax_in_process ) {
29
+ AstraSitesImportStatus.ajax_in_process = true;
30
+ AstraSitesImportStatus._ajax_request();
31
+ }
32
+ },
33
+
34
+ /**
35
+ * Ajax Request
36
+ */
37
+ _ajax_request: function() {
38
+ $.ajax({
39
+ url: AstraSitesImportStatusVars.ajaxurl,
40
+ type: 'POST',
41
+ data: {
42
+ 'action' : 'astra_sites_check_import_status',
43
+ '_ajax_nonce' : AstraSitesImportStatusVars._ajax_nonce,
44
+ },
45
+ })
46
+ .done(function (result) {
47
+
48
+ AstraSitesImportStatus.ajax_in_process = false;
49
+
50
+ // Admin Bar UI markup.
51
+ if( "complete" === result.data.response.step || "fail" === result.data.response.step ) {
52
+ AstraSitesImportStatus.stop();
53
+
54
+ var response_message = '<span class="dashicons dashicons-no-alt"></span> Site Import Failed';
55
+ if( "complete" === result.data.response.step ) {
56
+ response_message = '<span class="dashicons dashicons-yes"></span>' + response_message;
57
+ }
58
+
59
+ $('#astra-sites-import-status-admin-bar').html( response_message );
60
+
61
+ } else {
62
+ $('#astra-sites-import-status-admin-bar').html( '<span class="loading"></span>' + result.data.response.message );
63
+ }
64
+
65
+ // Admin page UI markup.
66
+ var currentStep = $( '.import-step[data-step="' + result.data.response.step + '"]' );
67
+ if( currentStep.length ) {
68
+ if( "complete" === result.data.response.step || "fail" === result.data.response.step ) {
69
+ $( '.import-step' ).removeClass( 'processing' ).addClass( 'success' );;
70
+ } else if( AstraSitesImportStatus.current_step !== result.data.response.step ) {
71
+ AstraSitesImportStatus.current_step = result.data.response.step;
72
+
73
+ currentStep.prevAll().removeClass('processing').addClass('success');
74
+ currentStep.addClass('processing');
75
+ }
76
+ }
77
+ })
78
+ .fail(function (err) {
79
+ AstraSitesImportStatus.ajax_in_process = false;
80
+
81
+ // Stop.
82
+ AstraSitesImportStatus.stop();
83
+ });
84
+ },
85
+
86
+ /**
87
+ * Step
88
+ */
89
+ stop: function() {
90
+ clearInterval(AstraSitesImportStatus.timer);
91
+ }
92
+
93
+ };
94
+
95
+ /**
96
+ * Initialize AstraSitesImportStatus
97
+ */
98
+ $(function(){
99
+ AstraSitesImportStatus.init();
100
+ });
101
+
102
+ })(jQuery);
inc/classes/batch-import/class-astra-sites-batch-import.php ADDED
@@ -0,0 +1,67 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Batch Import
4
+ *
5
+ * @package Astra Sites
6
+ * @since x.x.x
7
+ */
8
+
9
+ if ( ! class_exists( 'Astra_Sites_Batch_Import' ) ) :
10
+
11
+ /**
12
+ * Batch Import
13
+ *
14
+ * @since x.x.x
15
+ */
16
+ class Astra_Sites_Batch_Import {
17
+
18
+ /**
19
+ * Instance
20
+ *
21
+ * @since x.x.x
22
+ * @var object Class object.
23
+ * @access private
24
+ */
25
+ private static $instance;
26
+
27
+ /**
28
+ * Initiator
29
+ *
30
+ * @since x.x.x
31
+ * @return object initialized object of class.
32
+ */
33
+ public static function get_instance() {
34
+ if ( ! isset( self::$instance ) ) {
35
+ self::$instance = new self();
36
+ }
37
+ return self::$instance;
38
+ }
39
+
40
+ /**
41
+ * Constructor
42
+ *
43
+ * @since x.x.x
44
+ */
45
+ public function __construct() {
46
+
47
+ // WP Core Files.
48
+ require_once ABSPATH . 'wp-admin/includes/image.php';
49
+
50
+ // Image Downloader.
51
+ require_once ASTRA_SITES_DIR . 'inc/importers/batch-processing/helpers/class-astra-sites-image-importer.php';
52
+
53
+ // Batch Processing.
54
+ require_once ASTRA_SITES_DIR . 'inc/importers/batch-processing/helpers/class-wp-async-request.php';
55
+ require_once ASTRA_SITES_DIR . 'inc/importers/batch-processing/helpers/class-wp-background-process.php';
56
+
57
+ // Site Import Batch.
58
+ require_once ASTRA_SITES_DIR . 'inc/classes/batch-import/class-astra-sites-batch-site-import.php';
59
+ }
60
+ }
61
+
62
+ /**
63
+ * Kicking this off by calling 'get_instance()' method
64
+ */
65
+ Astra_Sites_Batch_Import::get_instance();
66
+
67
+ endif;
inc/classes/batch-import/class-astra-sites-batch-site-import-batch.php ADDED
@@ -0,0 +1,59 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Complete Site Import Batch Process
4
+ *
5
+ * @package Astra Sites
6
+ * @since x.x.x
7
+ */
8
+
9
+ if ( ! class_exists( 'Astra_Sites_Batch_Site_Import_Batch' ) && class_exists( 'WP_Background_Process' ) ) :
10
+
11
+ /**
12
+ * Site Import Batch
13
+ *
14
+ * @since x.x.x
15
+ */
16
+ class Astra_Sites_Batch_Site_Import_Batch extends WP_Background_Process {
17
+
18
+ /**
19
+ * Batch Action
20
+ *
21
+ * @var string
22
+ */
23
+ protected $action = 'astra_sites_site_import_batch';
24
+
25
+ /**
26
+ * Task
27
+ *
28
+ * Override this method to perform any actions required on each
29
+ * queue item. Return the modified item for further processing
30
+ * in the next pass through. Or, return false to remove the
31
+ * item from the queue.
32
+ *
33
+ * @since x.x.x
34
+ *
35
+ * @param array $data Queue item object.
36
+ * @return mixed
37
+ */
38
+ protected function task( $data ) {
39
+
40
+ $instance = $data['instance'];
41
+
42
+ if ( 'import_queue_1' === $data['method'] ) {
43
+ $instance->import_queue_1( $data['args'] );
44
+ }
45
+
46
+ if ( 'import_queue_2' === $data['method'] ) {
47
+ $instance->import_queue_2( $data['args'] );
48
+ }
49
+
50
+ if ( 'import_queue_3' === $data['method'] ) {
51
+ $instance->import_queue_3( $data['args'] );
52
+ }
53
+
54
+ return false;
55
+ }
56
+
57
+ }
58
+
59
+ endif;
inc/classes/batch-import/class-astra-sites-batch-site-import.php ADDED
@@ -0,0 +1,709 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Single Page Background Process
4
+ *
5
+ * @package Astra Sites
6
+ * @since x.x.x
7
+ */
8
+
9
+ if ( ! class_exists( 'Astra_Sites_Batch_Site_Import' ) ) :
10
+
11
+ /**
12
+ * Background Process
13
+ *
14
+ * @since x.x.x
15
+ */
16
+ class Astra_Sites_Batch_Site_Import {
17
+
18
+ /**
19
+ * Instance
20
+ *
21
+ * @since x.x.x
22
+ *
23
+ * @access private
24
+ * @var object Class object.
25
+ */
26
+ private static $instance;
27
+
28
+ /**
29
+ * Current Site Data
30
+ *
31
+ * @since x.x.x
32
+ *
33
+ * @access private
34
+ * @var object Class object.
35
+ */
36
+ public $current_site_data;
37
+
38
+ /**
39
+ * Process All
40
+ *
41
+ * @since x.x.x
42
+ * @var object Class object.
43
+ * @access public
44
+ */
45
+ public static $site_import_batch;
46
+
47
+ /**
48
+ * Initiator
49
+ *
50
+ * @since x.x.x
51
+ *
52
+ * @return object initialized object of class.
53
+ */
54
+ public static function get_instance() {
55
+ if ( ! isset( self::$instance ) ) {
56
+ self::$instance = new self();
57
+ }
58
+ return self::$instance;
59
+ }
60
+
61
+ /**
62
+ * Constructor
63
+ *
64
+ * @since x.x.x
65
+ */
66
+ public function __construct() {
67
+
68
+ require_once ASTRA_SITES_DIR . 'inc/classes/batch-import/class-astra-sites-batch-site-import-batch.php';
69
+
70
+ /** WordPress Plugin Administration API */
71
+ require_once ABSPATH . 'wp-admin/includes/plugin.php';
72
+ require_once ABSPATH . 'wp-admin/includes/update.php';
73
+
74
+ self::$site_import_batch = new Astra_Sites_Batch_Site_Import_Batch();
75
+
76
+ add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ) );
77
+ add_action( 'admin_bar_menu', array( $this, 'admin_bar_menu_item' ), 99 );
78
+ add_action( 'wp_ajax_astra_sites_check_import_status', array( $this, 'check_import_status' ) );
79
+ add_filter( 'wp_astra_sites_site_import_batch_cron_interval', array( $this, 'set_cron_interval' ) );
80
+
81
+ $status = $this->get_status();
82
+
83
+ if (
84
+ ! empty( $status ) &&
85
+ ( isset( $status['step'] ) && ( 'complete' !== $status['step'] && 'fail' !== $status['step'] ) )
86
+ ) {
87
+ add_filter( 'astra_sites_process_sync_batch', '__return_false' );
88
+ add_filter( 'astra_sites_process_auto_sync_library', '__return_false' );
89
+ }
90
+ }
91
+
92
+ /**
93
+ * Set Cron Interval
94
+ *
95
+ * @param int $interval Cron interval time in minutes.
96
+ */
97
+ public function set_cron_interval( $interval = 5 ) {
98
+ return 1;
99
+ }
100
+
101
+ /**
102
+ * Check Import Status
103
+ */
104
+ public function check_import_status() {
105
+
106
+ // Verify Nonce.
107
+ check_ajax_referer( 'astra-sites-import-status', '_ajax_nonce' );
108
+
109
+ $schedule = wp_get_scheduled_event( 'wp_astra_sites_site_import_batch_cron' );
110
+ $time = '';
111
+ if ( $schedule ) {
112
+ $time = human_time_diff( $schedule->timestamp );
113
+ }
114
+
115
+ wp_send_json_success(
116
+ array(
117
+ 'response' => $this->get_status(),
118
+ 'time' => $time,
119
+ )
120
+ );
121
+ }
122
+
123
+ /**
124
+ * Get status
125
+ */
126
+ public function get_status() {
127
+ return get_option( 'astra_sites_site_import_batch_status', array() );
128
+ }
129
+
130
+ /**
131
+ * Update Import Status
132
+ *
133
+ * @param array $args Update status arguments.
134
+ */
135
+ public function update_status( $args = array() ) {
136
+
137
+ $status = $this->get_status();
138
+
139
+ $args = wp_parse_args( $args, $status );
140
+
141
+ update_option( 'astra_sites_site_import_batch_status', $args );
142
+ }
143
+
144
+ /**
145
+ * Admin bar menu item
146
+ *
147
+ * @param instance $admin_bar Admin bar.
148
+ */
149
+ public function admin_bar_menu_item( $admin_bar = '' ) {
150
+ if ( ! is_admin() ) {
151
+ return;
152
+ }
153
+
154
+ $status = $this->get_status();
155
+ if ( empty( $status ) || ( isset( $status['step'] ) && 'complete' === $status['step'] ) ) {
156
+ return;
157
+ }
158
+
159
+ $admin_bar->add_menu(
160
+ array(
161
+ 'title' => '<a id="astra-sites-import-status-admin-bar" href="' . admin_url( 'themes.php?page=starter-templates&action=site-import' ) . '">' . esc_html__( 'Import Status', 'astra-sites' ) . '</a>',
162
+ 'id' => 'astra-sites-menu-item',
163
+ 'parent' => false,
164
+ )
165
+ );
166
+ }
167
+
168
+ /**
169
+ * Enqueue Scripts
170
+ */
171
+ public function enqueue_scripts() {
172
+
173
+ wp_enqueue_style( 'astra-sites-import-status', ASTRA_SITES_URI . 'inc/assets/css/import-status.css', null, ASTRA_SITES_VER, 'all' );
174
+
175
+ $status = $this->get_status();
176
+ if ( ! empty( $status ) && ( isset( $status['step'] ) && 'complete' !== $status['step'] ) ) {
177
+ wp_enqueue_script( 'astra-sites-import-status', ASTRA_SITES_URI . 'inc/assets/js/import-status.js', array( 'jquery' ), ASTRA_SITES_VER, true );
178
+ wp_localize_script(
179
+ 'astra-sites-import-status',
180
+ 'AstraSitesImportStatusVars',
181
+ array(
182
+ 'ajaxurl' => esc_url( admin_url( 'admin-ajax.php' ) ),
183
+ '_ajax_nonce' => wp_create_nonce( 'astra-sites-import-status' ),
184
+ )
185
+ );
186
+ }
187
+ }
188
+
189
+ /**
190
+ * Import
191
+ *
192
+ * @param int $site_id Site ID.
193
+ * @param boolean $reset Reset and import.
194
+ */
195
+ public function import( $site_id = 0, $reset = false ) {
196
+
197
+ /**
198
+ * Validate site ID.
199
+ */
200
+ if ( ! $site_id ) {
201
+ $this->update_status(
202
+ array(
203
+ 'step' => 'fail',
204
+ 'message' => esc_html__( 'Invalid site ID.', 'astra-sites' ),
205
+ 'end_time' => time(),
206
+ )
207
+ );
208
+ return null;
209
+ }
210
+
211
+ /**
212
+ * Reset
213
+ */
214
+ if ( false === $reset ) {
215
+ $status = $this->get_status();
216
+
217
+ if ( ! empty( $status ) ) {
218
+ if ( isset( $status['step'] ) && 'complete' === $status['step'] ) {
219
+ return array(
220
+ 'status' => 'complete',
221
+ 'message' => esc_html__( 'Site import process is complete.', 'astra-sites' ),
222
+ );
223
+ } else {
224
+ return array(
225
+ 'status' => 'processing',
226
+ 'message' => esc_html__( 'Site import is in process.', 'astra-sites' ),
227
+ );
228
+ }
229
+ }
230
+ }
231
+
232
+ // Set Site Data.
233
+ $demo_data = $this->get_site_data( $site_id );
234
+
235
+ // Invalid Site ID.
236
+ if ( is_wp_error( $demo_data ) ) {
237
+ $this->update_status(
238
+ array(
239
+ 'step' => 'fail',
240
+ 'status' => 'invalid_site_id',
241
+ 'end_time' => time(),
242
+ )
243
+ );
244
+ return;
245
+ } elseif ( isset( $demo_data['site-type'] ) && 'free' !== $demo_data['site-type'] ) {
246
+ $this->update_status(
247
+ array(
248
+ 'step' => 'fail',
249
+ 'status' => 'premium_sites',
250
+ 'end_time' => time(),
251
+ )
252
+ );
253
+ return;
254
+ }
255
+
256
+ // Preparing Import.
257
+ $this->update_status(
258
+ array(
259
+ 'step' => 'preparing',
260
+ 'message' => esc_html__( 'Preparing Site Import', 'astra-sites' ),
261
+ 'start_time' => time(),
262
+ )
263
+ );
264
+
265
+ // Process Site Import.
266
+ $this->process_site_import_batch( $site_id );
267
+
268
+ return array(
269
+ 'status' => 'started',
270
+ 'message' => esc_html__( 'Site import started.', 'astra-sites' ),
271
+ );
272
+ }
273
+
274
+ /**
275
+ * Process Batch
276
+ *
277
+ * @since x.x.x
278
+ *
279
+ * @param int $site_id Site ID.
280
+ * @return mixed
281
+ */
282
+ public function process_site_import_batch( $site_id = 0 ) {
283
+
284
+ self::$site_import_batch->push_to_queue(
285
+ array(
286
+ 'instance' => self::get_instance(),
287
+ 'method' => 'import_queue_1',
288
+ 'args' => $site_id,
289
+ )
290
+ );
291
+ self::$site_import_batch->push_to_queue(
292
+ array(
293
+ 'instance' => self::get_instance(),
294
+ 'method' => 'import_queue_2',
295
+ 'args' => $site_id,
296
+ )
297
+ );
298
+ self::$site_import_batch->push_to_queue(
299
+ array(
300
+ 'instance' => self::get_instance(),
301
+ 'method' => 'import_queue_3',
302
+ 'args' => $site_id,
303
+ )
304
+ );
305
+
306
+ self::$site_import_batch->save()->dispatch();
307
+ }
308
+
309
+ /**
310
+ * Import Batch One
311
+ *
312
+ * @param int $site_id Site ID.
313
+ */
314
+ public function import_queue_1( $site_id = 0 ) {
315
+
316
+ // Install Required Plugins.
317
+ $this->update_status(
318
+ array(
319
+ 'step' => 'install_plugins',
320
+ 'message' => esc_html__( 'Installing Required Plugins', 'astra-sites' ),
321
+ )
322
+ );
323
+ $this->install_required_plugins( $site_id );
324
+
325
+ }
326
+
327
+ /**
328
+ * Import Batch Two
329
+ *
330
+ * @param int $site_id Site ID.
331
+ */
332
+ public function import_queue_2( $site_id = 0 ) {
333
+
334
+ $this->update_status(
335
+ array(
336
+ 'step' => 'import_contact_forms',
337
+ 'message' => esc_html__( 'Importing Contact Forms', 'astra-sites' ),
338
+ )
339
+ );
340
+
341
+ // Import Flows & Steps.
342
+ $this->import_flows_and_steps( $site_id );
343
+
344
+ // Import WP Forms.
345
+ $this->import_wp_forms( $site_id );
346
+
347
+ $this->update_status(
348
+ array(
349
+ 'step' => 'import_customizer_settings',
350
+ 'message' => esc_html__( 'Setting up the Theme', 'astra-sites' ),
351
+ )
352
+ );
353
+
354
+ // Import Customizer Settings.
355
+ $this->import_customizer_settings( $site_id );
356
+
357
+ $this->update_status(
358
+ array(
359
+ 'step' => 'import_content',
360
+ 'message' => esc_html__( 'Importing Media, Posts, and Pages', 'astra-sites' ),
361
+ )
362
+ );
363
+
364
+ // Import XML.
365
+ $this->import_xml( $site_id );
366
+
367
+ // Import Site Options.
368
+ $this->update_status(
369
+ array(
370
+ 'step' => 'import_options',
371
+ 'message' => esc_html__( 'Importing Site Options', 'astra-sites' ),
372
+ )
373
+ );
374
+ $this->import_site_options( $site_id );
375
+
376
+ // Import Widgets.
377
+ $this->update_status(
378
+ array(
379
+ 'step' => 'import_widgets',
380
+ 'message' => esc_html__( 'Importing Sidebar and Widgets', 'astra-sites' ),
381
+ )
382
+ );
383
+ $this->import_widgets( $site_id );
384
+
385
+ }
386
+
387
+ /**
388
+ * Import Batch Three
389
+ *
390
+ * @param int $site_id Site ID.
391
+ */
392
+ public function import_queue_3( $site_id = 0 ) {
393
+
394
+ // Import End.
395
+ $this->import_end( $site_id );
396
+
397
+ $this->update_status(
398
+ array(
399
+ 'step' => 'complete',
400
+ 'message' => esc_html__( 'Import Complete', 'astra-sites' ),
401
+ 'end_time' => time(),
402
+ )
403
+ );
404
+ }
405
+
406
+ /**
407
+ * Validate ID
408
+ *
409
+ * @param int $site_id Site ID.
410
+ */
411
+ public function validate_id( $site_id ) {
412
+ $site_id = isset( $site_id ) ? absint( $site_id ) : 0;
413
+ if ( ! $site_id ) {
414
+ $this->update_status(
415
+ array(
416
+ 'step' => 'fail',
417
+ 'message' => esc_html__( 'Invalid site ID.', 'astra-sites' ),
418
+ 'end_time' => time(),
419
+ )
420
+ );
421
+ return null;
422
+ }
423
+ }
424
+
425
+ /**
426
+ * Set site data
427
+ *
428
+ * @param int $site_id Site ID.
429
+ */
430
+ public function set_site_data( $site_id ) {
431
+
432
+ }
433
+
434
+ /**
435
+ * Install Required Plugins
436
+ */
437
+ public function install_required_plugins() {
438
+
439
+ /** WordPress Plugin Administration API */
440
+ require_once ABSPATH . 'wp-admin/includes/plugin.php';
441
+ require_once ABSPATH . 'wp-admin/includes/update.php';
442
+
443
+ $demo_data = get_option( 'astra_sites_import_data', array() );
444
+
445
+ if ( isset( $demo_data['required-plugins'] ) ) {
446
+
447
+ $plugins = (array) $demo_data['required-plugins'];
448
+
449
+ if ( ! empty( $plugins ) ) {
450
+ $plugin_status = Astra_Sites::get_instance()->required_plugin( $plugins, $demo_data['astra-site-options-data'], $demo_data['astra-enabled-extensions'] );
451
+
452
+ // Install Plugins.
453
+ if ( ! empty( $plugin_status['required_plugins']['notinstalled'] ) ) {
454
+
455
+ foreach ( $plugin_status['required_plugins']['notinstalled'] as $key => $plugin ) {
456
+ if ( isset( $plugin['slug'] ) ) {
457
+
458
+ // Install plugin.
459
+ $this->install_plugin( $plugin );
460
+
461
+ // Activate plugin.
462
+ Astra_Sites::get_instance()->required_plugin_activate( $plugin['init'], $demo_data['astra-site-options-data'], $demo_data['astra-enabled-extensions'] );
463
+ }
464
+ }
465
+ }
466
+
467
+ // Activate Plugins.
468
+ if ( ! empty( $plugin_status['required_plugins']['inactive'] ) ) {
469
+ foreach ( $plugin_status['required_plugins']['inactive'] as $key => $plugin ) {
470
+ if ( isset( $plugin['init'] ) ) {
471
+ Astra_Sites::get_instance()->required_plugin_activate( $plugin['init'], $demo_data['astra-site-options-data'], $demo_data['astra-enabled-extensions'] );
472
+ }
473
+ }
474
+ }
475
+ }
476
+ }
477
+ }
478
+
479
+ /**
480
+ * Install Plugin
481
+ *
482
+ * @param array $plugin Required Plugin.
483
+ */
484
+ public function install_plugin( $plugin = array() ) {
485
+
486
+ if ( ! isset( $plugin['slug'] ) || empty( $plugin['slug'] ) ) {
487
+ return esc_html__( 'Invalid plugin slug', 'astra-sites' );
488
+ }
489
+
490
+ include_once ABSPATH . 'wp-admin/includes/plugin.php';
491
+ include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
492
+ include_once ABSPATH . 'wp-admin/includes/plugin-install.php';
493
+
494
+ $api = plugins_api(
495
+ 'plugin_information',
496
+ array(
497
+ 'slug' => sanitize_key( wp_unslash( $plugin['slug'] ) ),
498
+ 'fields' => array(
499
+ 'sections' => false,
500
+ ),
501
+ )
502
+ );
503
+
504
+ if ( is_wp_error( $api ) ) {
505
+ $status['errorMessage'] = $api->get_error_message();
506
+ return $status;
507
+ }
508
+
509
+ $skin = new WP_Ajax_Upgrader_Skin();
510
+ $upgrader = new Plugin_Upgrader( $skin );
511
+ $result = $upgrader->install( $api->download_link );
512
+
513
+ if ( is_wp_error( $result ) ) {
514
+ return $result->get_error_message();
515
+ } elseif ( is_wp_error( $skin->result ) ) {
516
+ return $skin->result->get_error_message();
517
+ } elseif ( $skin->get_errors()->has_errors() ) {
518
+ return $skin->get_error_messages();
519
+ } elseif ( is_null( $result ) ) {
520
+ global $wp_filesystem;
521
+
522
+ // Pass through the error from WP_Filesystem if one was raised.
523
+ if ( $wp_filesystem instanceof WP_Filesystem_Base && is_wp_error( $wp_filesystem->errors ) && $wp_filesystem->errors->has_errors() ) {
524
+ return esc_html( $wp_filesystem->errors->get_error_message() );
525
+ }
526
+
527
+ return esc_html__( 'Unable to connect to the filesystem. Please confirm your credentials.', 'astra-sites' );
528
+ }
529
+
530
+ /* translators: %s plugin name. */
531
+ return sprintf( __( 'Successfully installed "%s" plugin!', 'astra-sites' ), $api->name );
532
+ }
533
+
534
+ /**
535
+ * Backup Customizer Settings
536
+ */
537
+ public function backup_customizer_settings() {
538
+ Astra_Sites::get_instance()->backup_settings();
539
+ }
540
+
541
+ /**
542
+ * Import Flows and Steps
543
+ */
544
+ public function import_flows_and_steps() {
545
+ $demo_data = get_option( 'astra_sites_import_data', array() );
546
+ if ( ! empty( $demo_data ) && isset( $demo_data['astra-site-cartflows-path'] ) && ! empty( $demo_data['astra-site-cartflows-path'] ) ) {
547
+ Astra_Sites_Importer::get_instance()->import_cartflows( $demo_data['astra-site-cartflows-path'] );
548
+ }
549
+ }
550
+
551
+ /**
552
+ * Import WP Forms
553
+ */
554
+ public function import_wp_forms() {
555
+
556
+ /** WordPress Post Administration API */
557
+ require_once ABSPATH . 'wp-admin/includes/post.php';
558
+
559
+ $demo_data = get_option( 'astra_sites_import_data', array() );
560
+ /**
561
+ * Import WP Forms.
562
+ */
563
+ if ( isset( $demo_data['astra-site-wpforms-path'] ) && ! empty( $demo_data['astra-site-wpforms-path'] ) ) {
564
+ Astra_Sites_Importer::get_instance()->import_wpforms( $demo_data['astra-site-wpforms-path'] );
565
+ }
566
+ }
567
+
568
+ /**
569
+ * Import Customizer Settings.
570
+ */
571
+ public function import_customizer_settings() {
572
+ $demo_data = get_option( 'astra_sites_import_data', array() );
573
+ Astra_Sites_Importer::get_instance()->import_customizer_settings( $demo_data['astra-site-customizer-data'] );
574
+ }
575
+
576
+ /**
577
+ * Import Content from XML/WXR.
578
+ */
579
+ public function import_xml() {
580
+ $demo_data = get_option( 'astra_sites_import_data', array() );
581
+
582
+ if ( isset( $demo_data['astra-site-wxr-path'] ) && ! empty( $demo_data['astra-site-wxr-path'] ) ) {
583
+ $xml_path = Astra_Sites_Helper::download_file( $demo_data['astra-site-wxr-path'] );
584
+
585
+ Astra_WXR_Importer::instance()->sse_import( $xml_path['data']['file'] );
586
+ }
587
+ }
588
+
589
+ /**
590
+ * Import Site Options.
591
+ */
592
+ public function import_site_options() {
593
+ $demo_data = get_option( 'astra_sites_import_data', array() );
594
+
595
+ if ( isset( $demo_data['astra-site-options-data'] ) && ! empty( $demo_data['astra-site-options-data'] ) ) {
596
+ Astra_Sites_Importer::get_instance()->import_options( $demo_data['astra-site-options-data'] );
597
+ }
598
+ }
599
+
600
+ /**
601
+ * Import Widgets.
602
+ */
603
+ public function import_widgets() {
604
+ $demo_data = get_option( 'astra_sites_import_data', array() );
605
+
606
+ if ( isset( $demo_data['astra-site-widgets-data'] ) && ! empty( $demo_data['astra-site-widgets-data'] ) ) {
607
+ Astra_Sites_Importer::get_instance()->import_widgets( $demo_data['astra-site-widgets-data'] );
608
+ }
609
+ }
610
+
611
+ /**
612
+ * Import End.
613
+ */
614
+ public function import_end() {
615
+ Astra_Sites_Importer::get_instance()->import_end();
616
+ }
617
+
618
+ /**
619
+ * Direct Import Site without Batch
620
+ *
621
+ * @param int $site_id Site ID.
622
+ */
623
+ public function direct_import( $site_id = 0 ) {
624
+
625
+ $this->validate_id( $site_id );
626
+
627
+ $this->set_site_data( $site_id );
628
+
629
+ $this->install_required_plugins();
630
+
631
+ $this->backup_customizer_settings();
632
+
633
+ $this->reset_previously_import_site();
634
+
635
+ $this->import_flows_and_steps();
636
+
637
+ $this->import_wp_forms();
638
+
639
+ $this->import_customizer_settings();
640
+
641
+ $this->import_xml();
642
+
643
+ $this->import_site_options();
644
+
645
+ $this->import_widgets();
646
+
647
+ $this->import_end();
648
+
649
+ }
650
+
651
+ /**
652
+ * Reset Previously Imported Site
653
+ */
654
+ public function reset_previously_import_site() {
655
+
656
+ // Get tracked data.
657
+ $reset_data = Astra_Sites::get_instance()->get_reset_data();
658
+
659
+ // Delete tracked posts.
660
+ if ( isset( $reset_data['reset_posts'] ) && ! empty( $reset_data['reset_posts'] ) ) {
661
+ foreach ( $reset_data['reset_posts'] as $key => $post_id ) {
662
+ Astra_Sites_Importer::get_instance()->delete_imported_posts( $post_id );
663
+ }
664
+ }
665
+ // Delete tracked terms.
666
+ if ( isset( $reset_data['reset_terms'] ) && ! empty( $reset_data['reset_terms'] ) ) {
667
+ foreach ( $reset_data['reset_terms'] as $key => $post_id ) {
668
+ Astra_Sites_Importer::get_instance()->delete_imported_terms( $post_id );
669
+ }
670
+ }
671
+ // Delete tracked WP forms.
672
+ if ( isset( $reset_data['reset_wp_forms'] ) && ! empty( $reset_data['reset_wp_forms'] ) ) {
673
+ foreach ( $reset_data['reset_wp_forms'] as $key => $post_id ) {
674
+ Astra_Sites_Importer::get_instance()->delete_imported_wp_forms( $post_id );
675
+ }
676
+ }
677
+
678
+ // Delete Customizer Data.
679
+ Astra_Sites_Importer::get_instance()->reset_customizer_data();
680
+
681
+ // Delete Site Options.
682
+ Astra_Sites_Importer::get_instance()->reset_site_options();
683
+
684
+ // Delete Widgets Data.
685
+ Astra_Sites_Importer::get_instance()->reset_widgets_data();
686
+ }
687
+
688
+ /**
689
+ * Get Site Data by Site ID
690
+ *
691
+ * @since x.x.x
692
+ *
693
+ * @param int $id Site ID.
694
+ * @return array
695
+ */
696
+ public function get_site_data( $id ) {
697
+ if ( empty( $this->current_site_data ) ) {
698
+ // @todo Use Astra_Sites::get_instance()->api_request() instead of below function.
699
+ $this->current_site_data = Astra_Sites_Importer::get_instance()->get_single_demo( $id );
700
+ update_option( 'astra_sites_import_data', $this->current_site_data );
701
+ }
702
+
703
+ return $this->current_site_data;
704
+ }
705
+ }
706
+
707
+ Astra_Sites_Batch_Site_Import::get_instance();
708
+
709
+ endif;
inc/classes/class-astra-sites-importer.php CHANGED
@@ -154,7 +154,7 @@ if ( ! class_exists( 'Astra_Sites_Importer' ) ) {
154
  */
155
  public function import_wpforms( $wpforms_url = '' ) {
156
 
157
- if ( ! defined( 'WP_CLI' ) ) {
158
  // Verify Nonce.
159
  check_ajax_referer( 'astra-sites', '_ajax_nonce' );
160
 
@@ -230,7 +230,7 @@ if ( ! class_exists( 'Astra_Sites_Importer' ) ) {
230
 
231
  if ( defined( 'WP_CLI' ) ) {
232
  WP_CLI::line( 'WP Forms Imported.' );
233
- } else {
234
  wp_send_json_success( $ids_mapping );
235
  }
236
  }
@@ -274,7 +274,7 @@ if ( ! class_exists( 'Astra_Sites_Importer' ) ) {
274
 
275
  if ( defined( 'WP_CLI' ) ) {
276
  WP_CLI::line( 'Imported from ' . $url );
277
- } else {
278
  wp_send_json_success( $url );
279
  }
280
  }
@@ -290,7 +290,7 @@ if ( ! class_exists( 'Astra_Sites_Importer' ) ) {
290
  */
291
  public function import_customizer_settings( $customizer_data = array() ) {
292
 
293
- if ( ! defined( 'WP_CLI' ) ) {
294
  // Verify Nonce.
295
  check_ajax_referer( 'astra-sites', '_ajax_nonce' );
296
 
@@ -314,13 +314,13 @@ if ( ! class_exists( 'Astra_Sites_Importer' ) ) {
314
 
315
  if ( defined( 'WP_CLI' ) ) {
316
  WP_CLI::line( 'Imported Customizer Settings!' );
317
- } else {
318
  wp_send_json_success( $customizer_data );
319
  }
320
  } else {
321
  if ( defined( 'WP_CLI' ) ) {
322
  WP_CLI::line( 'Customizer data is empty!' );
323
- } else {
324
  wp_send_json_error( __( 'Customizer data is empty!', 'astra-sites' ) );
325
  }
326
  }
@@ -406,7 +406,7 @@ if ( ! class_exists( 'Astra_Sites_Importer' ) ) {
406
  */
407
  public function import_options( $options_data = array() ) {
408
 
409
- if ( ! defined( 'WP_CLI' ) ) {
410
  // Verify Nonce.
411
  check_ajax_referer( 'astra-sites', '_ajax_nonce' );
412
 
@@ -428,13 +428,13 @@ if ( ! class_exists( 'Astra_Sites_Importer' ) ) {
428
  $options_importer->import_options( $options_data );
429
  if ( defined( 'WP_CLI' ) ) {
430
  WP_CLI::line( 'Imported Site Options!' );
431
- } else {
432
  wp_send_json_success( $options_data );
433
  }
434
  } else {
435
  if ( defined( 'WP_CLI' ) ) {
436
  WP_CLI::line( 'Site options are empty!' );
437
- } else {
438
  wp_send_json_error( __( 'Site options are empty!', 'astra-sites' ) );
439
  }
440
  }
@@ -452,7 +452,7 @@ if ( ! class_exists( 'Astra_Sites_Importer' ) ) {
452
  */
453
  public function import_widgets( $widgets_data = '' ) {
454
 
455
- if ( ! defined( 'WP_CLI' ) ) {
456
  // Verify Nonce.
457
  check_ajax_referer( 'astra-sites', '_ajax_nonce' );
458
 
@@ -479,13 +479,13 @@ if ( ! class_exists( 'Astra_Sites_Importer' ) ) {
479
 
480
  if ( defined( 'WP_CLI' ) ) {
481
  WP_CLI::line( 'Widget Imported!' );
482
- } else {
483
  wp_send_json_success( $widgets_data );
484
  }
485
  } else {
486
  if ( defined( 'WP_CLI' ) ) {
487
  WP_CLI::line( 'Widget data is empty!' );
488
- } else {
489
  wp_send_json_error( __( 'Widget data is empty!', 'astra-sites' ) );
490
  }
491
  }
@@ -500,7 +500,7 @@ if ( ! class_exists( 'Astra_Sites_Importer' ) ) {
500
  */
501
  public function import_end() {
502
 
503
- if ( ! defined( 'WP_CLI' ) ) {
504
  // Verify Nonce.
505
  check_ajax_referer( 'astra-sites', '_ajax_nonce' );
506
 
@@ -513,7 +513,9 @@ if ( ! class_exists( 'Astra_Sites_Importer' ) ) {
513
 
514
  do_action( 'astra_sites_import_complete', $demo_data );
515
 
516
- wp_send_json_success();
 
 
517
  }
518
 
519
  /**
@@ -654,7 +656,7 @@ if ( ! class_exists( 'Astra_Sites_Importer' ) ) {
654
  */
655
  public function reset_customizer_data() {
656
 
657
- if ( ! defined( 'WP_CLI' ) ) {
658
  // Verify Nonce.
659
  check_ajax_referer( 'astra-sites', '_ajax_nonce' );
660
 
@@ -669,7 +671,7 @@ if ( ! class_exists( 'Astra_Sites_Importer' ) ) {
669
 
670
  if ( defined( 'WP_CLI' ) ) {
671
  WP_CLI::line( 'Deleted Customizer Settings!' );
672
- } else {
673
  wp_send_json_success();
674
  }
675
  }
@@ -682,7 +684,7 @@ if ( ! class_exists( 'Astra_Sites_Importer' ) ) {
682
  */
683
  public function reset_site_options() {
684
 
685
- if ( ! defined( 'WP_CLI' ) ) {
686
  // Verify Nonce.
687
  check_ajax_referer( 'astra-sites', '_ajax_nonce' );
688
 
@@ -703,7 +705,7 @@ if ( ! class_exists( 'Astra_Sites_Importer' ) ) {
703
 
704
  if ( defined( 'WP_CLI' ) ) {
705
  WP_CLI::line( 'Deleted Site Options!' );
706
- } else {
707
  wp_send_json_success();
708
  }
709
  }
@@ -716,7 +718,7 @@ if ( ! class_exists( 'Astra_Sites_Importer' ) ) {
716
  */
717
  public function reset_widgets_data() {
718
 
719
- if ( ! defined( 'WP_CLI' ) ) {
720
  // Verify Nonce.
721
  check_ajax_referer( 'astra-sites', '_ajax_nonce' );
722
 
@@ -752,7 +754,7 @@ if ( ! class_exists( 'Astra_Sites_Importer' ) ) {
752
 
753
  if ( defined( 'WP_CLI' ) ) {
754
  WP_CLI::line( 'Deleted Widgets!' );
755
- } else {
756
  wp_send_json_success();
757
  }
758
  }
@@ -768,7 +770,7 @@ if ( ! class_exists( 'Astra_Sites_Importer' ) ) {
768
  */
769
  public function delete_imported_posts( $post_id = 0 ) {
770
 
771
- if ( ! defined( 'WP_CLI' ) ) {
772
  // Verify Nonce.
773
  check_ajax_referer( 'astra-sites', '_ajax_nonce' );
774
 
@@ -783,7 +785,11 @@ if ( ! class_exists( 'Astra_Sites_Importer' ) ) {
783
 
784
  $message = '';
785
  if ( $post_id ) {
786
- $message = 'Deleted - Post ID ' . $post_id . ' - ' . get_post_type( $post_id ) . ' - ' . get_the_title( $post_id );
 
 
 
 
787
 
788
  Astra_Sites_Importer_Log::add( $message );
789
  wp_delete_post( $post_id, true );
@@ -791,7 +797,7 @@ if ( ! class_exists( 'Astra_Sites_Importer' ) ) {
791
 
792
  if ( defined( 'WP_CLI' ) ) {
793
  WP_CLI::line( $message );
794
- } else {
795
  wp_send_json_success( $message );
796
  }
797
  }
@@ -807,7 +813,7 @@ if ( ! class_exists( 'Astra_Sites_Importer' ) ) {
807
  */
808
  public function delete_imported_wp_forms( $post_id = 0 ) {
809
 
810
- if ( ! defined( 'WP_CLI' ) ) {
811
  // Verify Nonce.
812
  check_ajax_referer( 'astra-sites', '_ajax_nonce' );
813
 
@@ -820,6 +826,9 @@ if ( ! class_exists( 'Astra_Sites_Importer' ) ) {
820
 
821
  $message = '';
822
  if ( $post_id ) {
 
 
 
823
  $message = 'Deleted - Form ID ' . $post_id . ' - ' . get_post_type( $post_id ) . ' - ' . get_the_title( $post_id );
824
  Astra_Sites_Importer_Log::add( $message );
825
  wp_delete_post( $post_id, true );
@@ -827,7 +836,7 @@ if ( ! class_exists( 'Astra_Sites_Importer' ) ) {
827
 
828
  if ( defined( 'WP_CLI' ) ) {
829
  WP_CLI::line( $message );
830
- } else {
831
  wp_send_json_success( $message );
832
  }
833
  }
@@ -842,7 +851,7 @@ if ( ! class_exists( 'Astra_Sites_Importer' ) ) {
842
  * @return void
843
  */
844
  public function delete_imported_terms( $term_id = 0 ) {
845
- if ( ! defined( 'WP_CLI' ) ) {
846
  // Verify Nonce.
847
  check_ajax_referer( 'astra-sites', '_ajax_nonce' );
848
 
@@ -857,6 +866,9 @@ if ( ! class_exists( 'Astra_Sites_Importer' ) ) {
857
  if ( $term_id ) {
858
  $term = get_term( $term_id );
859
  if ( ! is_wp_error( $term ) ) {
 
 
 
860
  $message = 'Deleted - Term ' . $term_id . ' - ' . $term->name . ' ' . $term->taxonomy;
861
  Astra_Sites_Importer_Log::add( $message );
862
  wp_delete_term( $term_id, $term->taxonomy );
@@ -865,7 +877,7 @@ if ( ! class_exists( 'Astra_Sites_Importer' ) ) {
865
 
866
  if ( defined( 'WP_CLI' ) ) {
867
  WP_CLI::line( $message );
868
- } else {
869
  wp_send_json_success( $message );
870
  }
871
  }
154
  */
155
  public function import_wpforms( $wpforms_url = '' ) {
156
 
157
+ if ( ! defined( 'WP_CLI' ) && wp_doing_ajax() ) {
158
  // Verify Nonce.
159
  check_ajax_referer( 'astra-sites', '_ajax_nonce' );
160
 
230
 
231
  if ( defined( 'WP_CLI' ) ) {
232
  WP_CLI::line( 'WP Forms Imported.' );
233
+ } elseif ( wp_doing_ajax() ) {
234
  wp_send_json_success( $ids_mapping );
235
  }
236
  }
274
 
275
  if ( defined( 'WP_CLI' ) ) {
276
  WP_CLI::line( 'Imported from ' . $url );
277
+ } elseif ( wp_doing_ajax() ) {
278
  wp_send_json_success( $url );
279
  }
280
  }
290
  */
291
  public function import_customizer_settings( $customizer_data = array() ) {
292
 
293
+ if ( ! defined( 'WP_CLI' ) && wp_doing_ajax() ) {
294
  // Verify Nonce.
295
  check_ajax_referer( 'astra-sites', '_ajax_nonce' );
296
 
314
 
315
  if ( defined( 'WP_CLI' ) ) {
316
  WP_CLI::line( 'Imported Customizer Settings!' );
317
+ } elseif ( wp_doing_ajax() ) {
318
  wp_send_json_success( $customizer_data );
319
  }
320
  } else {
321
  if ( defined( 'WP_CLI' ) ) {
322
  WP_CLI::line( 'Customizer data is empty!' );
323
+ } elseif ( wp_doing_ajax() ) {
324
  wp_send_json_error( __( 'Customizer data is empty!', 'astra-sites' ) );
325
  }
326
  }
406
  */
407
  public function import_options( $options_data = array() ) {
408
 
409
+ if ( ! defined( 'WP_CLI' ) && wp_doing_ajax() ) {
410
  // Verify Nonce.
411
  check_ajax_referer( 'astra-sites', '_ajax_nonce' );
412
 
428
  $options_importer->import_options( $options_data );
429
  if ( defined( 'WP_CLI' ) ) {
430
  WP_CLI::line( 'Imported Site Options!' );
431
+ } elseif ( wp_doing_ajax() ) {
432
  wp_send_json_success( $options_data );
433
  }
434
  } else {
435
  if ( defined( 'WP_CLI' ) ) {
436
  WP_CLI::line( 'Site options are empty!' );
437
+ } elseif ( wp_doing_ajax() ) {
438
  wp_send_json_error( __( 'Site options are empty!', 'astra-sites' ) );
439
  }
440
  }
452
  */
453
  public function import_widgets( $widgets_data = '' ) {
454
 
455
+ if ( ! defined( 'WP_CLI' ) && wp_doing_ajax() ) {
456
  // Verify Nonce.
457
  check_ajax_referer( 'astra-sites', '_ajax_nonce' );
458
 
479
 
480
  if ( defined( 'WP_CLI' ) ) {
481
  WP_CLI::line( 'Widget Imported!' );
482
+ } elseif ( wp_doing_ajax() ) {
483
  wp_send_json_success( $widgets_data );
484
  }
485
  } else {
486
  if ( defined( 'WP_CLI' ) ) {
487
  WP_CLI::line( 'Widget data is empty!' );
488
+ } elseif ( wp_doing_ajax() ) {
489
  wp_send_json_error( __( 'Widget data is empty!', 'astra-sites' ) );
490
  }
491
  }
500
  */
501
  public function import_end() {
502
 
503
+ if ( ! defined( 'WP_CLI' ) && wp_doing_ajax() ) {
504
  // Verify Nonce.
505
  check_ajax_referer( 'astra-sites', '_ajax_nonce' );
506
 
513
 
514
  do_action( 'astra_sites_import_complete', $demo_data );
515
 
516
+ if ( wp_doing_ajax() ) {
517
+ wp_send_json_success();
518
+ }
519
  }
520
 
521
  /**
656
  */
657
  public function reset_customizer_data() {
658
 
659
+ if ( ! defined( 'WP_CLI' ) && wp_doing_ajax() ) {
660
  // Verify Nonce.
661
  check_ajax_referer( 'astra-sites', '_ajax_nonce' );
662
 
671
 
672
  if ( defined( 'WP_CLI' ) ) {
673
  WP_CLI::line( 'Deleted Customizer Settings!' );
674
+ } elseif ( wp_doing_ajax() ) {
675
  wp_send_json_success();
676
  }
677
  }
684
  */
685
  public function reset_site_options() {
686
 
687
+ if ( ! defined( 'WP_CLI' ) && wp_doing_ajax() ) {
688
  // Verify Nonce.
689
  check_ajax_referer( 'astra-sites', '_ajax_nonce' );
690
 
705
 
706
  if ( defined( 'WP_CLI' ) ) {
707
  WP_CLI::line( 'Deleted Site Options!' );
708
+ } elseif ( wp_doing_ajax() ) {
709
  wp_send_json_success();
710
  }
711
  }
718
  */
719
  public function reset_widgets_data() {
720
 
721
+ if ( ! defined( 'WP_CLI' ) && wp_doing_ajax() ) {
722
  // Verify Nonce.
723
  check_ajax_referer( 'astra-sites', '_ajax_nonce' );
724
 
754
 
755
  if ( defined( 'WP_CLI' ) ) {
756
  WP_CLI::line( 'Deleted Widgets!' );
757
+ } elseif ( wp_doing_ajax() ) {
758
  wp_send_json_success();
759
  }
760
  }
770
  */
771
  public function delete_imported_posts( $post_id = 0 ) {
772
 
773
+ if ( wp_doing_ajax() ) {
774
  // Verify Nonce.
775
  check_ajax_referer( 'astra-sites', '_ajax_nonce' );
776
 
785
 
786
  $message = '';
787
  if ( $post_id ) {
788
+
789
+ $post_type = get_post_type( $post_id );
790
+ $message = 'Deleted - Post ID ' . $post_id . ' - ' . $post_type . ' - ' . get_the_title( $post_id );
791
+
792
+ do_action( 'astra_sites_before_delete_imported_posts', $post_id, $post_type );
793
 
794
  Astra_Sites_Importer_Log::add( $message );
795
  wp_delete_post( $post_id, true );
797
 
798
  if ( defined( 'WP_CLI' ) ) {
799
  WP_CLI::line( $message );
800
+ } elseif ( wp_doing_ajax() ) {
801
  wp_send_json_success( $message );
802
  }
803
  }
813
  */
814
  public function delete_imported_wp_forms( $post_id = 0 ) {
815
 
816
+ if ( ! defined( 'WP_CLI' ) && wp_doing_ajax() ) {
817
  // Verify Nonce.
818
  check_ajax_referer( 'astra-sites', '_ajax_nonce' );
819
 
826
 
827
  $message = '';
828
  if ( $post_id ) {
829
+
830
+ do_action( 'astra_sites_before_delete_imported_wp_forms', $post_id );
831
+
832
  $message = 'Deleted - Form ID ' . $post_id . ' - ' . get_post_type( $post_id ) . ' - ' . get_the_title( $post_id );
833
  Astra_Sites_Importer_Log::add( $message );
834
  wp_delete_post( $post_id, true );
836
 
837
  if ( defined( 'WP_CLI' ) ) {
838
  WP_CLI::line( $message );
839
+ } elseif ( wp_doing_ajax() ) {
840
  wp_send_json_success( $message );
841
  }
842
  }
851
  * @return void
852
  */
853
  public function delete_imported_terms( $term_id = 0 ) {
854
+ if ( ! defined( 'WP_CLI' ) && wp_doing_ajax() ) {
855
  // Verify Nonce.
856
  check_ajax_referer( 'astra-sites', '_ajax_nonce' );
857
 
866
  if ( $term_id ) {
867
  $term = get_term( $term_id );
868
  if ( ! is_wp_error( $term ) ) {
869
+
870
+ do_action( 'astra_sites_before_delete_imported_terms', $term_id, $term );
871
+
872
  $message = 'Deleted - Term ' . $term_id . ' - ' . $term->name . ' ' . $term->taxonomy;
873
  Astra_Sites_Importer_Log::add( $message );
874
  wp_delete_term( $term_id, $term->taxonomy );
877
 
878
  if ( defined( 'WP_CLI' ) ) {
879
  WP_CLI::line( $message );
880
+ } elseif ( wp_doing_ajax() ) {
881
  wp_send_json_success( $message );
882
  }
883
  }
inc/classes/class-astra-sites-page.php CHANGED
@@ -392,7 +392,87 @@ if ( ! class_exists( 'Astra_Sites_Page' ) ) {
392
 
393
  $default_page_builder = $this->get_setting( 'page_builder' );
394
 
395
- if ( empty( $default_page_builder ) || isset( $_GET['change-page-builder'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
396
  $plugins = get_option( 'active_plugins', array() );
397
  $page_builders = array();
398
  if ( $plugins ) {
@@ -412,7 +492,7 @@ if ( ! class_exists( 'Astra_Sites_Page' ) ) {
412
  $page_builders[] = 'gutenberg';
413
  $page_builders = implode( ',', $page_builders );
414
  ?>
415
- <div class="astra-sites-welcome" data-plugins="<?php echo esc_attr( $page_builders ); ?>">
416
  <div class="inner-wrap">
417
  <div class="inner">
418
  <div class="header">
@@ -435,6 +515,7 @@ if ( ! class_exists( 'Astra_Sites_Page' ) ) {
435
  <?php } ?>
436
  <h3 class="title"><?php esc_html_e( 'Getting Started', 'astra-sites' ); ?></h3>
437
  </span>
 
438
  <a href="<?php echo esc_url( admin_url() ); ?>" class="close"><span class="dashicons dashicons-no-alt"></span></a>
439
  </div>
440
  <form id="astra-sites-welcome-form" enctype="multipart/form-data" method="post">
392
 
393
  $default_page_builder = $this->get_setting( 'page_builder' );
394
 
395
+ if ( isset( $_GET['action'] ) && 'site-import' === $_GET['action'] ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
396
+
397
+ $status = Astra_Sites_Batch_Site_Import::get_instance()->get_status();
398
+ $import_status = isset( $status['status'] ) ? $status['status'] : '';
399
+ $status_class = 'invalid_site_id' === $import_status || 'premium_sites' === $import_status ? 'failed' : '';
400
+ $step_class = '';
401
+ if ( ! empty( $status ) ) {
402
+ $step_class = isset( $status['step'] ) && 'complete' === $status['step'] ? 'success' : '';
403
+ }
404
+ ?>
405
+ <div class="astra-sites-welcome astra-sites-import-screen <?php echo esc_attr( $status_class ); ?>">
406
+ <div class="inner-wrap">
407
+ <div class="inner">
408
+ <div class="header">
409
+ <?php
410
+ $white_label = false;
411
+ $white_label_class = '';
412
+ if ( is_callable( 'Astra_Ext_White_Label_Markup::get_whitelabel_string' ) ) {
413
+ $white_label_title = Astra_Ext_White_Label_Markup::get_whitelabel_string( 'astra-sites', 'name' );
414
+ if ( $white_label_title ) {
415
+ $white_label = true;
416
+ $white_label_class = 'white-label-enabled';
417
+ }
418
+ }
419
+ ?>
420
+ <span class="logo <?php echo esc_attr( $white_label_class ); ?>">
421
+ <?php if ( ! $white_label ) { ?>
422
+ <img src="<?php echo esc_url( ASTRA_SITES_URI . 'inc/assets/images/logo.svg' ); ?>">
423
+ <?php } else { ?>
424
+ <?php echo esc_html( Astra_Sites_White_Label::get_instance()->get_white_label_name() ); ?>
425
+ <?php } ?>
426
+ <h3 class="title"><?php esc_html_e( 'Importing Starter Template...', 'astra-sites' ); ?></h3>
427
+ </span>
428
+ </div>
429
+ <div class="content">
430
+ <?php if ( 'invalid_site_id' === $import_status ) { ?>
431
+ <p><?php esc_html_e( 'The demo you are importing seems invalid. The site is not found.', 'astra-sites' ); ?></p>
432
+ <?php } elseif ( 'premium_sites' === $import_status ) { ?>
433
+ <p><?php esc_html_e( 'The demo you are importing is a premium demo.', 'astra-sites' ); ?> <a href="https://wpastra.com/pricing/?utm_source=batch-site-import&utm_campaign=astra-sites&utm_medium=batch-import" class="" target="_blank"><?php esc_html_e( 'Get Agency Bundle', 'astra-sites' ); ?><i class="dashicons dashicons-external"></i></a></p>
434
+ <?php } else { ?>
435
+ <p><?php esc_html_e( 'The import process can take a few minutes depending on the size of the site and speed of the connection.', 'astra-sites' ); ?></p>
436
+ <?php } ?>
437
+ <ul class="import-steps">
438
+ <li class="import-step <?php echo esc_attr( $step_class ); ?>" data-step="preparing">
439
+ <?php esc_html_e( 'Preparing Site Import', 'astra-sites' ); ?>
440
+ </li>
441
+ <li class="import-step <?php echo esc_attr( $step_class ); ?>" data-step="install_plugins">
442
+ <?php esc_html_e( 'Installing Required Plugins', 'astra-sites' ); ?>
443
+ </li>
444
+ <li class="import-step <?php echo esc_attr( $step_class ); ?>" data-step="import_contact_forms">
445
+ <?php esc_html_e( 'Importing Contact Forms', 'astra-sites' ); ?>
446
+ </li>
447
+ <li class="import-step <?php echo esc_attr( $step_class ); ?>" data-step="import_customizer_settings">
448
+ <?php esc_html_e( 'Setting up the Theme', 'astra-sites' ); ?>
449
+ </li>
450
+ <li class="import-step <?php echo esc_attr( $step_class ); ?>" data-step="import_content">
451
+ <?php esc_html_e( 'Importing Media, Posts, and Pages', 'astra-sites' ); ?>
452
+ </li>
453
+ <li class="import-step <?php echo esc_attr( $step_class ); ?>" data-step="import_options">
454
+ <?php esc_html_e( 'Importing Site Options', 'astra-sites' ); ?>
455
+ </li>
456
+ <li class="import-step <?php echo esc_attr( $step_class ); ?>" data-step="import_widgets">
457
+ <?php esc_html_e( 'Importing Sidebar and Widgets', 'astra-sites' ); ?>
458
+ </li>
459
+ <li class="import-step <?php echo esc_attr( $step_class ); ?>" data-step="complete">
460
+ <?php esc_html_e( 'Import Complete', 'astra-sites' ); ?>
461
+ </li>
462
+ </ul>
463
+
464
+ <?php if ( 'success' === $step_class ) { ?>
465
+ <p>
466
+ <?php esc_html_e( 'Site Imported Successfully!', 'astra-sites' ); ?>
467
+ <a class="view-site-button" href="<?php echo esc_url( site_url() ); ?>" target="_blank"><?php esc_html_e( 'Visit Site', 'astra-sites' ); ?> <i class="dashicons dashicons-external"></i></a>
468
+ </p>
469
+ <?php } ?>
470
+ </div>
471
+ </div>
472
+ </div>
473
+ </div>
474
+ <?php
475
+ } elseif ( empty( $default_page_builder ) || isset( $_GET['change-page-builder'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
476
  $plugins = get_option( 'active_plugins', array() );
477
  $page_builders = array();
478
  if ( $plugins ) {
492
  $page_builders[] = 'gutenberg';
493
  $page_builders = implode( ',', $page_builders );
494
  ?>
495
+ <div class="astra-sites-welcome astra-sites-change-page-builder" data-plugins="<?php echo esc_attr( $page_builders ); ?>">
496
  <div class="inner-wrap">
497
  <div class="inner">
498
  <div class="header">
515
  <?php } ?>
516
  <h3 class="title"><?php esc_html_e( 'Getting Started', 'astra-sites' ); ?></h3>
517
  </span>
518
+
519
  <a href="<?php echo esc_url( admin_url() ); ?>" class="close"><span class="dashicons dashicons-no-alt"></span></a>
520
  </div>
521
  <form id="astra-sites-welcome-form" enctype="multipart/form-data" method="post">
inc/classes/class-astra-sites.php CHANGED
@@ -19,6 +19,13 @@ if ( ! class_exists( 'Astra_Sites' ) ) :
19
  */
20
  class Astra_Sites {
21
 
 
 
 
 
 
 
 
22
  /**
23
  * API URL which is used to get the response from.
24
  *
@@ -130,6 +137,32 @@ if ( ! class_exists( 'Astra_Sites' ) ) :
130
 
131
  add_action( 'delete_attachment', array( $this, 'delete_astra_images' ) );
132
  add_filter( 'heartbeat_received', array( $this, 'search_push' ), 10, 2 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
133
  }
134
 
135
  /**
@@ -807,7 +840,7 @@ if ( ! class_exists( 'Astra_Sites' ) ) :
807
  */
808
  public function get_reset_data() {
809
 
810
- if ( ! defined( 'WP_CLI' ) ) {
811
  check_ajax_referer( 'astra-sites', '_ajax_nonce' );
812
 
813
  if ( ! current_user_can( 'manage_options' ) ) {
@@ -827,12 +860,11 @@ if ( ! class_exists( 'Astra_Sites' ) ) :
827
  'reset_terms' => $term_ids,
828
  );
829
 
830
- if ( defined( 'WP_CLI' ) ) {
831
- return $data;
832
- } else {
833
  wp_send_json_success( $data );
834
  }
835
 
 
836
  }
837
 
838
  /**
@@ -840,7 +872,7 @@ if ( ! class_exists( 'Astra_Sites' ) ) :
840
  */
841
  public function backup_settings() {
842
 
843
- if ( ! defined( 'WP_CLI' ) ) {
844
  check_ajax_referer( 'astra-sites', '_ajax_nonce' );
845
 
846
  if ( ! current_user_can( 'manage_options' ) ) {
@@ -862,7 +894,7 @@ if ( ! class_exists( 'Astra_Sites' ) ) :
862
 
863
  if ( defined( 'WP_CLI' ) ) {
864
  WP_CLI::line( 'File generated at ' . $log_file );
865
- } else {
866
  wp_send_json_success();
867
  }
868
  }
@@ -942,9 +974,10 @@ if ( ! class_exists( 'Astra_Sites' ) ) :
942
  * @since 1.0.0
943
  */
944
  public function set_api_url() {
945
- $this->api_url = apply_filters( 'astra_sites_api_url', trailingslashit( self::get_api_domain() ) . 'wp-json/wp/v2/' );
 
946
 
947
- $this->search_url = apply_filters( 'astra_sites_search_api_url', trailingslashit( self::get_api_domain() ) . 'wp-json/analytics/v2/search/' );
948
 
949
  $this->pixabay_url = 'https://pixabay.com/api/';
950
  $this->pixabay_api_key = '2727911-c4d7c1031949c7e0411d7e81e';
@@ -1152,6 +1185,7 @@ if ( ! class_exists( 'Astra_Sites' ) ) :
1152
  $data = apply_filters(
1153
  'astra_sites_localize_vars',
1154
  array(
 
1155
  'debug' => defined( 'WP_DEBUG' ) ? true : false,
1156
  'isPro' => defined( 'ASTRA_PRO_SITES_NAME' ) ? true : false,
1157
  'isWhiteLabeled' => Astra_Sites_White_Label::get_instance()->is_white_labeled(),
@@ -1186,6 +1220,7 @@ if ( ! class_exists( 'Astra_Sites' ) ) :
1186
  'themeInstall' => sprintf( __( 'Installing %1$s Theme..', 'astra-sites' ), Astra_Sites_White_Label::get_instance()->get_option( 'astra', 'name', 'Astra' ) ),
1187
  ),
1188
  'default_page_builder' => $default_page_builder,
 
1189
  'default_page_builder_sites' => Astra_Sites_Page::get_instance()->get_sites_by_page_builder( $default_page_builder ),
1190
  'sites' => $request_params,
1191
  'categories' => array(),
@@ -1194,6 +1229,7 @@ if ( ! class_exists( 'Astra_Sites' ) ) :
1194
  'license_status' => $license_status,
1195
  'license_page_builder' => get_option( 'astra-sites-license-page-builder', '' ),
1196
 
 
1197
  'ApiURL' => $this->api_url,
1198
  'stored_data' => $stored_data,
1199
  'favorite_data' => $favorite_data,
@@ -1463,6 +1499,10 @@ if ( ! class_exists( 'Astra_Sites' ) ) :
1463
  require_once ASTRA_SITES_DIR . 'inc/classes/compatibility/class-astra-sites-compatibility.php';
1464
  require_once ASTRA_SITES_DIR . 'inc/classes/class-astra-sites-importer.php';
1465
  require_once ASTRA_SITES_DIR . 'inc/classes/class-astra-sites-wp-cli.php';
 
 
 
 
1466
  }
1467
 
1468
  /**
@@ -1477,7 +1517,7 @@ if ( ! class_exists( 'Astra_Sites' ) ) :
1477
  */
1478
  public function required_plugin_activate( $init = '', $options = array(), $enabled_extensions = array() ) {
1479
 
1480
- if ( ! defined( 'WP_CLI' ) ) {
1481
  check_ajax_referer( 'astra-sites', '_ajax_nonce' );
1482
 
1483
  if ( ! current_user_can( 'install_plugins' ) || ! isset( $_POST['init'] ) || ! $_POST['init'] ) {
@@ -1499,7 +1539,7 @@ if ( ! class_exists( 'Astra_Sites' ) ) :
1499
  if ( is_wp_error( $activate ) ) {
1500
  if ( defined( 'WP_CLI' ) ) {
1501
  WP_CLI::error( 'Plugin Activation Error: ' . $activate->get_error_message() );
1502
- } else {
1503
  wp_send_json_error(
1504
  array(
1505
  'success' => false,
@@ -1516,7 +1556,7 @@ if ( ! class_exists( 'Astra_Sites' ) ) :
1516
 
1517
  if ( defined( 'WP_CLI' ) ) {
1518
  WP_CLI::line( 'Plugin Activated!' );
1519
- } else {
1520
  wp_send_json_success(
1521
  array(
1522
  'success' => true,
@@ -1539,7 +1579,7 @@ if ( ! class_exists( 'Astra_Sites' ) ) :
1539
  public function required_plugin( $required_plugins = array(), $options = array(), $enabled_extensions = array() ) {
1540
 
1541
  // Verify Nonce.
1542
- if ( ! defined( 'WP_CLI' ) ) {
1543
  check_ajax_referer( 'astra-sites', '_ajax_nonce' );
1544
  }
1545
 
@@ -1642,7 +1682,7 @@ if ( ! class_exists( 'Astra_Sites' ) ) :
1642
  // Checking the `install_plugins` and `activate_plugins` capability for the current user.
1643
  // To perform plugin installation process.
1644
  if (
1645
- ( ! defined( 'WP_CLI' ) ) &&
1646
  ( ( ! current_user_can( 'install_plugins' ) && ! empty( $response['notinstalled'] ) ) || ( ! current_user_can( 'activate_plugins' ) && ! empty( $response['inactive'] ) ) ) ) {
1647
  $message = __( 'Insufficient Permission. Please contact your Super Admin to allow the install required plugin permissions.', 'astra-sites' );
1648
  $required_plugins_list = array_merge( $response['notinstalled'], $response['inactive'] );
@@ -1662,13 +1702,11 @@ if ( ! class_exists( 'Astra_Sites' ) ) :
1662
  'update_avilable_plugins' => $update_avilable_plugins,
1663
  );
1664
 
1665
- if ( defined( 'WP_CLI' ) ) {
1666
- return $data;
1667
- } else {
1668
- // Send response.
1669
  wp_send_json_success( $data );
 
 
1670
  }
1671
-
1672
  }
1673
 
1674
  /**
19
  */
20
  class Astra_Sites {
21
 
22
+ /**
23
+ * API Domain name
24
+ *
25
+ * @var (String) URL
26
+ */
27
+ public $api_domain;
28
+
29
  /**
30
  * API URL which is used to get the response from.
31
  *
137
 
138
  add_action( 'delete_attachment', array( $this, 'delete_astra_images' ) );
139
  add_filter( 'heartbeat_received', array( $this, 'search_push' ), 10, 2 );
140
+ add_action( 'wp_ajax_astra-sites-update-subscription', array( $this, 'update_subscription' ) );
141
+ }
142
+
143
+ /**
144
+ * Update Subscription
145
+ */
146
+ public function update_subscription() {
147
+
148
+ check_ajax_referer( 'astra-sites', '_ajax_nonce' );
149
+
150
+ if ( ! current_user_can( 'manage_options' ) ) {
151
+ wp_send_json_error( 'You can\'t access this action.' );
152
+ }
153
+
154
+ $arguments = isset( $_POST['data'] ) ? array_map( 'sanitize_text_field', json_decode( stripslashes( $_POST['data'] ), true ) ) : array();
155
+
156
+ $url = add_query_arg( $arguments, $this->api_domain . 'wp-json/starter-templates/v1/subscribe/' );
157
+
158
+ $response = wp_remote_post( $url );
159
+ if ( ! is_wp_error( $response ) || wp_remote_retrieve_response_code( $response ) === 200 ) {
160
+ $response = json_decode( wp_remote_retrieve_body( $response ), true );
161
+ }
162
+
163
+ update_user_meta( get_current_user_ID(), 'astra-sites-subscribed', 'yes' );
164
+
165
+ wp_send_json_success( $response );
166
  }
167
 
168
  /**
840
  */
841
  public function get_reset_data() {
842
 
843
+ if ( wp_doing_ajax() ) {
844
  check_ajax_referer( 'astra-sites', '_ajax_nonce' );
845
 
846
  if ( ! current_user_can( 'manage_options' ) ) {
860
  'reset_terms' => $term_ids,
861
  );
862
 
863
+ if ( wp_doing_ajax() ) {
 
 
864
  wp_send_json_success( $data );
865
  }
866
 
867
+ return $data;
868
  }
869
 
870
  /**
872
  */
873
  public function backup_settings() {
874
 
875
+ if ( ! defined( 'WP_CLI' ) && wp_doing_ajax() ) {
876
  check_ajax_referer( 'astra-sites', '_ajax_nonce' );
877
 
878
  if ( ! current_user_can( 'manage_options' ) ) {
894
 
895
  if ( defined( 'WP_CLI' ) ) {
896
  WP_CLI::line( 'File generated at ' . $log_file );
897
+ } elseif ( wp_doing_ajax() ) {
898
  wp_send_json_success();
899
  }
900
  }
974
  * @since 1.0.0
975
  */
976
  public function set_api_url() {
977
+ $this->api_domain = trailingslashit( self::get_api_domain() );
978
+ $this->api_url = apply_filters( 'astra_sites_api_url', $this->api_domain . 'wp-json/wp/v2/' );
979
 
980
+ $this->search_url = apply_filters( 'astra_sites_search_api_url', $this->api_domain . 'wp-json/analytics/v2/search/' );
981
 
982
  $this->pixabay_url = 'https://pixabay.com/api/';
983
  $this->pixabay_api_key = '2727911-c4d7c1031949c7e0411d7e81e';
1185
  $data = apply_filters(
1186
  'astra_sites_localize_vars',
1187
  array(
1188
+ 'subscribed' => get_user_meta( get_current_user_ID(), 'astra-sites-subscribed', true ),
1189
  'debug' => defined( 'WP_DEBUG' ) ? true : false,
1190
  'isPro' => defined( 'ASTRA_PRO_SITES_NAME' ) ? true : false,
1191
  'isWhiteLabeled' => Astra_Sites_White_Label::get_instance()->is_white_labeled(),
1220
  'themeInstall' => sprintf( __( 'Installing %1$s Theme..', 'astra-sites' ), Astra_Sites_White_Label::get_instance()->get_option( 'astra', 'name', 'Astra' ) ),
1221
  ),
1222
  'default_page_builder' => $default_page_builder,
1223
+ 'default_page_builder_data' => Astra_Sites_Page::get_instance()->get_default_page_builder(),
1224
  'default_page_builder_sites' => Astra_Sites_Page::get_instance()->get_sites_by_page_builder( $default_page_builder ),
1225
  'sites' => $request_params,
1226
  'categories' => array(),
1229
  'license_status' => $license_status,
1230
  'license_page_builder' => get_option( 'astra-sites-license-page-builder', '' ),
1231
 
1232
+ 'ApiDomain' => $this->api_domain,
1233
  'ApiURL' => $this->api_url,
1234
  'stored_data' => $stored_data,
1235
  'favorite_data' => $favorite_data,
1499
  require_once ASTRA_SITES_DIR . 'inc/classes/compatibility/class-astra-sites-compatibility.php';
1500
  require_once ASTRA_SITES_DIR . 'inc/classes/class-astra-sites-importer.php';
1501
  require_once ASTRA_SITES_DIR . 'inc/classes/class-astra-sites-wp-cli.php';
1502
+
1503
+ // Batch Import.
1504
+ require_once ASTRA_SITES_DIR . 'inc/classes/batch-import/class-astra-sites-batch-import.php';
1505
+
1506
  }
1507
 
1508
  /**
1517
  */
1518
  public function required_plugin_activate( $init = '', $options = array(), $enabled_extensions = array() ) {
1519
 
1520
+ if ( ! defined( 'WP_CLI' ) && wp_doing_ajax() ) {
1521
  check_ajax_referer( 'astra-sites', '_ajax_nonce' );
1522
 
1523
  if ( ! current_user_can( 'install_plugins' ) || ! isset( $_POST['init'] ) || ! $_POST['init'] ) {
1539
  if ( is_wp_error( $activate ) ) {
1540
  if ( defined( 'WP_CLI' ) ) {
1541
  WP_CLI::error( 'Plugin Activation Error: ' . $activate->get_error_message() );
1542
+ } elseif ( wp_doing_ajax() ) {
1543
  wp_send_json_error(
1544
  array(
1545
  'success' => false,
1556
 
1557
  if ( defined( 'WP_CLI' ) ) {
1558
  WP_CLI::line( 'Plugin Activated!' );
1559
+ } elseif ( wp_doing_ajax() ) {
1560
  wp_send_json_success(
1561
  array(
1562
  'success' => true,
1579
  public function required_plugin( $required_plugins = array(), $options = array(), $enabled_extensions = array() ) {
1580
 
1581
  // Verify Nonce.
1582
+ if ( ! defined( 'WP_CLI' ) && wp_doing_ajax() ) {
1583
  check_ajax_referer( 'astra-sites', '_ajax_nonce' );
1584
  }
1585
 
1682
  // Checking the `install_plugins` and `activate_plugins` capability for the current user.
1683
  // To perform plugin installation process.
1684
  if (
1685
+ ( ! defined( 'WP_CLI' ) && wp_doing_ajax() ) &&
1686
  ( ( ! current_user_can( 'install_plugins' ) && ! empty( $response['notinstalled'] ) ) || ( ! current_user_can( 'activate_plugins' ) && ! empty( $response['inactive'] ) ) ) ) {
1687
  $message = __( 'Insufficient Permission. Please contact your Super Admin to allow the install required plugin permissions.', 'astra-sites' );
1688
  $required_plugins_list = array_merge( $response['notinstalled'], $response['inactive'] );
1702
  'update_avilable_plugins' => $update_avilable_plugins,
1703
  );
1704
 
1705
+ if ( wp_doing_ajax() ) {
 
 
 
1706
  wp_send_json_success( $data );
1707
+ } else {
1708
+ return $data;
1709
  }
 
1710
  }
1711
 
1712
  /**
inc/classes/compatibility/elementor/class-astra-sites-compatibility-elementor.php CHANGED
@@ -55,13 +55,34 @@ if ( ! class_exists( 'Astra_Sites_Compatibility_Elementor' ) ) :
55
  * After defining the constant `WP_LOAD_IMPORTERS` in WP CLI it was not works.
56
  * Try to remove below duplicate code in future.
57
  */
58
- if ( defined( 'WP_CLI' ) || ( defined( 'ELEMENTOR_VERSION' ) && version_compare( ELEMENTOR_VERSION, '3.0.0', '>=' ) ) ) {
59
  remove_filter( 'wp_import_post_meta', array( 'Elementor\Compatibility', 'on_wp_import_post_meta' ) );
60
  remove_filter( 'wxr_importer.pre_process.post_meta', array( 'Elementor\Compatibility', 'on_wxr_importer_pre_process_post_meta' ) );
61
 
62
  add_filter( 'wp_import_post_meta', array( $this, 'on_wp_import_post_meta' ) );
63
  add_filter( 'wxr_importer.pre_process.post_meta', array( $this, 'on_wxr_importer_pre_process_post_meta' ) );
64
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65
  }
66
 
67
  /**
55
  * After defining the constant `WP_LOAD_IMPORTERS` in WP CLI it was not works.
56
  * Try to remove below duplicate code in future.
57
  */
58
+ if ( ! wp_doing_ajax() || ( defined( 'ELEMENTOR_VERSION' ) && version_compare( ELEMENTOR_VERSION, '3.0.0', '>=' ) ) ) {
59
  remove_filter( 'wp_import_post_meta', array( 'Elementor\Compatibility', 'on_wp_import_post_meta' ) );
60
  remove_filter( 'wxr_importer.pre_process.post_meta', array( 'Elementor\Compatibility', 'on_wxr_importer_pre_process_post_meta' ) );
61
 
62
  add_filter( 'wp_import_post_meta', array( $this, 'on_wp_import_post_meta' ) );
63
  add_filter( 'wxr_importer.pre_process.post_meta', array( $this, 'on_wxr_importer_pre_process_post_meta' ) );
64
  }
65
+
66
+ add_action( 'astra_sites_before_delete_imported_posts', array( $this, 'force_delete_kit' ), 10, 2 );
67
+ }
68
+
69
+ /**
70
+ * Force Delete Elementor Kit
71
+ *
72
+ * Delete the previously imported Elementor kit.
73
+ *
74
+ * @param int $post_id Post name.
75
+ * @param string $post_type Post type.
76
+ */
77
+ public function force_delete_kit( $post_id = 0, $post_type = '' ) {
78
+
79
+ if ( ! $post_id ) {
80
+ return;
81
+ }
82
+
83
+ if ( 'elementor_library' === $post_type ) {
84
+ $_GET['force_delete_kit'] = true;
85
+ }
86
  }
87
 
88
  /**
inc/importers/batch-processing/class-astra-sites-batch-processing-elementor.php CHANGED
@@ -97,10 +97,13 @@ class Astra_Sites_Batch_Processing_Elementor extends Source_Local {
97
 
98
  $data = get_post_meta( $post_id, '_elementor_data', true );
99
 
 
 
100
  if ( ! empty( $data ) ) {
101
 
102
  // Update WP form IDs.
103
  $ids_mapping = get_option( 'astra_sites_wpforms_ids_mapping', array() );
 
104
  if ( $ids_mapping ) {
105
  foreach ( $ids_mapping as $old_id => $new_id ) {
106
  $data = str_replace( '[wpforms id=\"' . $old_id, '[wpforms id=\"' . $new_id, $data );
@@ -111,6 +114,8 @@ class Astra_Sites_Batch_Processing_Elementor extends Source_Local {
111
  if ( ! is_array( $data ) ) {
112
  $data = json_decode( $data, true );
113
  }
 
 
114
  $document = Plugin::$instance->documents->get( $post_id );
115
  if ( $document ) {
116
  $data = $document->get_elements_raw_data( $data, true );
@@ -121,6 +126,7 @@ class Astra_Sites_Batch_Processing_Elementor extends Source_Local {
121
 
122
  // Replace the site urls.
123
  $demo_data = get_option( 'astra_sites_import_data', array() );
 
124
  if ( isset( $demo_data['astra-site-url'] ) ) {
125
  $data = wp_json_encode( $data, true );
126
  if ( ! empty( $data ) ) {
97
 
98
  $data = get_post_meta( $post_id, '_elementor_data', true );
99
 
100
+ \Astra_Sites_Importer_Log::add( wp_json_encode( $data ) );
101
+
102
  if ( ! empty( $data ) ) {
103
 
104
  // Update WP form IDs.
105
  $ids_mapping = get_option( 'astra_sites_wpforms_ids_mapping', array() );
106
+ \Astra_Sites_Importer_Log::add( wp_json_encode( $ids_mapping ) );
107
  if ( $ids_mapping ) {
108
  foreach ( $ids_mapping as $old_id => $new_id ) {
109
  $data = str_replace( '[wpforms id=\"' . $old_id, '[wpforms id=\"' . $new_id, $data );
114
  if ( ! is_array( $data ) ) {
115
  $data = json_decode( $data, true );
116
  }
117
+ \Astra_Sites_Importer_Log::add( wp_json_encode( $data ) );
118
+
119
  $document = Plugin::$instance->documents->get( $post_id );
120
  if ( $document ) {
121
  $data = $document->get_elements_raw_data( $data, true );
126
 
127
  // Replace the site urls.
128
  $demo_data = get_option( 'astra_sites_import_data', array() );
129
+ \Astra_Sites_Importer_Log::add( wp_json_encode( $demo_data ) );
130
  if ( isset( $demo_data['astra-site-url'] ) ) {
131
  $data = wp_json_encode( $data, true );
132
  if ( ! empty( $data ) ) {
inc/importers/batch-processing/class-astra-sites-batch-processing.php CHANGED
@@ -80,6 +80,31 @@ if ( ! class_exists( 'Astra_Sites_Batch_Processing' ) ) :
80
  */
81
  public function __construct() {
82
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
83
  // Core Helpers - Image.
84
  // @todo This file is required for Elementor.
85
  // Once we implement our logic for updating elementor data then we'll delete this file.
@@ -113,22 +138,6 @@ if ( ! class_exists( 'Astra_Sites_Batch_Processing' ) ) :
113
  self::$process_all = new WP_Background_Process_Astra();
114
  self::$process_single = new WP_Background_Process_Astra_Single();
115
  self::$process_site_importer = new WP_Background_Process_Astra_Site_Importer();
116
-
117
- // Start image importing after site import complete.
118
- add_filter( 'astra_sites_image_importer_skip_image', array( $this, 'skip_image' ), 10, 2 );
119
- add_action( 'astra_sites_import_complete', array( $this, 'start_process' ) );
120
- add_action( 'astra_sites_process_single', array( $this, 'start_process_single' ) );
121
- add_action( 'admin_head', array( $this, 'start_importer' ) );
122
- add_action( 'wp_ajax_astra-sites-update-library', array( $this, 'update_library' ) );
123
- add_action( 'wp_ajax_astra-sites-update-library-complete', array( $this, 'update_library_complete' ) );
124
- add_action( 'wp_ajax_astra-sites-import-categories', array( $this, 'import_categories' ) );
125
- add_action( 'wp_ajax_astra-sites-import-site-categories', array( $this, 'import_site_categories' ) );
126
- add_action( 'wp_ajax_astra-sites-import-block-categories', array( $this, 'import_block_categories' ) );
127
- add_action( 'wp_ajax_astra-sites-import-page-builders', array( $this, 'import_page_builders' ) );
128
- add_action( 'wp_ajax_astra-sites-import-blocks', array( $this, 'import_blocks' ) );
129
- add_action( 'wp_ajax_astra-sites-get-sites-request-count', array( $this, 'sites_requests_count' ) );
130
- add_action( 'wp_ajax_astra-sites-get-blocks-request-count', array( $this, 'blocks_requests_count' ) );
131
- add_action( 'wp_ajax_astra-sites-import-sites', array( $this, 'import_sites' ) );
132
  }
133
 
134
  /**
@@ -354,6 +363,12 @@ if ( ! class_exists( 'Astra_Sites_Batch_Processing' ) ) :
354
  */
355
  public function start_importer() {
356
 
 
 
 
 
 
 
357
  $is_fresh_site = get_site_option( 'astra-sites-fresh-site', '' );
358
 
359
  // Process initially for the fresh user.
@@ -411,6 +426,12 @@ if ( ! class_exists( 'Astra_Sites_Batch_Processing' ) ) :
411
  */
412
  public function process_batch() {
413
 
 
 
 
 
 
 
414
  if ( 'no' === $this->get_last_export_checksums() ) {
415
  $this->log( 'Library is up to date!' );
416
  if ( defined( 'WP_CLI' ) ) {
@@ -573,6 +594,12 @@ if ( ! class_exists( 'Astra_Sites_Batch_Processing' ) ) :
573
  */
574
  public function process_import() {
575
 
 
 
 
 
 
 
576
  // Batch is already started? Then return.
577
  $status = get_site_option( 'astra-sites-batch-status' );
578
  if ( 'in-process' === $status ) {
@@ -776,6 +803,12 @@ if ( ! class_exists( 'Astra_Sites_Batch_Processing' ) ) :
776
  */
777
  public function start_process() {
778
 
 
 
 
 
 
 
779
  $wxr_id = get_site_option( 'astra_sites_imported_wxr_id', 0 );
780
  if ( $wxr_id ) {
781
  wp_delete_attachment( $wxr_id, true );
80
  */
81
  public function __construct() {
82
 
83
+ $this->includes();
84
+
85
+ // Start image importing after site import complete.
86
+ add_filter( 'astra_sites_image_importer_skip_image', array( $this, 'skip_image' ), 10, 2 );
87
+ add_action( 'astra_sites_import_complete', array( $this, 'start_process' ) );
88
+ add_action( 'astra_sites_process_single', array( $this, 'start_process_single' ) );
89
+ add_action( 'admin_head', array( $this, 'start_importer' ) );
90
+ add_action( 'wp_ajax_astra-sites-update-library', array( $this, 'update_library' ) );
91
+ add_action( 'wp_ajax_astra-sites-update-library-complete', array( $this, 'update_library_complete' ) );
92
+ add_action( 'wp_ajax_astra-sites-import-categories', array( $this, 'import_categories' ) );
93
+ add_action( 'wp_ajax_astra-sites-import-site-categories', array( $this, 'import_site_categories' ) );
94
+ add_action( 'wp_ajax_astra-sites-import-block-categories', array( $this, 'import_block_categories' ) );
95
+ add_action( 'wp_ajax_astra-sites-import-page-builders', array( $this, 'import_page_builders' ) );
96
+ add_action( 'wp_ajax_astra-sites-import-blocks', array( $this, 'import_blocks' ) );
97
+ add_action( 'wp_ajax_astra-sites-get-sites-request-count', array( $this, 'sites_requests_count' ) );
98
+ add_action( 'wp_ajax_astra-sites-get-blocks-request-count', array( $this, 'blocks_requests_count' ) );
99
+ add_action( 'wp_ajax_astra-sites-import-sites', array( $this, 'import_sites' ) );
100
+ }
101
+
102
+ /**
103
+ * Include Files
104
+ *
105
+ * @since x.x.x
106
+ */
107
+ public function includes() {
108
  // Core Helpers - Image.
109
  // @todo This file is required for Elementor.
110
  // Once we implement our logic for updating elementor data then we'll delete this file.
138
  self::$process_all = new WP_Background_Process_Astra();
139
  self::$process_single = new WP_Background_Process_Astra_Single();
140
  self::$process_site_importer = new WP_Background_Process_Astra_Site_Importer();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
141
  }
142
 
143
  /**
363
  */
364
  public function start_importer() {
365
 
366
+ $process_sync = apply_filters( 'astra_sites_initial_sync', true );
367
+
368
+ if ( ! $process_sync ) {
369
+ return;
370
+ }
371
+
372
  $is_fresh_site = get_site_option( 'astra-sites-fresh-site', '' );
373
 
374
  // Process initially for the fresh user.
426
  */
427
  public function process_batch() {
428
 
429
+ $process_sync = apply_filters( 'astra_sites_process_sync_batch', true );
430
+
431
+ if ( ! $process_sync ) {
432
+ return;
433
+ }
434
+
435
  if ( 'no' === $this->get_last_export_checksums() ) {
436
  $this->log( 'Library is up to date!' );
437
  if ( defined( 'WP_CLI' ) ) {
594
  */
595
  public function process_import() {
596
 
597
+ $process_sync = apply_filters( 'astra_sites_process_auto_sync_library', true );
598
+
599
+ if ( ! $process_sync ) {
600
+ return;
601
+ }
602
+
603
  // Batch is already started? Then return.
604
  $status = get_site_option( 'astra-sites-batch-status' );
605
  if ( 'in-process' === $status ) {
803
  */
804
  public function start_process() {
805
 
806
+ /** WordPress Plugin Administration API */
807
+ require_once ABSPATH . 'wp-admin/includes/plugin.php';
808
+ require_once ABSPATH . 'wp-admin/includes/update.php';
809
+
810
+ $this->includes();
811
+
812
  $wxr_id = get_site_option( 'astra_sites_imported_wxr_id', 0 );
813
  if ( $wxr_id ) {
814
  wp_delete_attachment( $wxr_id, true );
inc/importers/batch-processing/helpers/class-wp-async-request.php CHANGED
@@ -5,10 +5,6 @@
5
  *
6
  * Released under the GNU General Public License v2.0
7
  * https://github.com/deliciousbrains/wp-background-processing/blob/master/license.txt
8
- */
9
-
10
- /**
11
- * WP Async Request
12
  *
13
  * @see https://github.com/A5hleyRich/wp-background-processing/
14
  * @package WP-Background-Processing
5
  *
6
  * Released under the GNU General Public License v2.0
7
  * https://github.com/deliciousbrains/wp-background-processing/blob/master/license.txt
 
 
 
 
8
  *
9
  * @see https://github.com/A5hleyRich/wp-background-processing/
10
  * @package WP-Background-Processing
inc/importers/batch-processing/helpers/class-wp-background-process.php CHANGED
@@ -5,10 +5,6 @@
5
  *
6
  * Released under the GNU General Public License v2.0
7
  * https://github.com/deliciousbrains/wp-background-processing/blob/master/license.txt
8
- */
9
-
10
- /**
11
- * WP Background Process
12
  *
13
  * @see https://github.com/A5hleyRich/wp-background-processing/
14
  * @package WP-Background-Processing
5
  *
6
  * Released under the GNU General Public License v2.0
7
  * https://github.com/deliciousbrains/wp-background-processing/blob/master/license.txt
 
 
 
 
8
  *
9
  * @see https://github.com/A5hleyRich/wp-background-processing/
10
  * @package WP-Background-Processing
inc/importers/wxr-importer/class-astra-wxr-importer.php CHANGED
@@ -275,7 +275,7 @@ class Astra_WXR_Importer {
275
  */
276
  public function sse_import( $xml_url = '' ) {
277
 
278
- if ( ! defined( 'WP_CLI' ) ) {
279
 
280
  // Verify Nonce.
281
  check_ajax_referer( 'astra-sites', '_ajax_nonce' );
@@ -310,7 +310,7 @@ class Astra_WXR_Importer {
310
  exit;
311
  }
312
 
313
- if ( ! defined( 'WP_CLI' ) ) {
314
  // Time to run the import!
315
  set_time_limit( 0 );
316
 
@@ -361,7 +361,7 @@ class Astra_WXR_Importer {
361
  }
362
 
363
  $this->emit_sse_message( $complete );
364
- if ( ! defined( 'WP_CLI' ) ) {
365
  exit;
366
  }
367
  }
@@ -551,7 +551,7 @@ class Astra_WXR_Importer {
551
  */
552
  public function emit_sse_message( $data ) {
553
 
554
- if ( ! defined( 'WP_CLI' ) ) {
555
  echo "event: message\n";
556
  echo 'data: ' . wp_json_encode( $data ) . "\n\n";
557
 
275
  */
276
  public function sse_import( $xml_url = '' ) {
277
 
278
+ if ( wp_doing_ajax() ) {
279
 
280
  // Verify Nonce.
281
  check_ajax_referer( 'astra-sites', '_ajax_nonce' );
310
  exit;
311
  }
312
 
313
+ if ( ! wp_doing_ajax() ) {
314
  // Time to run the import!
315
  set_time_limit( 0 );
316
 
361
  }
362
 
363
  $this->emit_sse_message( $complete );
364
+ if ( wp_doing_ajax() ) {
365
  exit;
366
  }
367
  }
551
  */
552
  public function emit_sse_message( $data ) {
553
 
554
+ if ( wp_doing_ajax() ) {
555
  echo "event: message\n";
556
  echo 'data: ' . wp_json_encode( $data ) . "\n\n";
557
 
inc/importers/wxr-importer/class-wp-importer-logger-serversentevents.php CHANGED
@@ -5,14 +5,10 @@
5
  *
6
  * Released under the GNU General Public License v2.0
7
  * https://github.com/humanmade/WordPress-Importer/blob/master/LICENSE
8
- */
9
-
10
- /**
11
- * Import Log ServerSendEvents
12
  *
13
  * @since 2.0.0
14
  *
15
- * @package Astra Sites
16
  */
17
 
18
  if ( ! class_exists( 'WP_Importer_Logger_ServerSentEvents' ) && class_exists( 'WP_Importer_Logger' ) ) {
5
  *
6
  * Released under the GNU General Public License v2.0
7
  * https://github.com/humanmade/WordPress-Importer/blob/master/LICENSE
 
 
 
 
8
  *
9
  * @since 2.0.0
10
  *
11
+ * @package WordPress Importer
12
  */
13
 
14
  if ( ! class_exists( 'WP_Importer_Logger_ServerSentEvents' ) && class_exists( 'WP_Importer_Logger' ) ) {
inc/importers/wxr-importer/class-wp-importer-logger.php CHANGED
@@ -5,10 +5,6 @@
5
  *
6
  * Released under the GNU General Public License v2.0
7
  * https://github.com/humanmade/WordPress-Importer/blob/master/LICENSE
8
- */
9
-
10
- /**
11
- * WordPress Importer
12
  *
13
  * @package WordPress Importer
14
  *
5
  *
6
  * Released under the GNU General Public License v2.0
7
  * https://github.com/humanmade/WordPress-Importer/blob/master/LICENSE
 
 
 
 
8
  *
9
  * @package WordPress Importer
10
  *
inc/importers/wxr-importer/class-wxr-import-info.php CHANGED
@@ -5,14 +5,10 @@
5
  *
6
  * Released under the GNU General Public License v2.0
7
  * https://github.com/humanmade/WordPress-Importer/blob/master/LICENSE
8
- */
9
-
10
- /**
11
- * WXR Import Info
12
  *
13
  * @since 2.0.0
14
  *
15
- * @package Astra Sites
16
  */
17
 
18
  if ( ! class_exists( 'WXR_Import_Info' ) ) {
5
  *
6
  * Released under the GNU General Public License v2.0
7
  * https://github.com/humanmade/WordPress-Importer/blob/master/LICENSE
 
 
 
 
8
  *
9
  * @since 2.0.0
10
  *
11
+ * @package WordPress Importer
12
  */
13
 
14
  if ( ! class_exists( 'WXR_Import_Info' ) ) {
inc/importers/wxr-importer/class-wxr-importer.php CHANGED
@@ -5,14 +5,10 @@
5
  *
6
  * Released under the GNU General Public License v2.0
7
  * https://github.com/humanmade/WordPress-Importer/blob/master/LICENSE
 
 
8
  */
9
 
10
- /**
11
- * WXR Importer
12
- *
13
- * @package WXR Importer
14
- */
15
-
16
  if ( ! class_exists( 'WXR_Importer' ) && class_exists( 'WP_Importer' ) ) :
17
 
18
  /**
@@ -879,15 +875,15 @@ if ( ! class_exists( 'WXR_Importer' ) && class_exists( 'WP_Importer' ) ) :
879
 
880
  $post_exists = $this->post_exists( $data );
881
  if ( $post_exists ) {
882
- $this->logger->info(
883
- sprintf(
884
- /* translators: %1$s single post type, %2$s is post title. */
885
- __( '%1$s "%2$s" already exists.', 'wordpress-importer' ),
886
- $post_type_object->labels->singular_name,
887
- $data['post_title']
888
- )
889
  );
890
 
 
 
891
  /**
892
  * Post processing already imported.
893
  *
@@ -2424,7 +2420,7 @@ if ( ! class_exists( 'WXR_Importer' ) && class_exists( 'WP_Importer' ) ) :
2424
  }
2425
 
2426
  // Still nothing, try post_exists, and cache it.
2427
- $exists = post_exists( $data['post_title'], $data['post_content'], $data['post_date'] );
2428
  $this->exists['post'][ $exists_key ] = $exists;
2429
 
2430
  return $exists;
5
  *
6
  * Released under the GNU General Public License v2.0
7
  * https://github.com/humanmade/WordPress-Importer/blob/master/LICENSE
8
+ *
9
+ * @package WXR Importer
10
  */
11
 
 
 
 
 
 
 
12
  if ( ! class_exists( 'WXR_Importer' ) && class_exists( 'WP_Importer' ) ) :
13
 
14
  /**
875
 
876
  $post_exists = $this->post_exists( $data );
877
  if ( $post_exists ) {
878
+ $message = sprintf(
879
+ /* translators: %1$s single post type, %2$s is post title. */
880
+ __( '%1$s "%2$s" already exists.', 'wordpress-importer' ),
881
+ $post_type_object->labels->singular_name,
882
+ $data['post_title']
 
 
883
  );
884
 
885
+ $this->logger->info( $message );
886
+
887
  /**
888
  * Post processing already imported.
889
  *
2420
  }
2421
 
2422
  // Still nothing, try post_exists, and cache it.
2423
+ $exists = post_exists( $data['post_title'], $data['post_content'], $data['post_date'], $data['post_type'] );
2424
  $this->exists['post'][ $exists_key ] = $exists;
2425
 
2426
  return $exists;
inc/includes/admin-page.php CHANGED
@@ -663,6 +663,59 @@ if ( ! defined( 'ABSPATH' ) ) {
663
  <div class="overlay"></div>
664
  <div class="inner">
665
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
666
  <div class="default">
667
  <div class="heading">
668
  <# if( 'astra-sites' === data ) { #>
@@ -703,7 +756,7 @@ if ( ! defined( 'ABSPATH' ) ) {
703
 
704
  <li class="astra-sites-import-customizer <?php echo esc_attr( $theme_dependancy_class ); ?>">
705
  <label>
706
- <input type="checkbox" name="customizer" checked="checked" class="checkbox">
707
  <strong><?php esc_html_e( 'Import Customizer Settings', 'astra-sites' ); ?></strong>
708
  <span class="astra-sites-tooltip-icon" data-tip-id="astra-sites-tooltip-customizer-settings"><span class="dashicons dashicons-editor-help"></span></span>
709
  <div class="astra-sites-tooltip-message" id="astra-sites-tooltip-customizer-settings" style="display: none;">
@@ -718,14 +771,14 @@ if ( ! defined( 'ABSPATH' ) ) {
718
  <# if( 'astra-sites' === data ) { #>
719
  <li class="astra-sites-import-widgets">
720
  <label>
721
- <input type="checkbox" name="widgets" checked="checked" class="checkbox">
722
  <strong><?php esc_html_e( 'Import Widgets', 'astra-sites' ); ?></strong>
723
  </label>
724
  </li>
725
  <# } #>
726
 
727
  <li class="astra-sites-import-plugins">
728
- <input type="checkbox" name="plugins" checked="checked" class="disabled checkbox" readonly>
729
  <strong><?php esc_html_e( 'Install Required Plugins', 'astra-sites' ); ?></strong>
730
  <span class="astra-sites-tooltip-icon" data-tip-id="astra-sites-tooltip-plugins-settings"><span class="dashicons dashicons-editor-help"></span></span>
731
  <div class="astra-sites-tooltip-message" id="astra-sites-tooltip-plugins-settings" style="display: none;">
@@ -737,7 +790,7 @@ if ( ! defined( 'ABSPATH' ) ) {
737
  <# if( 'astra-sites' === data ) { #>
738
  <li class="astra-sites-import-xml">
739
  <label>
740
- <input type="checkbox" name="xml" checked="checked" class="checkbox">
741
  <strong><?php esc_html_e( 'Import Content', 'astra-sites' ); ?></strong>
742
  </label>
743
  <span class="astra-sites-tooltip-icon" data-tip-id="astra-sites-tooltip-site-content"><span class="dashicons dashicons-editor-help"></span></span>
663
  <div class="overlay"></div>
664
  <div class="inner">
665
 
666
+ <div class="subscription-popup">
667
+ <div class="heading">
668
+ <h3><?php esc_html_e( 'One Last Step..', 'astra-sites' ); ?></h3>
669
+ <span class="dashicons close dashicons-no-alt"></span>
670
+ </div>
671
+ <div class="astra-sites-import-content">
672
+ <p><?php esc_html_e( 'To get access to exclusive starter templates, themes and updates, enter your details below:', 'astra-sites' ); ?></p>
673
+ <div class="subscription-form">
674
+ <div class="subscription-fields">
675
+ <div class="subscription-field">
676
+ <div class="subscription-input">
677
+ <input name="first_name" class="subscription-input-user-name" type="text" placeholder="<?php esc_html_e( 'Your First Name', 'astra-sites' ); ?>" />
678
+ </div>
679
+ </div>
680
+ <div class="subscription-field subscription-user-type">
681
+ <div class="subscription-input">
682
+ <select name="user_type">
683
+ <option value="">
684
+ <?php esc_html_e( 'I build websites for:', 'astra-sites' ); ?>
685
+ </option>
686
+ <option value="1">
687
+ <?php esc_html_e( 'Myself', 'astra-sites' ); ?>
688
+ </option>
689
+ <option value="2">
690
+ <?php esc_html_e( 'Someone else as a profession', 'astra-sites' ); ?>
691
+ </option>
692
+ <option value="3">
693
+ <?php esc_html_e( 'Someone else as a hobby', 'astra-sites' ); ?>
694
+ </option>
695
+ </select>
696
+ </div>
697
+ </div>
698
+ </div>
699
+ <div class="subscription-field">
700
+ <div class="subscription-input">
701
+ <input name="email" class="subscription-input-user-email" type="email" placeholder="<?php esc_html_e( 'Your Work Email', 'astra-sites' ); ?>" />
702
+ </div>
703
+ </div>
704
+ </div>
705
+ <input name="page_builder" type="hidden" placeholder="john.doe@example.com" />
706
+ <div class="subscription-actions">
707
+ <button class="button button-hero button-primary button-subscription-submit">
708
+ <span class="button-title"><?php esc_html_e( 'Submit and Start Importing', 'astra-sites' ); ?></span>
709
+ <span class="dashicons dashicons-update"></span>
710
+ </button>
711
+ </div>
712
+ <div class="subscription-footer">
713
+ <p>By submitting, you agree to our <a href="https://store.brainstormforce.com/terms-and-conditions/" target="_blank">Terms</a> and <a href="https://store.brainstormforce.com/privacy-policy/" target="_blank">Privacy Policy</a>.</p>
714
+ <a href="#" class="button-subscription-skip">Skip</a>
715
+ </div>
716
+ </div>
717
+ </div>
718
+
719
  <div class="default">
720
  <div class="heading">
721
  <# if( 'astra-sites' === data ) { #>
756
 
757
  <li class="astra-sites-import-customizer <?php echo esc_attr( $theme_dependancy_class ); ?>">
758
  <label>
759
+ <input type="checkbox" name="customizer" class="checkbox" checked="checked" />
760
  <strong><?php esc_html_e( 'Import Customizer Settings', 'astra-sites' ); ?></strong>
761
  <span class="astra-sites-tooltip-icon" data-tip-id="astra-sites-tooltip-customizer-settings"><span class="dashicons dashicons-editor-help"></span></span>
762
  <div class="astra-sites-tooltip-message" id="astra-sites-tooltip-customizer-settings" style="display: none;">
771
  <# if( 'astra-sites' === data ) { #>
772
  <li class="astra-sites-import-widgets">
773
  <label>
774
+ <input type="checkbox" name="widgets" class="checkbox" checked="checked" />
775
  <strong><?php esc_html_e( 'Import Widgets', 'astra-sites' ); ?></strong>
776
  </label>
777
  </li>
778
  <# } #>
779
 
780
  <li class="astra-sites-import-plugins">
781
+ <input type="checkbox" name="plugins" class="disabled checkbox" readonly checked="checked" />
782
  <strong><?php esc_html_e( 'Install Required Plugins', 'astra-sites' ); ?></strong>
783
  <span class="astra-sites-tooltip-icon" data-tip-id="astra-sites-tooltip-plugins-settings"><span class="dashicons dashicons-editor-help"></span></span>
784
  <div class="astra-sites-tooltip-message" id="astra-sites-tooltip-plugins-settings" style="display: none;">
790
  <# if( 'astra-sites' === data ) { #>
791
  <li class="astra-sites-import-xml">
792
  <label>
793
+ <input type="checkbox" name="xml" class="checkbox" checked="checked" />
794
  <strong><?php esc_html_e( 'Import Content', 'astra-sites' ); ?></strong>
795
  </label>
796
  <span class="astra-sites-tooltip-icon" data-tip-id="astra-sites-tooltip-site-content"><span class="dashicons dashicons-editor-help"></span></span>
languages/astra-sites.pot CHANGED
@@ -1,14 +1,14 @@
1
- # Copyright (C) 2020 Brainstorm Force
2
  # This file is distributed under the same license as the Starter Templates package.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Starter Templates 2.4.0\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/astra-sites\n"
7
- "POT-Creation-Date: 2020-08-27 10:35:32+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
- "PO-Revision-Date: 2020-MO-DA HO:MI+ZONE\n"
12
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
  "Language-Team: LANGUAGE <LL@li.org>\n"
14
  "Language: en\n"
@@ -73,6 +73,106 @@ msgstr ""
73
  msgid "Starter Templates"
74
  msgstr ""
75
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
76
  #: inc/classes/class-astra-sites-importer-log.php:96
77
  msgid "Required File Permissions to import the templates are missing."
78
  msgstr ""
@@ -115,15 +215,15 @@ msgstr ""
115
  #: inc/classes/class-astra-sites-importer.php:414
116
  #: inc/classes/class-astra-sites-importer.php:460
117
  #: inc/classes/class-astra-sites-importer.php:508
118
- #: inc/classes/class-astra-sites-importer.php:662
119
- #: inc/classes/class-astra-sites-importer.php:690
120
- #: inc/classes/class-astra-sites-importer.php:724
121
- #: inc/classes/class-astra-sites-importer.php:776
122
- #: inc/classes/class-astra-sites-importer.php:815
123
- #: inc/classes/class-astra-sites-importer.php:850
124
- #: inc/classes/class-astra-sites.php:231 inc/classes/class-astra-sites.php:405
125
- #: inc/classes/class-astra-sites.php:509 inc/classes/class-astra-sites.php:582
126
- #: inc/classes/class-astra-sites.php:773 inc/classes/class-astra-sites.php:792
127
  msgid "You are not allowed to perform this action"
128
  msgstr ""
129
 
@@ -178,136 +278,168 @@ msgstr ""
178
  msgid "Settings saved successfully."
179
  msgstr ""
180
 
181
- #: inc/classes/class-astra-sites-page.php:436
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
182
  msgid "Getting Started"
183
  msgstr ""
184
 
185
- #: inc/classes/class-astra-sites-page.php:441
186
  msgid "Select Page Builder"
187
  msgstr ""
188
 
189
- #: inc/classes/class-astra-sites-page.php:442
190
  msgid ""
191
  "We offer starter templates that can be imported in one click. These sites "
192
  "are available in the following page builders. Please choose your preferred "
193
  "page builder from the list below."
194
  msgstr ""
195
 
196
- #: inc/classes/class-astra-sites-page.php:501
197
  msgid "My Favorite"
198
  msgstr ""
199
 
200
- #: inc/classes/class-astra-sites-page.php:506 inc/includes/templates.php:127
201
  msgid "Sync Library"
202
  msgstr ""
203
 
204
- #: inc/classes/class-astra-sites-page.php:595
205
- #: inc/classes/class-astra-sites-page.php:597
206
- #: inc/classes/class-astra-sites-page.php:609
207
- #: inc/classes/class-astra-sites.php:996 inc/includes/templates.php:28
208
  #: inc/includes/templates.php:35
209
  msgid "All"
210
  msgstr ""
211
 
212
- #: inc/classes/class-astra-sites-page.php:614 inc/includes/templates.php:29
213
  msgid "Free"
214
  msgstr ""
215
 
216
- #: inc/classes/class-astra-sites-page.php:619 inc/includes/admin-page.php:231
217
  #: inc/includes/admin-page.php:320 inc/includes/admin-page.php:381
218
  #: inc/includes/templates.php:30 inc/includes/templates.php:178
219
  #: inc/includes/templates.php:307 inc/includes/templates.php:394
220
  msgid "Agency"
221
  msgstr ""
222
 
223
- #: inc/classes/class-astra-sites-page.php:627 inc/includes/templates.php:50
224
  msgid "Search..."
225
  msgstr ""
226
 
227
- #: inc/classes/class-astra-sites-page.php:701
228
  msgid "Elementor"
229
  msgstr ""
230
 
231
- #: inc/classes/class-astra-sites-page.php:706
232
  msgid "Beaver Builder"
233
  msgstr ""
234
 
235
- #: inc/classes/class-astra-sites-page.php:711
236
  msgid "Gutenberg"
237
  msgstr ""
238
 
239
- #: inc/classes/class-astra-sites-page.php:716
240
  msgid "Brizy"
241
  msgstr ""
242
 
243
- #: inc/classes/class-astra-sites-page.php:814
244
  #. translators: 1: The number of years in an interval of time.
245
  msgid "%s year"
246
  msgid_plural "%s years"
247
  msgstr[0] ""
248
  msgstr[1] ""
249
 
250
- #: inc/classes/class-astra-sites-page.php:816
251
  #. translators: 1: The number of months in an interval of time.
252
  msgid "%s month"
253
  msgid_plural "%s months"
254
  msgstr[0] ""
255
  msgstr[1] ""
256
 
257
- #: inc/classes/class-astra-sites-page.php:818
258
  #. translators: 1: The number of weeks in an interval of time.
259
  msgid "%s week"
260
  msgid_plural "%s weeks"
261
  msgstr[0] ""
262
  msgstr[1] ""
263
 
264
- #: inc/classes/class-astra-sites-page.php:820
265
  #. translators: 1: The number of days in an interval of time.
266
  msgid "%s day"
267
  msgid_plural "%s days"
268
  msgstr[0] ""
269
  msgstr[1] ""
270
 
271
- #: inc/classes/class-astra-sites-page.php:822
272
  #. translators: 1: The number of hours in an interval of time.
273
  msgid "%s hour"
274
  msgid_plural "%s hours"
275
  msgstr[0] ""
276
  msgstr[1] ""
277
 
278
- #: inc/classes/class-astra-sites-page.php:824
279
  #. translators: 1: The number of minutes in an interval of time.
280
  msgid "%s minute"
281
  msgid_plural "%s minutes"
282
  msgstr[0] ""
283
  msgstr[1] ""
284
 
285
- #: inc/classes/class-astra-sites-page.php:826
286
  #. translators: 1: The number of seconds in an interval of time.
287
  msgid "%s second"
288
  msgid_plural "%s seconds"
289
  msgstr[0] ""
290
  msgstr[1] ""
291
 
292
- #: inc/classes/class-astra-sites-page.php:830
293
  msgid "now"
294
  msgstr ""
295
 
296
- #: inc/classes/class-astra-sites-page.php:884
297
  msgid ""
298
  "ERROR! Cron schedules are disabled by setting constant DISABLE_WP_CRON to "
299
  "true.<br/>To start the import process please enable the cron by setting the "
300
  "constant to false. E.g. define( 'DISABLE_WP_CRON', false );"
301
  msgstr ""
302
 
303
- #: inc/classes/class-astra-sites-page.php:888
304
  msgid ""
305
  "ERROR! Cron schedules are disabled by setting constant ALTERNATE_WP_CRON to "
306
  "true.<br/>To start the import process please enable the cron by setting the "
307
  "constant to false. E.g. define( 'ALTERNATE_WP_CRON', false );"
308
  msgstr ""
309
 
310
- #: inc/classes/class-astra-sites-page.php:924
311
  #. translators: 1: The HTTP response code.
312
  msgid "Unexpected HTTP response code: %s"
313
  msgstr ""
@@ -453,204 +585,199 @@ msgstr ""
453
  msgid "This site category does not exist. Please try a different site category."
454
  msgstr ""
455
 
456
- #: inc/classes/class-astra-sites.php:235
457
  msgid "Invalid API URL"
458
  msgstr ""
459
 
460
- #: inc/classes/class-astra-sites.php:247
461
  msgid "Invalid Post Meta"
462
  msgstr ""
463
 
464
- #: inc/classes/class-astra-sites.php:254
465
  msgid "Invalid Post ID or Elementor Meta"
466
  msgstr ""
467
 
468
- #: inc/classes/class-astra-sites.php:276
469
  msgid "Provided API URL is empty! Please try again!"
470
  msgstr ""
471
 
472
- #: inc/classes/class-astra-sites.php:800
473
  msgid "Theme Activated"
474
  msgstr ""
475
 
476
- #: inc/classes/class-astra-sites.php:847
477
  msgid "User does not have permission!"
478
  msgstr ""
479
 
480
- #: inc/classes/class-astra-sites.php:934
481
  msgid "See Library"
482
  msgstr ""
483
 
484
- #: inc/classes/class-astra-sites.php:997
485
  msgid "Animals"
486
  msgstr ""
487
 
488
- #: inc/classes/class-astra-sites.php:998
489
  msgid "Architecture/Buildings"
490
  msgstr ""
491
 
492
- #: inc/classes/class-astra-sites.php:999
493
  msgid "Backgrounds/Textures"
494
  msgstr ""
495
 
496
- #: inc/classes/class-astra-sites.php:1000
497
  msgid "Beauty/Fashion"
498
  msgstr ""
499
 
500
- #: inc/classes/class-astra-sites.php:1001
501
  msgid "Business/Finance"
502
  msgstr ""
503
 
504
- #: inc/classes/class-astra-sites.php:1002
505
  msgid "Computer/Communication"
506
  msgstr ""
507
 
508
- #: inc/classes/class-astra-sites.php:1003
509
  msgid "Education"
510
  msgstr ""
511
 
512
- #: inc/classes/class-astra-sites.php:1004
513
  msgid "Emotions"
514
  msgstr ""
515
 
516
- #: inc/classes/class-astra-sites.php:1005
517
  msgid "Food/Drink"
518
  msgstr ""
519
 
520
- #: inc/classes/class-astra-sites.php:1006
521
  msgid "Health/Medical"
522
  msgstr ""
523
 
524
- #: inc/classes/class-astra-sites.php:1007
525
  msgid "Industry/Craft"
526
  msgstr ""
527
 
528
- #: inc/classes/class-astra-sites.php:1008
529
  msgid "Music"
530
  msgstr ""
531
 
532
- #: inc/classes/class-astra-sites.php:1009
533
  msgid "Nature/Landscapes"
534
  msgstr ""
535
 
536
- #: inc/classes/class-astra-sites.php:1010
537
  msgid "People"
538
  msgstr ""
539
 
540
- #: inc/classes/class-astra-sites.php:1011
541
  msgid "Places/Monuments"
542
  msgstr ""
543
 
544
- #: inc/classes/class-astra-sites.php:1012
545
  msgid "Religion"
546
  msgstr ""
547
 
548
- #: inc/classes/class-astra-sites.php:1013
549
  msgid "Science/Technology"
550
  msgstr ""
551
 
552
- #: inc/classes/class-astra-sites.php:1014
553
  msgid "Sports"
554
  msgstr ""
555
 
556
- #: inc/classes/class-astra-sites.php:1015
557
  msgid "Transportation/Traffic"
558
  msgstr ""
559
 
560
- #: inc/classes/class-astra-sites.php:1016
561
  msgid "Travel/Vacation"
562
  msgstr ""
563
 
564
- #: inc/classes/class-astra-sites.php:1019
565
  msgid "Popular"
566
  msgstr ""
567
 
568
- #: inc/classes/class-astra-sites.php:1020
569
  msgid "Latest"
570
  msgstr ""
571
 
572
- #: inc/classes/class-astra-sites.php:1021
573
  msgid "Upcoming"
574
  msgstr ""
575
 
576
- #: inc/classes/class-astra-sites.php:1022
577
  msgid "Editor's Choice"
578
  msgstr ""
579
 
580
- #: inc/classes/class-astra-sites.php:1025
581
  msgid "Any Orientation"
582
  msgstr ""
583
 
584
- #: inc/classes/class-astra-sites.php:1026
585
  msgid "Vertical"
586
  msgstr ""
587
 
588
- #: inc/classes/class-astra-sites.php:1027
589
  msgid "Horizontal"
590
  msgstr ""
591
 
592
- #: inc/classes/class-astra-sites.php:1029
593
  msgid "Free Images from Pixabay"
594
  msgstr ""
595
 
596
- #: inc/classes/class-astra-sites.php:1030
597
  msgid "Pixabay Search - Ex: flowers"
598
  msgstr ""
599
 
600
- #: inc/classes/class-astra-sites.php:1031
601
  msgid "Downloading..."
602
  msgstr ""
603
 
604
- #: inc/classes/class-astra-sites.php:1032
605
  msgid "Validating..."
606
  msgstr ""
607
 
608
- #: inc/classes/class-astra-sites.php:1033
609
  msgid "Please enter an API key."
610
  msgstr ""
611
 
612
- #: inc/classes/class-astra-sites.php:1034
613
  msgid "An error occured with code "
614
  msgstr ""
615
 
616
- #: inc/classes/class-astra-sites.php:1086
617
  msgid "Installed! Activating.."
618
  msgstr ""
619
 
620
- #: inc/classes/class-astra-sites.php:1087
621
  msgid "Activating..."
622
  msgstr ""
623
 
624
- #: inc/classes/class-astra-sites.php:1088
625
  msgid "Activated!"
626
  msgstr ""
627
 
628
- #: inc/classes/class-astra-sites.php:1089
629
  msgid "Installing..."
630
  msgstr ""
631
 
632
- #: inc/classes/class-astra-sites.php:1171
633
- #: inc/classes/class-astra-sites.php:1371
634
- msgid "Get Agency Bundle"
635
- msgstr ""
636
-
637
- #: inc/classes/class-astra-sites.php:1173
638
  msgid "Upgrade"
639
  msgstr ""
640
 
641
- #: inc/classes/class-astra-sites.php:1177
642
  msgid ""
643
  "Syncing template library in the background. The process can take anywhere "
644
  "between 2 to 3 minutes. We will notify you once done."
645
  msgstr ""
646
 
647
- #: inc/classes/class-astra-sites.php:1178
648
  msgid ""
649
  "Some of the files required during the import process are "
650
  "missing.<br/><br/>Please try again after some time."
651
  msgstr ""
652
 
653
- #: inc/classes/class-astra-sites.php:1179
654
  msgid ""
655
  "<p>WordPress debug mode is currently enabled on your website. This has "
656
  "interrupted the import process..</p><p>Kindly disable debug mode and try "
@@ -659,8 +786,8 @@ msgid ""
659
  "mode.</p><p><code>define('WP_DEBUG', false);</code></p>"
660
  msgstr ""
661
 
662
- #: inc/classes/class-astra-sites.php:1181
663
- #: inc/classes/class-astra-sites.php:1183
664
  #. translators: %s is a documentation link.
665
  msgid ""
666
  "<p>Your website is facing a temporary issue in connecting the template "
@@ -668,181 +795,181 @@ msgid ""
668
  "the issue and continue importing template.</p>"
669
  msgstr ""
670
 
671
- #: inc/classes/class-astra-sites.php:1187
672
  #. translators: %s are white label strings.
673
  msgid ""
674
  "Warning! %1$s Import process is not complete. Don't close the window until "
675
  "import process complete. Do you still want to leave the window?"
676
  msgstr ""
677
 
678
- #: inc/classes/class-astra-sites.php:1188
679
  msgid "Done! View Site"
680
  msgstr ""
681
 
682
- #: inc/classes/class-astra-sites.php:1191
683
  #. translators: %s is a template name
684
  msgid "Import \"%s\" Template"
685
  msgstr ""
686
 
687
- #: inc/classes/class-astra-sites.php:1194
688
  msgid "Installing Required Plugins.."
689
  msgstr ""
690
 
691
- #: inc/classes/class-astra-sites.php:1196
692
  #. translators: %s are white label strings.
693
  msgid "Installing %1$s Theme.."
694
  msgstr ""
695
 
696
- #: inc/classes/class-astra-sites.php:1216
697
  msgid "Dismiss this notice."
698
  msgstr ""
699
 
700
- #: inc/classes/class-astra-sites.php:1233
701
  msgid "XMLReader Support Missing"
702
  msgstr ""
703
 
704
- #: inc/classes/class-astra-sites.php:1235
705
  #. translators: %s doc link.
706
  msgid ""
707
  "You're close to importing the template. To complete the process, enable "
708
  "XMLReader support on your website.."
709
  msgstr ""
710
 
711
- #: inc/classes/class-astra-sites.php:1235
712
- #: inc/classes/class-astra-sites.php:1240
713
- #: inc/classes/class-astra-sites.php:1245 inc/includes/admin-page.php:628
714
  #. translators: %s doc link.
715
  msgid ""
716
  "Read an article <a href=\"%s\" target=\"_blank\">here</a> to resolve the "
717
  "issue."
718
  msgstr ""
719
 
720
- #: inc/classes/class-astra-sites.php:1238
721
  msgid "cURL Support Missing"
722
  msgstr ""
723
 
724
- #: inc/classes/class-astra-sites.php:1240
725
  #. translators: %s doc link.
726
  msgid "To run a smooth import, kindly enable cURL support on your website."
727
  msgstr ""
728
 
729
- #: inc/classes/class-astra-sites.php:1243
730
  msgid "Disable Debug Mode"
731
  msgstr ""
732
 
733
- #: inc/classes/class-astra-sites.php:1245
734
  #. translators: %s doc link.
735
  msgid ""
736
  "WordPress debug mode is currently enabled on your website. With this, any "
737
  "errors from third-party plugins might affect the import process."
738
  msgstr ""
739
 
740
- #: inc/classes/class-astra-sites.php:1245
741
  msgid ""
742
  "Kindly disable it to continue importing the Starter Template. To do so, you "
743
  "can add the following code into the wp-config.php file."
744
  msgstr ""
745
 
746
- #: inc/classes/class-astra-sites.php:1248
747
  msgid "Update Plugin"
748
  msgstr ""
749
 
750
- #: inc/classes/class-astra-sites.php:1250
751
  #. translators: %s update page link.
752
  msgid "Updates are available for plugins used in this starter template."
753
  msgstr ""
754
 
755
- #: inc/classes/class-astra-sites.php:1250
756
  msgid ""
757
  "Kindly <a href=\"%s\" target=\"_blank\">update</a> them for a successful "
758
  "import. Skipping this step might break the template design/feature."
759
  msgstr ""
760
 
761
- #: inc/classes/class-astra-sites.php:1253 inc/includes/admin-page.php:479
762
  #: inc/includes/templates.php:443
763
  msgid "Required Plugins Missing"
764
  msgstr ""
765
 
766
- #: inc/classes/class-astra-sites.php:1254 inc/includes/admin-page.php:483
767
  msgid ""
768
  "This starter template requires premium plugins. As these are third party "
769
  "premium plugins, you'll need to purchase, install and activate them first."
770
  msgstr ""
771
 
772
- #: inc/classes/class-astra-sites.php:1257
773
  msgid "Dynamic Page"
774
  msgstr ""
775
 
776
- #: inc/classes/class-astra-sites.php:1258 inc/includes/admin-page.php:645
777
  msgid ""
778
  "The page template you are about to import contains a dynamic widget/module. "
779
  "Please note this dynamic data will not be available with the imported page."
780
  msgstr ""
781
 
782
- #: inc/classes/class-astra-sites.php:1258 inc/includes/admin-page.php:646
783
  msgid "You will need to add it manually on the page."
784
  msgstr ""
785
 
786
- #: inc/classes/class-astra-sites.php:1258 inc/includes/admin-page.php:647
787
  msgid "This dynamic content will be available when you import the entire site."
788
  msgstr ""
789
 
790
- #: inc/classes/class-astra-sites.php:1345
791
  #. translators: %s are link.
792
  msgid ""
793
  "This is a premium website demo available only with the Agency Bundles you "
794
  "can purchase it from <a href=\"%s\" target=\"_blank\">here</a>."
795
  msgstr ""
796
 
797
- #: inc/classes/class-astra-sites.php:1349
798
  #. translators: %s are link.
799
  msgid ""
800
  "This is a premium template available with 'Agency' packages. <a href=\"%s\" "
801
  "target=\"_blank\">Validate Your License</a> Key to import this template."
802
  msgstr ""
803
 
804
- #: inc/classes/class-astra-sites.php:1375
805
  msgid "Template"
806
  msgstr ""
807
 
808
- #: inc/classes/class-astra-sites.php:1376
809
  msgid "Block"
810
  msgstr ""
811
 
812
- #: inc/classes/class-astra-sites.php:1377 inc/includes/templates.php:65
813
  msgid "Dismiss"
814
  msgstr ""
815
 
816
- #: inc/classes/class-astra-sites.php:1378 inc/includes/admin-page.php:729
817
  msgid "Install Required Plugins"
818
  msgstr ""
819
 
820
- #: inc/classes/class-astra-sites.php:1382
821
  #. translators: %s are link.
822
  msgid ""
823
  "You can locate <strong>Starter Templates Settings</strong> under the "
824
  "<strong>Page Settings</strong> of the Style Tab."
825
  msgstr ""
826
 
827
- #: inc/classes/class-astra-sites.php:1384
828
  msgid "Read More →"
829
  msgstr ""
830
 
831
- #: inc/classes/class-astra-sites.php:1497
832
  msgid "Error: You don't have the required permissions to install plugins."
833
  msgstr ""
834
 
835
- #: inc/classes/class-astra-sites.php:1533
836
  msgid "Plugin Activated"
837
  msgstr ""
838
 
839
- #: inc/classes/class-astra-sites.php:1657
840
  msgid ""
841
  "Insufficient Permission. Please contact your Super Admin to allow the "
842
  "install required plugin permissions."
843
  msgstr ""
844
 
845
- #: inc/classes/class-astra-sites.php:1851
846
  msgid "Template library refreshed!"
847
  msgstr ""
848
 
@@ -850,215 +977,215 @@ msgstr ""
850
  msgid "All processes are complete"
851
  msgstr ""
852
 
853
- #: inc/importers/batch-processing/helpers/class-wp-background-process.php:440
854
  #. translators: %d are the minutes.
855
  msgid "Every %d Minutes"
856
  msgstr ""
857
 
858
- #: inc/importers/class-astra-widget-importer.php:88
859
  msgid "Import data could not be read. Please try a different file."
860
  msgstr ""
861
 
862
- #: inc/importers/class-astra-widget-importer.php:132
863
  msgid "Widget area does not exist in theme (using Inactive)"
864
  msgstr ""
865
 
866
- #: inc/importers/class-astra-widget-importer.php:154
867
  msgid "Site does not support widget"
868
  msgstr ""
869
 
870
- #: inc/importers/class-astra-widget-importer.php:190
871
  msgid "Widget already exists"
872
  msgstr ""
873
 
874
- #: inc/importers/class-astra-widget-importer.php:259
875
  msgid "Imported"
876
  msgstr ""
877
 
878
- #: inc/importers/class-astra-widget-importer.php:262
879
  msgid "Imported to Inactive"
880
  msgstr ""
881
 
882
- #: inc/importers/class-astra-widget-importer.php:268
883
  msgid "No Title"
884
  msgstr ""
885
 
886
- #: inc/importers/wxr-importer/class-astra-wxr-importer.php:422
887
  msgid "Import complete!"
888
  msgstr ""
889
 
890
- #: inc/importers/wxr-importer/class-wxr-importer.php:224
891
  msgid "Could not open the file for parsing"
892
  msgstr ""
893
 
894
- #: inc/importers/wxr-importer/class-wxr-importer.php:262
895
- #: inc/importers/wxr-importer/class-wxr-importer.php:381
896
- #: inc/importers/wxr-importer/class-wxr-importer.php:457
897
  #. translators: %1$s is WXR version, %2$s is max supported WXR version.
898
  msgid ""
899
  "This WXR file (version %1$s) is newer than the importer (version %2$s) and "
900
  "may not be supported. Please consider updating."
901
  msgstr ""
902
 
903
- #: inc/importers/wxr-importer/class-wxr-importer.php:608
904
  msgid "The file does not exist, please try again."
905
  msgstr ""
906
 
907
- #: inc/importers/wxr-importer/class-wxr-importer.php:668
908
  msgid "Invalid author mapping"
909
  msgstr ""
910
 
911
- #: inc/importers/wxr-importer/class-wxr-importer.php:769
912
  msgid "Cannot import auto-draft posts"
913
  msgstr ""
914
 
915
- #: inc/importers/wxr-importer/class-wxr-importer.php:864
916
  #. translators: %1$s is the import message, %2$s is post type.
917
  msgid "Failed to import \"%1$s\": Invalid post type %2$s"
918
  msgstr ""
919
 
920
- #: inc/importers/wxr-importer/class-wxr-importer.php:877
921
  #. translators: %1$s single post type, %2$s is post title.
922
  msgid "%1$s \"%2$s\" already exists."
923
  msgstr ""
924
 
925
- #: inc/importers/wxr-importer/class-wxr-importer.php:974
926
  #. translators: %s is post title
927
  msgid "Skipping attachment \"%s\", fetching attachments disabled"
928
  msgstr ""
929
 
930
- #: inc/importers/wxr-importer/class-wxr-importer.php:998
931
  #. translators: %1$s is the post title, %2$s is post type.
932
  msgid "Failed to import \"%1$s\" (%2$s)"
933
  msgstr ""
934
 
935
- #: inc/importers/wxr-importer/class-wxr-importer.php:1033
936
- #: inc/importers/wxr-importer/class-wxr-importer.php:1921
937
  #. translators: %1$s is the post title, %2$s is post type.
938
  #. translators: %1$s is the taxonomy name, %2$s is taxonomy.
939
  msgid "Imported \"%1$s\" (%2$s)"
940
  msgstr ""
941
 
942
- #: inc/importers/wxr-importer/class-wxr-importer.php:1041
943
  #. translators: %1$s is the original post id, %2$s is old post id.
944
  msgid "Post %1$d remapped to %2$d"
945
  msgstr ""
946
 
947
- #: inc/importers/wxr-importer/class-wxr-importer.php:1192
948
  msgid "Invalid file type"
949
  msgstr ""
950
 
951
- #: inc/importers/wxr-importer/class-wxr-importer.php:1698
952
  #. translators: %s user login name
953
  msgid "Failed to import user \"%s\""
954
  msgstr ""
955
 
956
- #: inc/importers/wxr-importer/class-wxr-importer.php:1722
957
  #. translators: %s user login name
958
  msgid "Imported user \"%s\""
959
  msgstr ""
960
 
961
- #: inc/importers/wxr-importer/class-wxr-importer.php:1729
962
  #. translators: %1$s original user Id, %2$s old user Id.
963
  msgid "User %1$d remapped to %2$d"
964
  msgstr ""
965
 
966
- #: inc/importers/wxr-importer/class-wxr-importer.php:1894
967
  #. translators: %1$s is the taxonomy, %2$s is taxonomy name.
968
  msgid "Failed to import %1$s %2$s"
969
  msgstr ""
970
 
971
- #: inc/importers/wxr-importer/class-wxr-importer.php:1929
972
  #. translators: %1$s is term original id, %2$s is term id.
973
  msgid "Term %1$d remapped to %2$d"
974
  msgstr ""
975
 
976
- #: inc/importers/wxr-importer/class-wxr-importer.php:1987
977
  #. translators: %1$s is error code, %2$s is error code header, %3$s is url.
978
  msgid "Remote server returned %1$d %2$s for %3$s"
979
  msgstr ""
980
 
981
- #: inc/importers/wxr-importer/class-wxr-importer.php:2000
982
  msgid "Remote file is incorrect size"
983
  msgstr ""
984
 
985
- #: inc/importers/wxr-importer/class-wxr-importer.php:2005
986
  msgid "Zero size file downloaded"
987
  msgstr ""
988
 
989
- #: inc/importers/wxr-importer/class-wxr-importer.php:2012
990
  #. translators: %s max file size.
991
  msgid "Remote file is too large, limit is %s"
992
  msgstr ""
993
 
994
- #: inc/importers/wxr-importer/class-wxr-importer.php:2045
995
  #. translators: %d is post id.
996
  msgid "Running post-processing for post %d"
997
  msgstr ""
998
 
999
- #: inc/importers/wxr-importer/class-wxr-importer.php:2061
1000
  #. translators: %1$s is post title, %2$s is post id.
1001
  msgid "Could not find the post parent for \"%1$s\" (post #%2$d)"
1002
  msgstr ""
1003
 
1004
- #: inc/importers/wxr-importer/class-wxr-importer.php:2069
1005
  #. translators: %1$d is post id, %2$d is parent post id.
1006
  msgid "Post %1$d was imported with parent %2$d, but could not be found"
1007
  msgstr ""
1008
 
1009
- #: inc/importers/wxr-importer/class-wxr-importer.php:2086
1010
  #. translators: %1$s is the post title, %2$s is post id.
1011
  msgid "Could not find the author for \"%1$s\" (post #%2$d)"
1012
  msgstr ""
1013
 
1014
- #: inc/importers/wxr-importer/class-wxr-importer.php:2094
1015
  #. translators: %1$d is post id, %2$s is author slug.
1016
  msgid "Post %1$d was imported with author \"%2$s\", but could not be found"
1017
  msgstr ""
1018
 
1019
- #: inc/importers/wxr-importer/class-wxr-importer.php:2123
1020
  #. translators: %d is post id.
1021
  msgid "Post %d was marked for post-processing, but none was required."
1022
  msgstr ""
1023
 
1024
- #: inc/importers/wxr-importer/class-wxr-importer.php:2137
1025
  #. translators: %1$s is the post title, %2$s is post id.
1026
  msgid "Could not update \"%1$s\" (post #%2$d) with mapped data"
1027
  msgstr ""
1028
 
1029
- #: inc/importers/wxr-importer/class-wxr-importer.php:2191
1030
  #. translators: %1$s is the post title, %2$s is post id.
1031
  msgid "Could not find the menu object for \"%1$s\" (post #%2$d)"
1032
  msgstr ""
1033
 
1034
- #: inc/importers/wxr-importer/class-wxr-importer.php:2199
1035
  #. translators: %1$s is post id, %2$s is post object id, %3$s is menu type.
1036
  msgid ""
1037
  "Post %1$d was imported with object \"%2$d\" of type \"%3$s\", but could not "
1038
  "be found"
1039
  msgstr ""
1040
 
1041
- #: inc/importers/wxr-importer/class-wxr-importer.php:2230
1042
  #. translators: %d is comment id.
1043
  msgid "Could not find the comment parent for comment #%d"
1044
  msgstr ""
1045
 
1046
- #: inc/importers/wxr-importer/class-wxr-importer.php:2237
1047
  #. translators: %1$s is comment id, %2$s is parent comment id.
1048
  msgid "Comment %1$d was imported with parent %2$d, but could not be found"
1049
  msgstr ""
1050
 
1051
- #: inc/importers/wxr-importer/class-wxr-importer.php:2254
1052
  #. translators: %d is comment id.
1053
  msgid "Could not find the author for comment #%d"
1054
  msgstr ""
1055
 
1056
- #: inc/importers/wxr-importer/class-wxr-importer.php:2261
1057
  #. translators: %1$d is comment id, %2$d is author id.
1058
  msgid "Comment %1$d was imported with author %2$d, but could not be found"
1059
  msgstr ""
1060
 
1061
- #: inc/importers/wxr-importer/class-wxr-importer.php:2281
1062
  #. translators: %d is comment id.
1063
  msgid "Could not update comment #%d with mapped data"
1064
  msgstr ""
@@ -1079,14 +1206,14 @@ msgstr ""
1079
 
1080
  #: inc/includes/admin-page.php:96 inc/includes/admin-page.php:102
1081
  #: inc/includes/admin-page.php:104 inc/includes/admin-page.php:491
1082
- #: inc/includes/admin-page.php:650 inc/includes/admin-page.php:783
1083
  #: inc/includes/templates.php:455
1084
  msgid "Skip & Import"
1085
  msgstr ""
1086
 
1087
  #: inc/includes/admin-page.php:97 inc/includes/admin-page.php:105
1088
  #: inc/includes/admin-page.php:492 inc/includes/admin-page.php:651
1089
- #: inc/includes/admin-page.php:784 inc/includes/templates.php:456
1090
  msgid "Cancel"
1091
  msgstr ""
1092
 
@@ -1265,48 +1392,86 @@ msgstr ""
1265
  msgid "Heads Up!"
1266
  msgstr ""
1267
 
1268
- #: inc/includes/admin-page.php:669
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1269
  msgid "Your Selected Website is Being Imported."
1270
  msgstr ""
1271
 
1272
- #: inc/includes/admin-page.php:671
1273
  msgid "Your Selected Template is Being Imported."
1274
  msgstr ""
1275
 
1276
- #: inc/includes/admin-page.php:686
1277
  msgid "Delete Previously Imported Site"
1278
  msgstr ""
1279
 
1280
- #: inc/includes/admin-page.php:687
1281
  msgid ""
1282
  "WARNING: Selecting this option will delete all data from the previous "
1283
  "import. Choose this option only if this is intended."
1284
  msgstr ""
1285
 
1286
- #: inc/includes/admin-page.php:687
1287
  msgid "You can find the backup to the current customizer settings at "
1288
  msgstr ""
1289
 
1290
- #: inc/includes/admin-page.php:687
1291
  msgid "/wp-content/uploads/astra-sites/"
1292
  msgstr ""
1293
 
1294
- #: inc/includes/admin-page.php:698
1295
  msgid "Install & Activate Astra Theme"
1296
  msgstr ""
1297
 
1298
- #: inc/includes/admin-page.php:699
1299
  msgid ""
1300
  "To import the site in the original format, you would need the Astra theme "
1301
  "activated. You can import it with any other theme, but the site might lose "
1302
  "some of the design settings and look a bit different."
1303
  msgstr ""
1304
 
1305
- #: inc/includes/admin-page.php:707
1306
  msgid "Import Customizer Settings"
1307
  msgstr ""
1308
 
1309
- #: inc/includes/admin-page.php:711
1310
  #. translators: %s are white label strings.
1311
  msgid ""
1312
  "%1$s customizer serves global settings that give uniform design to the "
@@ -1314,39 +1479,39 @@ msgid ""
1314
  "settings."
1315
  msgstr ""
1316
 
1317
- #: inc/includes/admin-page.php:722
1318
  msgid "Import Widgets"
1319
  msgstr ""
1320
 
1321
- #: inc/includes/admin-page.php:732
1322
  msgid ""
1323
  "Plugins needed to import this template are missing. Required plugins will "
1324
  "be installed and activated automatically."
1325
  msgstr ""
1326
 
1327
- #: inc/includes/admin-page.php:741
1328
  msgid "Import Content"
1329
  msgstr ""
1330
 
1331
- #: inc/includes/admin-page.php:744
1332
  msgid ""
1333
  "Selecting this option will import dummy pages, posts, images, and menus. If "
1334
  "you do not want to import dummy content, please uncheck this option."
1335
  msgstr ""
1336
 
1337
- #: inc/includes/admin-page.php:762
1338
  #. translators: %s is the dynamic string.
1339
  msgid ""
1340
  "The import process can take a few minutes depending on the size of the %s "
1341
  "and speed of the connection."
1342
  msgstr ""
1343
 
1344
- #: inc/includes/admin-page.php:768
1345
  #. translators: %s is the dynamic string.
1346
  msgid "Please do NOT close this browser window until the %s is imported completely."
1347
  msgstr ""
1348
 
1349
- #: inc/includes/admin-page.php:782
1350
  msgid "Import"
1351
  msgstr ""
1352
 
1
+ # Copyright (C) 2021 Brainstorm Force
2
  # This file is distributed under the same license as the Starter Templates package.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Starter Templates 2.5.0\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/astra-sites\n"
7
+ "POT-Creation-Date: 2021-01-29 16:22:00+00:00\n"
8
  "MIME-Version: 1.0\n"
9
  "Content-Type: text/plain; charset=utf-8\n"
10
  "Content-Transfer-Encoding: 8bit\n"
11
+ "PO-Revision-Date: 2021-MO-DA HO:MI+ZONE\n"
12
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
  "Language-Team: LANGUAGE <LL@li.org>\n"
14
  "Language: en\n"
73
  msgid "Starter Templates"
74
  msgstr ""
75
 
76
+ #: classes/class-astra-sites-admin.php:93
77
+ #. translators: %1$s white label plugin name and %2$s deactivation link
78
+ msgid ""
79
+ "Hello! Seems like you have used Starter Templates to build this website "
80
+ "&mdash; Thanks a ton!"
81
+ msgstr ""
82
+
83
+ #: classes/class-astra-sites-admin.php:94
84
+ msgid ""
85
+ "Could you please do us a BIG favor and give it a 5-star rating on "
86
+ "WordPress? This would boost our motivation and help other users make a "
87
+ "comfortable decision while choosing the Starter Templates."
88
+ msgstr ""
89
+
90
+ #: classes/class-astra-sites-admin.php:96
91
+ msgid "Ok, you deserve it"
92
+ msgstr ""
93
+
94
+ #: classes/class-astra-sites-admin.php:98
95
+ msgid "Nope, maybe later"
96
+ msgstr ""
97
+
98
+ #: classes/class-astra-sites-admin.php:99
99
+ msgid "I already did"
100
+ msgstr ""
101
+
102
+ #: inc/classes/batch-import/class-astra-sites-batch-site-import.php:161
103
+ msgid "Import Status"
104
+ msgstr ""
105
+
106
+ #: inc/classes/batch-import/class-astra-sites-batch-site-import.php:204
107
+ #: inc/classes/batch-import/class-astra-sites-batch-site-import.php:417
108
+ msgid "Invalid site ID."
109
+ msgstr ""
110
+
111
+ #: inc/classes/batch-import/class-astra-sites-batch-site-import.php:221
112
+ msgid "Site import process is complete."
113
+ msgstr ""
114
+
115
+ #: inc/classes/batch-import/class-astra-sites-batch-site-import.php:226
116
+ msgid "Site import is in process."
117
+ msgstr ""
118
+
119
+ #: inc/classes/batch-import/class-astra-sites-batch-site-import.php:260
120
+ #: inc/classes/class-astra-sites-page.php:439
121
+ msgid "Preparing Site Import"
122
+ msgstr ""
123
+
124
+ #: inc/classes/batch-import/class-astra-sites-batch-site-import.php:270
125
+ msgid "Site import started."
126
+ msgstr ""
127
+
128
+ #: inc/classes/batch-import/class-astra-sites-batch-site-import.php:320
129
+ #: inc/classes/class-astra-sites-page.php:442
130
+ msgid "Installing Required Plugins"
131
+ msgstr ""
132
+
133
+ #: inc/classes/batch-import/class-astra-sites-batch-site-import.php:337
134
+ #: inc/classes/class-astra-sites-page.php:445
135
+ msgid "Importing Contact Forms"
136
+ msgstr ""
137
+
138
+ #: inc/classes/batch-import/class-astra-sites-batch-site-import.php:350
139
+ #: inc/classes/class-astra-sites-page.php:448
140
+ msgid "Setting up the Theme"
141
+ msgstr ""
142
+
143
+ #: inc/classes/batch-import/class-astra-sites-batch-site-import.php:360
144
+ #: inc/classes/class-astra-sites-page.php:451
145
+ msgid "Importing Media, Posts, and Pages"
146
+ msgstr ""
147
+
148
+ #: inc/classes/batch-import/class-astra-sites-batch-site-import.php:371
149
+ #: inc/classes/class-astra-sites-page.php:454
150
+ msgid "Importing Site Options"
151
+ msgstr ""
152
+
153
+ #: inc/classes/batch-import/class-astra-sites-batch-site-import.php:380
154
+ #: inc/classes/class-astra-sites-page.php:457
155
+ msgid "Importing Sidebar and Widgets"
156
+ msgstr ""
157
+
158
+ #: inc/classes/batch-import/class-astra-sites-batch-site-import.php:400
159
+ #: inc/classes/class-astra-sites-page.php:460
160
+ msgid "Import Complete"
161
+ msgstr ""
162
+
163
+ #: inc/classes/batch-import/class-astra-sites-batch-site-import.php:487
164
+ msgid "Invalid plugin slug"
165
+ msgstr ""
166
+
167
+ #: inc/classes/batch-import/class-astra-sites-batch-site-import.php:527
168
+ msgid "Unable to connect to the filesystem. Please confirm your credentials."
169
+ msgstr ""
170
+
171
+ #: inc/classes/batch-import/class-astra-sites-batch-site-import.php:531
172
+ #. translators: %s plugin name.
173
+ msgid "Successfully installed \"%s\" plugin!"
174
+ msgstr ""
175
+
176
  #: inc/classes/class-astra-sites-importer-log.php:96
177
  msgid "Required File Permissions to import the templates are missing."
178
  msgstr ""
215
  #: inc/classes/class-astra-sites-importer.php:414
216
  #: inc/classes/class-astra-sites-importer.php:460
217
  #: inc/classes/class-astra-sites-importer.php:508
218
+ #: inc/classes/class-astra-sites-importer.php:664
219
+ #: inc/classes/class-astra-sites-importer.php:692
220
+ #: inc/classes/class-astra-sites-importer.php:726
221
+ #: inc/classes/class-astra-sites-importer.php:778
222
+ #: inc/classes/class-astra-sites-importer.php:821
223
+ #: inc/classes/class-astra-sites-importer.php:859
224
+ #: inc/classes/class-astra-sites.php:264 inc/classes/class-astra-sites.php:438
225
+ #: inc/classes/class-astra-sites.php:542 inc/classes/class-astra-sites.php:615
226
+ #: inc/classes/class-astra-sites.php:806 inc/classes/class-astra-sites.php:825
227
  msgid "You are not allowed to perform this action"
228
  msgstr ""
229
 
278
  msgid "Settings saved successfully."
279
  msgstr ""
280
 
281
+ #: inc/classes/class-astra-sites-page.php:426
282
+ msgid "Importing Starter Template..."
283
+ msgstr ""
284
+
285
+ #: inc/classes/class-astra-sites-page.php:431
286
+ msgid "The demo you are importing seems invalid. The site is not found."
287
+ msgstr ""
288
+
289
+ #: inc/classes/class-astra-sites-page.php:433
290
+ msgid "The demo you are importing is a premium demo."
291
+ msgstr ""
292
+
293
+ #: inc/classes/class-astra-sites-page.php:433
294
+ #: inc/classes/class-astra-sites.php:1195
295
+ #: inc/classes/class-astra-sites.php:1397
296
+ msgid "Get Agency Bundle"
297
+ msgstr ""
298
+
299
+ #: inc/classes/class-astra-sites-page.php:435
300
+ msgid ""
301
+ "The import process can take a few minutes depending on the size of the site "
302
+ "and speed of the connection."
303
+ msgstr ""
304
+
305
+ #: inc/classes/class-astra-sites-page.php:466
306
+ msgid "Site Imported Successfully!"
307
+ msgstr ""
308
+
309
+ #: inc/classes/class-astra-sites-page.php:467
310
+ msgid "Visit Site"
311
+ msgstr ""
312
+
313
+ #: inc/classes/class-astra-sites-page.php:516
314
  msgid "Getting Started"
315
  msgstr ""
316
 
317
+ #: inc/classes/class-astra-sites-page.php:522
318
  msgid "Select Page Builder"
319
  msgstr ""
320
 
321
+ #: inc/classes/class-astra-sites-page.php:523
322
  msgid ""
323
  "We offer starter templates that can be imported in one click. These sites "
324
  "are available in the following page builders. Please choose your preferred "
325
  "page builder from the list below."
326
  msgstr ""
327
 
328
+ #: inc/classes/class-astra-sites-page.php:582
329
  msgid "My Favorite"
330
  msgstr ""
331
 
332
+ #: inc/classes/class-astra-sites-page.php:587 inc/includes/templates.php:127
333
  msgid "Sync Library"
334
  msgstr ""
335
 
336
+ #: inc/classes/class-astra-sites-page.php:676
337
+ #: inc/classes/class-astra-sites-page.php:678
338
+ #: inc/classes/class-astra-sites-page.php:690
339
+ #: inc/classes/class-astra-sites.php:1019 inc/includes/templates.php:28
340
  #: inc/includes/templates.php:35
341
  msgid "All"
342
  msgstr ""
343
 
344
+ #: inc/classes/class-astra-sites-page.php:695 inc/includes/templates.php:29
345
  msgid "Free"
346
  msgstr ""
347
 
348
+ #: inc/classes/class-astra-sites-page.php:700 inc/includes/admin-page.php:231
349
  #: inc/includes/admin-page.php:320 inc/includes/admin-page.php:381
350
  #: inc/includes/templates.php:30 inc/includes/templates.php:178
351
  #: inc/includes/templates.php:307 inc/includes/templates.php:394
352
  msgid "Agency"
353
  msgstr ""
354
 
355
+ #: inc/classes/class-astra-sites-page.php:708 inc/includes/templates.php:50
356
  msgid "Search..."
357
  msgstr ""
358
 
359
+ #: inc/classes/class-astra-sites-page.php:782
360
  msgid "Elementor"
361
  msgstr ""
362
 
363
+ #: inc/classes/class-astra-sites-page.php:787
364
  msgid "Beaver Builder"
365
  msgstr ""
366
 
367
+ #: inc/classes/class-astra-sites-page.php:792
368
  msgid "Gutenberg"
369
  msgstr ""
370
 
371
+ #: inc/classes/class-astra-sites-page.php:797
372
  msgid "Brizy"
373
  msgstr ""
374
 
375
+ #: inc/classes/class-astra-sites-page.php:895
376
  #. translators: 1: The number of years in an interval of time.
377
  msgid "%s year"
378
  msgid_plural "%s years"
379
  msgstr[0] ""
380
  msgstr[1] ""
381
 
382
+ #: inc/classes/class-astra-sites-page.php:897
383
  #. translators: 1: The number of months in an interval of time.
384
  msgid "%s month"
385
  msgid_plural "%s months"
386
  msgstr[0] ""
387
  msgstr[1] ""
388
 
389
+ #: inc/classes/class-astra-sites-page.php:899
390
  #. translators: 1: The number of weeks in an interval of time.
391
  msgid "%s week"
392
  msgid_plural "%s weeks"
393
  msgstr[0] ""
394
  msgstr[1] ""
395
 
396
+ #: inc/classes/class-astra-sites-page.php:901
397
  #. translators: 1: The number of days in an interval of time.
398
  msgid "%s day"
399
  msgid_plural "%s days"
400
  msgstr[0] ""
401
  msgstr[1] ""
402
 
403
+ #: inc/classes/class-astra-sites-page.php:903
404
  #. translators: 1: The number of hours in an interval of time.
405
  msgid "%s hour"
406
  msgid_plural "%s hours"
407
  msgstr[0] ""
408
  msgstr[1] ""
409
 
410
+ #: inc/classes/class-astra-sites-page.php:905
411
  #. translators: 1: The number of minutes in an interval of time.
412
  msgid "%s minute"
413
  msgid_plural "%s minutes"
414
  msgstr[0] ""
415
  msgstr[1] ""
416
 
417
+ #: inc/classes/class-astra-sites-page.php:907
418
  #. translators: 1: The number of seconds in an interval of time.
419
  msgid "%s second"
420
  msgid_plural "%s seconds"
421
  msgstr[0] ""
422
  msgstr[1] ""
423
 
424
+ #: inc/classes/class-astra-sites-page.php:911
425
  msgid "now"
426
  msgstr ""
427
 
428
+ #: inc/classes/class-astra-sites-page.php:965
429
  msgid ""
430
  "ERROR! Cron schedules are disabled by setting constant DISABLE_WP_CRON to "
431
  "true.<br/>To start the import process please enable the cron by setting the "
432
  "constant to false. E.g. define( 'DISABLE_WP_CRON', false );"
433
  msgstr ""
434
 
435
+ #: inc/classes/class-astra-sites-page.php:969
436
  msgid ""
437
  "ERROR! Cron schedules are disabled by setting constant ALTERNATE_WP_CRON to "
438
  "true.<br/>To start the import process please enable the cron by setting the "
439
  "constant to false. E.g. define( 'ALTERNATE_WP_CRON', false );"
440
  msgstr ""
441
 
442
+ #: inc/classes/class-astra-sites-page.php:1005
443
  #. translators: 1: The HTTP response code.
444
  msgid "Unexpected HTTP response code: %s"
445
  msgstr ""
585
  msgid "This site category does not exist. Please try a different site category."
586
  msgstr ""
587
 
588
+ #: inc/classes/class-astra-sites.php:268
589
  msgid "Invalid API URL"
590
  msgstr ""
591
 
592
+ #: inc/classes/class-astra-sites.php:280
593
  msgid "Invalid Post Meta"
594
  msgstr ""
595
 
596
+ #: inc/classes/class-astra-sites.php:287
597
  msgid "Invalid Post ID or Elementor Meta"
598
  msgstr ""
599
 
600
+ #: inc/classes/class-astra-sites.php:309
601
  msgid "Provided API URL is empty! Please try again!"
602
  msgstr ""
603
 
604
+ #: inc/classes/class-astra-sites.php:833
605
  msgid "Theme Activated"
606
  msgstr ""
607
 
608
+ #: inc/classes/class-astra-sites.php:879
609
  msgid "User does not have permission!"
610
  msgstr ""
611
 
612
+ #: inc/classes/class-astra-sites.php:956
613
  msgid "See Library"
614
  msgstr ""
615
 
616
+ #: inc/classes/class-astra-sites.php:1020
617
  msgid "Animals"
618
  msgstr ""
619
 
620
+ #: inc/classes/class-astra-sites.php:1021
621
  msgid "Architecture/Buildings"
622
  msgstr ""
623
 
624
+ #: inc/classes/class-astra-sites.php:1022
625
  msgid "Backgrounds/Textures"
626
  msgstr ""
627
 
628
+ #: inc/classes/class-astra-sites.php:1023
629
  msgid "Beauty/Fashion"
630
  msgstr ""
631
 
632
+ #: inc/classes/class-astra-sites.php:1024
633
  msgid "Business/Finance"
634
  msgstr ""
635
 
636
+ #: inc/classes/class-astra-sites.php:1025
637
  msgid "Computer/Communication"
638
  msgstr ""
639
 
640
+ #: inc/classes/class-astra-sites.php:1026
641
  msgid "Education"
642
  msgstr ""
643
 
644
+ #: inc/classes/class-astra-sites.php:1027
645
  msgid "Emotions"
646
  msgstr ""
647
 
648
+ #: inc/classes/class-astra-sites.php:1028
649
  msgid "Food/Drink"
650
  msgstr ""
651
 
652
+ #: inc/classes/class-astra-sites.php:1029
653
  msgid "Health/Medical"
654
  msgstr ""
655
 
656
+ #: inc/classes/class-astra-sites.php:1030
657
  msgid "Industry/Craft"
658
  msgstr ""
659
 
660
+ #: inc/classes/class-astra-sites.php:1031
661
  msgid "Music"
662
  msgstr ""
663
 
664
+ #: inc/classes/class-astra-sites.php:1032
665
  msgid "Nature/Landscapes"
666
  msgstr ""
667
 
668
+ #: inc/classes/class-astra-sites.php:1033
669
  msgid "People"
670
  msgstr ""
671
 
672
+ #: inc/classes/class-astra-sites.php:1034
673
  msgid "Places/Monuments"
674
  msgstr ""
675
 
676
+ #: inc/classes/class-astra-sites.php:1035
677
  msgid "Religion"
678
  msgstr ""
679
 
680
+ #: inc/classes/class-astra-sites.php:1036
681
  msgid "Science/Technology"
682
  msgstr ""
683
 
684
+ #: inc/classes/class-astra-sites.php:1037
685
  msgid "Sports"
686
  msgstr ""
687
 
688
+ #: inc/classes/class-astra-sites.php:1038
689
  msgid "Transportation/Traffic"
690
  msgstr ""
691
 
692
+ #: inc/classes/class-astra-sites.php:1039
693
  msgid "Travel/Vacation"
694
  msgstr ""
695
 
696
+ #: inc/classes/class-astra-sites.php:1042
697
  msgid "Popular"
698
  msgstr ""
699
 
700
+ #: inc/classes/class-astra-sites.php:1043
701
  msgid "Latest"
702
  msgstr ""
703
 
704
+ #: inc/classes/class-astra-sites.php:1044
705
  msgid "Upcoming"
706
  msgstr ""
707
 
708
+ #: inc/classes/class-astra-sites.php:1045
709
  msgid "Editor's Choice"
710
  msgstr ""
711
 
712
+ #: inc/classes/class-astra-sites.php:1048
713
  msgid "Any Orientation"
714
  msgstr ""
715
 
716
+ #: inc/classes/class-astra-sites.php:1049
717
  msgid "Vertical"
718
  msgstr ""
719
 
720
+ #: inc/classes/class-astra-sites.php:1050
721
  msgid "Horizontal"
722
  msgstr ""
723
 
724
+ #: inc/classes/class-astra-sites.php:1052
725
  msgid "Free Images from Pixabay"
726
  msgstr ""
727
 
728
+ #: inc/classes/class-astra-sites.php:1053
729
  msgid "Pixabay Search - Ex: flowers"
730
  msgstr ""
731
 
732
+ #: inc/classes/class-astra-sites.php:1054
733
  msgid "Downloading..."
734
  msgstr ""
735
 
736
+ #: inc/classes/class-astra-sites.php:1055
737
  msgid "Validating..."
738
  msgstr ""
739
 
740
+ #: inc/classes/class-astra-sites.php:1056
741
  msgid "Please enter an API key."
742
  msgstr ""
743
 
744
+ #: inc/classes/class-astra-sites.php:1057
745
  msgid "An error occured with code "
746
  msgstr ""
747
 
748
+ #: inc/classes/class-astra-sites.php:1109
749
  msgid "Installed! Activating.."
750
  msgstr ""
751
 
752
+ #: inc/classes/class-astra-sites.php:1110
753
  msgid "Activating..."
754
  msgstr ""
755
 
756
+ #: inc/classes/class-astra-sites.php:1111
757
  msgid "Activated!"
758
  msgstr ""
759
 
760
+ #: inc/classes/class-astra-sites.php:1112
761
  msgid "Installing..."
762
  msgstr ""
763
 
764
+ #: inc/classes/class-astra-sites.php:1197
 
 
 
 
 
765
  msgid "Upgrade"
766
  msgstr ""
767
 
768
+ #: inc/classes/class-astra-sites.php:1201
769
  msgid ""
770
  "Syncing template library in the background. The process can take anywhere "
771
  "between 2 to 3 minutes. We will notify you once done."
772
  msgstr ""
773
 
774
+ #: inc/classes/class-astra-sites.php:1202
775
  msgid ""
776
  "Some of the files required during the import process are "
777
  "missing.<br/><br/>Please try again after some time."
778
  msgstr ""
779
 
780
+ #: inc/classes/class-astra-sites.php:1203
781
  msgid ""
782
  "<p>WordPress debug mode is currently enabled on your website. This has "
783
  "interrupted the import process..</p><p>Kindly disable debug mode and try "
786
  "mode.</p><p><code>define('WP_DEBUG', false);</code></p>"
787
  msgstr ""
788
 
789
+ #: inc/classes/class-astra-sites.php:1205
790
+ #: inc/classes/class-astra-sites.php:1207
791
  #. translators: %s is a documentation link.
792
  msgid ""
793
  "<p>Your website is facing a temporary issue in connecting the template "
795
  "the issue and continue importing template.</p>"
796
  msgstr ""
797
 
798
+ #: inc/classes/class-astra-sites.php:1211
799
  #. translators: %s are white label strings.
800
  msgid ""
801
  "Warning! %1$s Import process is not complete. Don't close the window until "
802
  "import process complete. Do you still want to leave the window?"
803
  msgstr ""
804
 
805
+ #: inc/classes/class-astra-sites.php:1212
806
  msgid "Done! View Site"
807
  msgstr ""
808
 
809
+ #: inc/classes/class-astra-sites.php:1215
810
  #. translators: %s is a template name
811
  msgid "Import \"%s\" Template"
812
  msgstr ""
813
 
814
+ #: inc/classes/class-astra-sites.php:1218
815
  msgid "Installing Required Plugins.."
816
  msgstr ""
817
 
818
+ #: inc/classes/class-astra-sites.php:1220
819
  #. translators: %s are white label strings.
820
  msgid "Installing %1$s Theme.."
821
  msgstr ""
822
 
823
+ #: inc/classes/class-astra-sites.php:1242
824
  msgid "Dismiss this notice."
825
  msgstr ""
826
 
827
+ #: inc/classes/class-astra-sites.php:1259
828
  msgid "XMLReader Support Missing"
829
  msgstr ""
830
 
831
+ #: inc/classes/class-astra-sites.php:1261
832
  #. translators: %s doc link.
833
  msgid ""
834
  "You're close to importing the template. To complete the process, enable "
835
  "XMLReader support on your website.."
836
  msgstr ""
837
 
838
+ #: inc/classes/class-astra-sites.php:1261
839
+ #: inc/classes/class-astra-sites.php:1266
840
+ #: inc/classes/class-astra-sites.php:1271 inc/includes/admin-page.php:628
841
  #. translators: %s doc link.
842
  msgid ""
843
  "Read an article <a href=\"%s\" target=\"_blank\">here</a> to resolve the "
844
  "issue."
845
  msgstr ""
846
 
847
+ #: inc/classes/class-astra-sites.php:1264
848
  msgid "cURL Support Missing"
849
  msgstr ""
850
 
851
+ #: inc/classes/class-astra-sites.php:1266
852
  #. translators: %s doc link.
853
  msgid "To run a smooth import, kindly enable cURL support on your website."
854
  msgstr ""
855
 
856
+ #: inc/classes/class-astra-sites.php:1269
857
  msgid "Disable Debug Mode"
858
  msgstr ""
859
 
860
+ #: inc/classes/class-astra-sites.php:1271
861
  #. translators: %s doc link.
862
  msgid ""
863
  "WordPress debug mode is currently enabled on your website. With this, any "
864
  "errors from third-party plugins might affect the import process."
865
  msgstr ""
866
 
867
+ #: inc/classes/class-astra-sites.php:1271
868
  msgid ""
869
  "Kindly disable it to continue importing the Starter Template. To do so, you "
870
  "can add the following code into the wp-config.php file."
871
  msgstr ""
872
 
873
+ #: inc/classes/class-astra-sites.php:1274
874
  msgid "Update Plugin"
875
  msgstr ""
876
 
877
+ #: inc/classes/class-astra-sites.php:1276
878
  #. translators: %s update page link.
879
  msgid "Updates are available for plugins used in this starter template."
880
  msgstr ""
881
 
882
+ #: inc/classes/class-astra-sites.php:1276
883
  msgid ""
884
  "Kindly <a href=\"%s\" target=\"_blank\">update</a> them for a successful "
885
  "import. Skipping this step might break the template design/feature."
886
  msgstr ""
887
 
888
+ #: inc/classes/class-astra-sites.php:1279 inc/includes/admin-page.php:479
889
  #: inc/includes/templates.php:443
890
  msgid "Required Plugins Missing"
891
  msgstr ""
892
 
893
+ #: inc/classes/class-astra-sites.php:1280 inc/includes/admin-page.php:483
894
  msgid ""
895
  "This starter template requires premium plugins. As these are third party "
896
  "premium plugins, you'll need to purchase, install and activate them first."
897
  msgstr ""
898
 
899
+ #: inc/classes/class-astra-sites.php:1283
900
  msgid "Dynamic Page"
901
  msgstr ""
902
 
903
+ #: inc/classes/class-astra-sites.php:1284 inc/includes/admin-page.php:645
904
  msgid ""
905
  "The page template you are about to import contains a dynamic widget/module. "
906
  "Please note this dynamic data will not be available with the imported page."
907
  msgstr ""
908
 
909
+ #: inc/classes/class-astra-sites.php:1284 inc/includes/admin-page.php:646
910
  msgid "You will need to add it manually on the page."
911
  msgstr ""
912
 
913
+ #: inc/classes/class-astra-sites.php:1284 inc/includes/admin-page.php:647
914
  msgid "This dynamic content will be available when you import the entire site."
915
  msgstr ""
916
 
917
+ #: inc/classes/class-astra-sites.php:1371
918
  #. translators: %s are link.
919
  msgid ""
920
  "This is a premium website demo available only with the Agency Bundles you "
921
  "can purchase it from <a href=\"%s\" target=\"_blank\">here</a>."
922
  msgstr ""
923
 
924
+ #: inc/classes/class-astra-sites.php:1375
925
  #. translators: %s are link.
926
  msgid ""
927
  "This is a premium template available with 'Agency' packages. <a href=\"%s\" "
928
  "target=\"_blank\">Validate Your License</a> Key to import this template."
929
  msgstr ""
930
 
931
+ #: inc/classes/class-astra-sites.php:1401
932
  msgid "Template"
933
  msgstr ""
934
 
935
+ #: inc/classes/class-astra-sites.php:1402
936
  msgid "Block"
937
  msgstr ""
938
 
939
+ #: inc/classes/class-astra-sites.php:1403 inc/includes/templates.php:65
940
  msgid "Dismiss"
941
  msgstr ""
942
 
943
+ #: inc/classes/class-astra-sites.php:1404 inc/includes/admin-page.php:782
944
  msgid "Install Required Plugins"
945
  msgstr ""
946
 
947
+ #: inc/classes/class-astra-sites.php:1408
948
  #. translators: %s are link.
949
  msgid ""
950
  "You can locate <strong>Starter Templates Settings</strong> under the "
951
  "<strong>Page Settings</strong> of the Style Tab."
952
  msgstr ""
953
 
954
+ #: inc/classes/class-astra-sites.php:1410
955
  msgid "Read More →"
956
  msgstr ""
957
 
958
+ #: inc/classes/class-astra-sites.php:1527
959
  msgid "Error: You don't have the required permissions to install plugins."
960
  msgstr ""
961
 
962
+ #: inc/classes/class-astra-sites.php:1563
963
  msgid "Plugin Activated"
964
  msgstr ""
965
 
966
+ #: inc/classes/class-astra-sites.php:1687
967
  msgid ""
968
  "Insufficient Permission. Please contact your Super Admin to allow the "
969
  "install required plugin permissions."
970
  msgstr ""
971
 
972
+ #: inc/classes/class-astra-sites.php:1879
973
  msgid "Template library refreshed!"
974
  msgstr ""
975
 
977
  msgid "All processes are complete"
978
  msgstr ""
979
 
980
+ #: inc/importers/batch-processing/helpers/class-wp-background-process.php:444
981
  #. translators: %d are the minutes.
982
  msgid "Every %d Minutes"
983
  msgstr ""
984
 
985
+ #: inc/importers/class-astra-widget-importer.php:94
986
  msgid "Import data could not be read. Please try a different file."
987
  msgstr ""
988
 
989
+ #: inc/importers/class-astra-widget-importer.php:138
990
  msgid "Widget area does not exist in theme (using Inactive)"
991
  msgstr ""
992
 
993
+ #: inc/importers/class-astra-widget-importer.php:160
994
  msgid "Site does not support widget"
995
  msgstr ""
996
 
997
+ #: inc/importers/class-astra-widget-importer.php:196
998
  msgid "Widget already exists"
999
  msgstr ""
1000
 
1001
+ #: inc/importers/class-astra-widget-importer.php:265
1002
  msgid "Imported"
1003
  msgstr ""
1004
 
1005
+ #: inc/importers/class-astra-widget-importer.php:268
1006
  msgid "Imported to Inactive"
1007
  msgstr ""
1008
 
1009
+ #: inc/importers/class-astra-widget-importer.php:274
1010
  msgid "No Title"
1011
  msgstr ""
1012
 
1013
+ #: inc/importers/wxr-importer/class-astra-wxr-importer.php:424
1014
  msgid "Import complete!"
1015
  msgstr ""
1016
 
1017
+ #: inc/importers/wxr-importer/class-wxr-importer.php:228
1018
  msgid "Could not open the file for parsing"
1019
  msgstr ""
1020
 
1021
+ #: inc/importers/wxr-importer/class-wxr-importer.php:266
1022
+ #: inc/importers/wxr-importer/class-wxr-importer.php:385
1023
+ #: inc/importers/wxr-importer/class-wxr-importer.php:461
1024
  #. translators: %1$s is WXR version, %2$s is max supported WXR version.
1025
  msgid ""
1026
  "This WXR file (version %1$s) is newer than the importer (version %2$s) and "
1027
  "may not be supported. Please consider updating."
1028
  msgstr ""
1029
 
1030
+ #: inc/importers/wxr-importer/class-wxr-importer.php:612
1031
  msgid "The file does not exist, please try again."
1032
  msgstr ""
1033
 
1034
+ #: inc/importers/wxr-importer/class-wxr-importer.php:672
1035
  msgid "Invalid author mapping"
1036
  msgstr ""
1037
 
1038
+ #: inc/importers/wxr-importer/class-wxr-importer.php:773
1039
  msgid "Cannot import auto-draft posts"
1040
  msgstr ""
1041
 
1042
+ #: inc/importers/wxr-importer/class-wxr-importer.php:868
1043
  #. translators: %1$s is the import message, %2$s is post type.
1044
  msgid "Failed to import \"%1$s\": Invalid post type %2$s"
1045
  msgstr ""
1046
 
1047
+ #: inc/importers/wxr-importer/class-wxr-importer.php:880
1048
  #. translators: %1$s single post type, %2$s is post title.
1049
  msgid "%1$s \"%2$s\" already exists."
1050
  msgstr ""
1051
 
1052
+ #: inc/importers/wxr-importer/class-wxr-importer.php:978
1053
  #. translators: %s is post title
1054
  msgid "Skipping attachment \"%s\", fetching attachments disabled"
1055
  msgstr ""
1056
 
1057
+ #: inc/importers/wxr-importer/class-wxr-importer.php:1002
1058
  #. translators: %1$s is the post title, %2$s is post type.
1059
  msgid "Failed to import \"%1$s\" (%2$s)"
1060
  msgstr ""
1061
 
1062
+ #: inc/importers/wxr-importer/class-wxr-importer.php:1037
1063
+ #: inc/importers/wxr-importer/class-wxr-importer.php:1925
1064
  #. translators: %1$s is the post title, %2$s is post type.
1065
  #. translators: %1$s is the taxonomy name, %2$s is taxonomy.
1066
  msgid "Imported \"%1$s\" (%2$s)"
1067
  msgstr ""
1068
 
1069
+ #: inc/importers/wxr-importer/class-wxr-importer.php:1045
1070
  #. translators: %1$s is the original post id, %2$s is old post id.
1071
  msgid "Post %1$d remapped to %2$d"
1072
  msgstr ""
1073
 
1074
+ #: inc/importers/wxr-importer/class-wxr-importer.php:1196
1075
  msgid "Invalid file type"
1076
  msgstr ""
1077
 
1078
+ #: inc/importers/wxr-importer/class-wxr-importer.php:1702
1079
  #. translators: %s user login name
1080
  msgid "Failed to import user \"%s\""
1081
  msgstr ""
1082
 
1083
+ #: inc/importers/wxr-importer/class-wxr-importer.php:1726
1084
  #. translators: %s user login name
1085
  msgid "Imported user \"%s\""
1086
  msgstr ""
1087
 
1088
+ #: inc/importers/wxr-importer/class-wxr-importer.php:1733
1089
  #. translators: %1$s original user Id, %2$s old user Id.
1090
  msgid "User %1$d remapped to %2$d"
1091
  msgstr ""
1092
 
1093
+ #: inc/importers/wxr-importer/class-wxr-importer.php:1898
1094
  #. translators: %1$s is the taxonomy, %2$s is taxonomy name.
1095
  msgid "Failed to import %1$s %2$s"
1096
  msgstr ""
1097
 
1098
+ #: inc/importers/wxr-importer/class-wxr-importer.php:1933
1099
  #. translators: %1$s is term original id, %2$s is term id.
1100
  msgid "Term %1$d remapped to %2$d"
1101
  msgstr ""
1102
 
1103
+ #: inc/importers/wxr-importer/class-wxr-importer.php:1991
1104
  #. translators: %1$s is error code, %2$s is error code header, %3$s is url.
1105
  msgid "Remote server returned %1$d %2$s for %3$s"
1106
  msgstr ""
1107
 
1108
+ #: inc/importers/wxr-importer/class-wxr-importer.php:2004
1109
  msgid "Remote file is incorrect size"
1110
  msgstr ""
1111
 
1112
+ #: inc/importers/wxr-importer/class-wxr-importer.php:2009
1113
  msgid "Zero size file downloaded"
1114
  msgstr ""
1115
 
1116
+ #: inc/importers/wxr-importer/class-wxr-importer.php:2016
1117
  #. translators: %s max file size.
1118
  msgid "Remote file is too large, limit is %s"
1119
  msgstr ""
1120
 
1121
+ #: inc/importers/wxr-importer/class-wxr-importer.php:2049
1122
  #. translators: %d is post id.
1123
  msgid "Running post-processing for post %d"
1124
  msgstr ""
1125
 
1126
+ #: inc/importers/wxr-importer/class-wxr-importer.php:2065
1127
  #. translators: %1$s is post title, %2$s is post id.
1128
  msgid "Could not find the post parent for \"%1$s\" (post #%2$d)"
1129
  msgstr ""
1130
 
1131
+ #: inc/importers/wxr-importer/class-wxr-importer.php:2073
1132
  #. translators: %1$d is post id, %2$d is parent post id.
1133
  msgid "Post %1$d was imported with parent %2$d, but could not be found"
1134
  msgstr ""
1135
 
1136
+ #: inc/importers/wxr-importer/class-wxr-importer.php:2090
1137
  #. translators: %1$s is the post title, %2$s is post id.
1138
  msgid "Could not find the author for \"%1$s\" (post #%2$d)"
1139
  msgstr ""
1140
 
1141
+ #: inc/importers/wxr-importer/class-wxr-importer.php:2098
1142
  #. translators: %1$d is post id, %2$s is author slug.
1143
  msgid "Post %1$d was imported with author \"%2$s\", but could not be found"
1144
  msgstr ""
1145
 
1146
+ #: inc/importers/wxr-importer/class-wxr-importer.php:2127
1147
  #. translators: %d is post id.
1148
  msgid "Post %d was marked for post-processing, but none was required."
1149
  msgstr ""
1150
 
1151
+ #: inc/importers/wxr-importer/class-wxr-importer.php:2141
1152
  #. translators: %1$s is the post title, %2$s is post id.
1153
  msgid "Could not update \"%1$s\" (post #%2$d) with mapped data"
1154
  msgstr ""
1155
 
1156
+ #: inc/importers/wxr-importer/class-wxr-importer.php:2195
1157
  #. translators: %1$s is the post title, %2$s is post id.
1158
  msgid "Could not find the menu object for \"%1$s\" (post #%2$d)"
1159
  msgstr ""
1160
 
1161
+ #: inc/importers/wxr-importer/class-wxr-importer.php:2203
1162
  #. translators: %1$s is post id, %2$s is post object id, %3$s is menu type.
1163
  msgid ""
1164
  "Post %1$d was imported with object \"%2$d\" of type \"%3$s\", but could not "
1165
  "be found"
1166
  msgstr ""
1167
 
1168
+ #: inc/importers/wxr-importer/class-wxr-importer.php:2234
1169
  #. translators: %d is comment id.
1170
  msgid "Could not find the comment parent for comment #%d"
1171
  msgstr ""
1172
 
1173
+ #: inc/importers/wxr-importer/class-wxr-importer.php:2241
1174
  #. translators: %1$s is comment id, %2$s is parent comment id.
1175
  msgid "Comment %1$d was imported with parent %2$d, but could not be found"
1176
  msgstr ""
1177
 
1178
+ #: inc/importers/wxr-importer/class-wxr-importer.php:2258
1179
  #. translators: %d is comment id.
1180
  msgid "Could not find the author for comment #%d"
1181
  msgstr ""
1182
 
1183
+ #: inc/importers/wxr-importer/class-wxr-importer.php:2265
1184
  #. translators: %1$d is comment id, %2$d is author id.
1185
  msgid "Comment %1$d was imported with author %2$d, but could not be found"
1186
  msgstr ""
1187
 
1188
+ #: inc/importers/wxr-importer/class-wxr-importer.php:2285
1189
  #. translators: %d is comment id.
1190
  msgid "Could not update comment #%d with mapped data"
1191
  msgstr ""
1206
 
1207
  #: inc/includes/admin-page.php:96 inc/includes/admin-page.php:102
1208
  #: inc/includes/admin-page.php:104 inc/includes/admin-page.php:491
1209
+ #: inc/includes/admin-page.php:650 inc/includes/admin-page.php:836
1210
  #: inc/includes/templates.php:455
1211
  msgid "Skip & Import"
1212
  msgstr ""
1213
 
1214
  #: inc/includes/admin-page.php:97 inc/includes/admin-page.php:105
1215
  #: inc/includes/admin-page.php:492 inc/includes/admin-page.php:651
1216
+ #: inc/includes/admin-page.php:837 inc/includes/templates.php:456
1217
  msgid "Cancel"
1218
  msgstr ""
1219
 
1392
  msgid "Heads Up!"
1393
  msgstr ""
1394
 
1395
+ #: inc/includes/admin-page.php:668
1396
+ msgid "One Last Step.."
1397
+ msgstr ""
1398
+
1399
+ #: inc/includes/admin-page.php:672
1400
+ msgid ""
1401
+ "To get access to exclusive starter templates, themes and updates, enter "
1402
+ "your details below:"
1403
+ msgstr ""
1404
+
1405
+ #: inc/includes/admin-page.php:677
1406
+ msgid "Your First Name"
1407
+ msgstr ""
1408
+
1409
+ #: inc/includes/admin-page.php:684
1410
+ msgid "I build websites for:"
1411
+ msgstr ""
1412
+
1413
+ #: inc/includes/admin-page.php:687
1414
+ msgid "Myself"
1415
+ msgstr ""
1416
+
1417
+ #: inc/includes/admin-page.php:690
1418
+ msgid "Someone else as a profession"
1419
+ msgstr ""
1420
+
1421
+ #: inc/includes/admin-page.php:693
1422
+ msgid "Someone else as a hobby"
1423
+ msgstr ""
1424
+
1425
+ #: inc/includes/admin-page.php:701
1426
+ msgid "Your Work Email"
1427
+ msgstr ""
1428
+
1429
+ #: inc/includes/admin-page.php:708
1430
+ msgid "Submit and Start Importing"
1431
+ msgstr ""
1432
+
1433
+ #: inc/includes/admin-page.php:722
1434
  msgid "Your Selected Website is Being Imported."
1435
  msgstr ""
1436
 
1437
+ #: inc/includes/admin-page.php:724
1438
  msgid "Your Selected Template is Being Imported."
1439
  msgstr ""
1440
 
1441
+ #: inc/includes/admin-page.php:739
1442
  msgid "Delete Previously Imported Site"
1443
  msgstr ""
1444
 
1445
+ #: inc/includes/admin-page.php:740
1446
  msgid ""
1447
  "WARNING: Selecting this option will delete all data from the previous "
1448
  "import. Choose this option only if this is intended."
1449
  msgstr ""
1450
 
1451
+ #: inc/includes/admin-page.php:740
1452
  msgid "You can find the backup to the current customizer settings at "
1453
  msgstr ""
1454
 
1455
+ #: inc/includes/admin-page.php:740
1456
  msgid "/wp-content/uploads/astra-sites/"
1457
  msgstr ""
1458
 
1459
+ #: inc/includes/admin-page.php:751
1460
  msgid "Install & Activate Astra Theme"
1461
  msgstr ""
1462
 
1463
+ #: inc/includes/admin-page.php:752
1464
  msgid ""
1465
  "To import the site in the original format, you would need the Astra theme "
1466
  "activated. You can import it with any other theme, but the site might lose "
1467
  "some of the design settings and look a bit different."
1468
  msgstr ""
1469
 
1470
+ #: inc/includes/admin-page.php:760
1471
  msgid "Import Customizer Settings"
1472
  msgstr ""
1473
 
1474
+ #: inc/includes/admin-page.php:764
1475
  #. translators: %s are white label strings.
1476
  msgid ""
1477
  "%1$s customizer serves global settings that give uniform design to the "
1479
  "settings."
1480
  msgstr ""
1481
 
1482
+ #: inc/includes/admin-page.php:775
1483
  msgid "Import Widgets"
1484
  msgstr ""
1485
 
1486
+ #: inc/includes/admin-page.php:785
1487
  msgid ""
1488
  "Plugins needed to import this template are missing. Required plugins will "
1489
  "be installed and activated automatically."
1490
  msgstr ""
1491
 
1492
+ #: inc/includes/admin-page.php:794
1493
  msgid "Import Content"
1494
  msgstr ""
1495
 
1496
+ #: inc/includes/admin-page.php:797
1497
  msgid ""
1498
  "Selecting this option will import dummy pages, posts, images, and menus. If "
1499
  "you do not want to import dummy content, please uncheck this option."
1500
  msgstr ""
1501
 
1502
+ #: inc/includes/admin-page.php:815
1503
  #. translators: %s is the dynamic string.
1504
  msgid ""
1505
  "The import process can take a few minutes depending on the size of the %s "
1506
  "and speed of the connection."
1507
  msgstr ""
1508
 
1509
+ #: inc/includes/admin-page.php:821
1510
  #. translators: %s is the dynamic string.
1511
  msgid "Please do NOT close this browser window until the %s is imported completely."
1512
  msgstr ""
1513
 
1514
+ #: inc/includes/admin-page.php:835
1515
  msgid "Import"
1516
  msgstr ""
1517
 
readme.txt CHANGED
@@ -5,7 +5,7 @@ Tags: Elementor,Beaver Builder,Templates,Gutenberg,Astra Starter Sites
5
  Requires at least: 4.4
6
  Requires PHP: 5.3
7
  Tested up to: 5.6
8
- Stable tag: 2.4.0
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
@@ -149,6 +149,10 @@ We are open to suggestions and would love to work on topics that our users are l
149
 
150
  == Changelog ==
151
 
 
 
 
 
152
  v2.4.0 - 30-December-2020
153
  - Improvement: Additional compatibility with WordPress 5.6.
154
 
5
  Requires at least: 4.4
6
  Requires PHP: 5.3
7
  Tested up to: 5.6
8
+ Stable tag: 2.5.0
9
  License: GPLv2 or later
10
  License URI: http://www.gnu.org/licenses/gpl-2.0.html
11
 
149
 
150
  == Changelog ==
151
 
152
+ v2.5.0 - 29-January-2021
153
+ - New: Added an ability to subscribe to Starter Templates' updates.
154
+ - Improvement: Added new API to support asynchronous import for the Starter Templates.
155
+
156
  v2.4.0 - 30-December-2020
157
  - Improvement: Additional compatibility with WordPress 5.6.
158