PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.7.1
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.7.1
4.7.2 4.7.1 4.7.0 4.6.6 4.6.5 4.6.4 4.6.3 4.6.2 4.6.1 4.6.0 4.5.1 4.5.0 4.4.2 4.4.1 4.4.0 4.3.3 4.3.2 4.3.1 4.3.0 4.2.3 4.2.2 4.2.1 1.0.3 1.0.4 1.0.5 1.0.6 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8 1.1.9 1.10.0 1.10.1 1.10.2 1.10.3 1.10.4 1.11.0 1.11.1 1.11.2 1.2.0 1.2.1 1.2.2 1.2.3 1.2.4 1.2.5 1.3.0 1.3.1 1.3.2 1.3.3 1.3.4 1.4.0 1.4.1 1.4.2 1.5.0 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.6.0 1.6.1 1.6.2 1.6.3 1.6.4 1.7.0 1.7.1 1.7.2 1.8.0 1.8.1 1.8.2 1.8.3 1.8.4 1.8.5 1.9.0 1.9.1 1.9.2 1.9.3 1.9.4 1.9.5 2.0.0 2.0.1 2.1.0 2.1.1 2.1.2 2.1.3 2.1.4 2.10.0 2.10.1 2.11.0 2.11.1 2.11.2 2.11.3 2.11.4 2.12.0 2.13.0 2.14.0 2.14.1 2.15.0 2.15.1 2.16.0 2.16.1 2.16.2 2.16.3 2.17.0 2.17.1 2.17.2 2.18.0 2.19.0 2.19.2 2.19.3 2.19.4 2.2.0 2.2.1 2.20.0 2.20.1 2.20.2 2.20.3 2.20.4 2.20.5 2.20.6 2.21.0 2.22.0 2.22.1 2.23.0 2.24.0 2.25.0 2.25.1 2.25.2 2.26.0 2.27.0 2.27.1 2.28.0 2.29.0 2.29.1 2.29.2 2.29.3 2.29.4 2.3.0 2.3.1 2.30.0 2.31.0 2.31.1 2.31.2 2.31.3 2.4.0 2.4.1 2.4.2 2.4.3 2.4.4 2.40.0 2.40.1 2.5.0 2.5.1 2.5.2 2.6.0 2.6.1 2.6.2 2.7.0 2.7.1 2.7.2 2.7.3 2.7.4 2.7.5 2.8.0 2.8.1 2.8.2 2.8.3 2.8.4 2.9.0 3.0.0 3.0.0-RC1 3.0.0-RC2 3.0.0-beta1 3.0.0-beta2 3.0.1 3.0.2 3.0.3 3.0.4 3.0.5 3.1.0 3.1.1 3.1.2 3.1.3 3.1.4 3.1.5 3.1.6 3.10.0 3.10.1 3.11.0 3.12.0 3.13.0 3.13.1 3.13.2 3.13.3 3.13.4 3.14.0 3.15.0 3.15.1 3.15.2 3.15.3 3.15.4 3.15.5 3.16.0 3.16.1 3.16.2 3.16.3 3.16.4 3.16.5 3.16.6 3.16.7 3.16.8 3.17.0 3.17.1 3.17.2 3.17.3 3.17.4 3.17.5 3.17.6 3.18.0 3.19.0 3.19.1 3.19.2 3.2.0 3.2.1 3.2.2 3.20.0 3.20.1 3.3.0 3.3.1 3.4.0 3.4.1 3.4.2 3.4.3 3.5.0 3.5.1 3.5.2 3.5.3 3.6.0 3.6.1 3.6.2 3.7.0 3.7.1 3.7.2 3.7.3 3.8.0 3.8.1 3.8.2 3.8.3 3.8.4 3.8.5 3.9.0 4.0.0 4.0.1 4.0.2 4.0.3 trunk 4.1.0 0.2.19.1 4.1.1 1.0.0 4.2.0 1.0.1 1.0.2
surecart / app / src / Database / ProductPageMigrationService.php
surecart / app / src / Database Last commit date
Tables 1 year ago CartLineItemDetailsMigrationService.php 1 day ago GeneralMigration.php 1 year ago MigrationsServiceProvider.php 1 month ago ProductPageMigrationService.php 1 day ago RewriteRulesMigrationService.php 1 year ago Table.php 4 years ago ThemeMigrationService.php 5 months ago UpdateMigrationServiceProvider.php 2 months ago UserMetaMigrationsService.php 4 years ago VersionMigration.php 1 day ago WebhookMigrationsService.php 1 year ago
ProductPageMigrationService.php
88 lines
1 <?php
2
3 namespace SureCart\Database;
4
5 /**
6 * Run this migration when version changes or for new installations.
7 */
8 class ProductPageMigrationService extends VersionMigration {
9 /**
10 * The key for the migration.
11 *
12 * @var string
13 */
14 protected $migration_key = 'surecart_product_page_migration_version';
15
16 /**
17 * Run the migration.
18 *
19 * @return void
20 */
21 public function run(): void {
22
23 $args = array(
24 'post_type' => array( 'wp_template_part', 'wp_template' ), // specify the post types.
25 'post_status' => array( 'auto-draft', 'draft', 'publish' ), // specify the post status.
26 'posts_per_page' => -1,
27 'lazy_load_term_meta' => false,
28 );
29
30 $query = new \WP_Query( $args );
31 $templates = $query->posts ?? array();
32
33 if ( empty( $templates ) ) {
34 return;
35 }
36
37 // filter out the templates that have post_name as product.
38 $product_templates = array_filter(
39 $templates,
40 function ( $template ) {
41 return in_array( $template->post_name, array( 'product-info', 'single-product' ) ) ||
42 strpos( $template->post_name, 'sc-part-products-info-' ) !== false ||
43 strpos( $template->post_name, 'sc-products-' ) !== false;
44 }
45 );
46
47 // if we don't have any product templates, return.
48 if ( empty( $product_templates ) ) {
49 return;
50 }
51
52 // update each template if it doesn't have the wp:surecart/product-page block.
53 foreach ( $product_templates as $product_template ) {
54 // thread one content variable through both transforms so the second
55 // doesn't overwrite the first with the original post content.
56 $content = $product_template->post_content;
57
58 if ( ! has_block( 'surecart/product-page', $content ) ) {
59 $content = '<!-- wp:surecart/product-page {"align":"wide"} -->' . $content . '<!-- /wp:surecart/product-page -->';
60 }
61
62 if ( ! has_block( 'surecart/product-selected-price-ad-hoc-amount', $content ) ) {
63 $insert_before_block = has_block( 'surecart/product-buy-buttons', $content ) ? 'surecart/product-buy-buttons' : 'surecart/product-buy-button';
64
65 $content = str_replace(
66 '<!-- wp:' . $insert_before_block,
67 '<!-- wp:surecart/product-selected-price-ad-hoc-amount /-->' . PHP_EOL . '<!-- wp:' . $insert_before_block,
68 $content
69 );
70 }
71
72 // only save when something actually changed — an unconditional save
73 // would re-run every merchant-customized template through the save
74 // pipeline on every plugin update.
75 if ( $content === $product_template->post_content ) {
76 continue;
77 }
78
79 $result = $this->updatePostContent( $product_template->ID, $content );
80
81 // a failed update defers completion so the next admin_init retries (see VersionMigration::complete()).
82 if ( is_wp_error( $result ) || empty( $result ) ) {
83 $this->failed = true;
84 }
85 }
86 }
87 }
88