PluginProbe ʕ •ᴥ•ʔ
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments / 4.6.0
SureCart – Ecommerce Made Easy For Selling Physical Products, Digital Downloads, Subscriptions, Donations, & Payments v4.6.0
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 / Sync / SyncServiceProvider.php
surecart / app / src / Sync Last commit date
Concerns 6 months ago Jobs 1 year ago Tasks 1 year ago WooCommerce 3 weeks ago BatchCheckService.php 6 months ago ContentSyncService.php 6 months ago CustomerSyncService.php 1 year ago ImportState.php 2 months ago PostSyncService.php 1 week ago ProductSyncService.php 1 year ago ProductsSyncService.php 1 year ago StoreSyncService.php 1 year ago SyncService.php 2 months ago SyncServiceProvider.php 4 days ago
SyncServiceProvider.php
123 lines
1 <?php
2
3 namespace SureCart\Sync;
4
5 use SureCart\Controllers\Admin\Bundles\BundlesController;
6 use SureCart\Controllers\Admin\Products\ProductsController;
7 use SureCart\Sync\CustomerSyncService;
8 use SureCart\Sync\WooCommerce\WooCommerceImportJob;
9 use SureCart\Sync\WooCommerce\WooCommerceImportCleanupService;
10 use SureCart\Sync\WooCommerce\WooCommerceImportService;
11 use SureCart\Sync\WooCommerce\WooCommerceImportTask;
12 use SureCart\Sync\PostSyncService;
13 use SureCart\Sync\ProductSyncService;
14 use SureCart\Sync\Jobs\Cleanup\CollectionsCleanupJob;
15 use SureCart\Sync\Jobs\Cleanup\ProductsCleanupJob;
16 use SureCart\Sync\Jobs\CleanupJob;
17 use SureCart\Sync\Jobs\SyncJob;
18 use SureCart\Sync\Jobs\JobService;
19 use SureCart\Sync\Jobs\Sync\ProductsSyncJob;
20 use SureCart\Sync\Tasks\ProductCleanupTask;
21 use SureCart\Sync\Tasks\ProductSyncTask;
22 use SureCart\Sync\ProductsSyncService;
23 use SureCart\Sync\StoreSyncService;
24 use SureCart\Sync\Tasks\CollectionCleanupTask;
25 use SureCartCore\ServiceProviders\ServiceProviderInterface;
26
27 /**
28 * WordPress Users service.
29 */
30 class SyncServiceProvider implements ServiceProviderInterface {
31 /**
32 * Register all dependencies in the IoC container.
33 *
34 * @param \Pimple\Container $container Service container.
35 * @return void
36 */
37 public function register( $container ) {
38 /**
39 * Get the app instance.
40 */
41 $app = $container[ SURECART_APPLICATION_KEY ];
42
43 // Import state tracker — reusable for future import types (Shopify, EDD, etc.).
44 $container['surecart.sync.import_state.woo'] = fn () => new ImportState( 'woo' );
45
46 /**
47 * Async tasks. These handle scheduled tasks.
48 */
49 $container['surecart.tasks.product.sync'] = fn () => new ProductSyncTask();
50 $container['surecart.tasks.product.cleanup'] = fn () => new ProductCleanupTask();
51 $container['surecart.tasks.collection.cleanup'] = fn () => new CollectionCleanupTask();
52 $container['surecart.tasks.woo_import'] = fn ( $c ) => new WooCommerceImportTask( $c['surecart.sync.import_state.woo'] );
53
54 /**
55 * Jobs. These schedule the async tasks.
56 */
57 $container['surecart.jobs'] = fn() => new JobService( $app );
58 $container['surecart.jobs.sync'] = fn() => new SyncJob( $app );
59 $container['surecart.jobs.cleanup'] = fn() => new CleanupJob( $app );
60 $container['surecart.jobs.cleanup.collections'] = fn() => new CollectionsCleanupJob( $container['surecart.tasks.collection.cleanup'] );
61 $container['surecart.jobs.cleanup.products'] = fn() => ( new ProductsCleanupJob( $container['surecart.tasks.product.cleanup'] ) )->setNext( $container['surecart.jobs.cleanup.collections'] );
62 $container['surecart.jobs.sync.products'] = fn() => ( new ProductsSyncJob( $container['surecart.tasks.product.sync'] ) )->setNext( $container['surecart.jobs.cleanup.products'] );
63 $container['surecart.jobs.woo_import'] = fn() => new WooCommerceImportJob( $container['surecart.tasks.woo_import'] );
64
65 /**
66 * Services
67 */
68 $container['surecart.sync'] = fn () => new SyncService( $app );
69 $container['surecart.sync.product'] = fn () => new ProductSyncService( $app );
70 $container['surecart.sync.products'] = fn () => new ProductsSyncService( $app );
71 $container['surecart.sync.store'] = fn () => new StoreSyncService();
72 $container['surecart.process.product_post.sync'] = fn () => new PostSyncService();
73 $container['surecart.sync.customers'] = fn () => new CustomerSyncService();
74 $container['surecart.sync.woocommerce_products'] = fn ( $c ) => new WooCommerceImportService( $app, $c['surecart.sync.import_state.woo'] );
75 $container['surecart.sync.woo_import_cleanup'] = fn () => new WooCommerceImportCleanupService();
76 $container['surecart.sync.batch'] = fn () => new BatchCheckService();
77
78 $container['surecart.sync.content'] = fn () => new ContentSyncService( $app );
79
80 // Admin ProductsController needs ImportState; GenericFactory uses new Class() unless FQCN is bound.
81 // Handler passes namespace+class with a leading "\" (see admin routes setNamespace); ::class has none — register both keys.
82 $products_controller_factory = fn ( $c ) => new ProductsController( $c['surecart.sync.import_state.woo'] );
83 $container[ ProductsController::class ] = $products_controller_factory;
84 $container[ '\\' . ProductsController::class ] = $products_controller_factory;
85
86 // BundlesController extends ProductsController, so it inherits the same ImportState dependency.
87 $bundles_controller_factory = fn ( $c ) => new BundlesController( $c['surecart.sync.import_state.woo'] );
88 $container[ BundlesController::class ] = $bundles_controller_factory;
89 $container[ '\\' . BundlesController::class ] = $bundles_controller_factory;
90
91 // Alias the sync service.
92 $app->alias( 'sync', 'surecart.sync' );
93 }
94
95 /**
96 * Bootstrap any services if needed.
97 *
98 * @param \Pimple\Container $container Service container.
99 * @return void
100 */
101 public function bootstrap( $container ) {
102 // call the jobs - this is required because ajax handlers are only available in the constructor.
103 $container['surecart.jobs.cleanup.collections']->bootstrap();
104 $container['surecart.jobs.cleanup.products']->bootstrap();
105 $container['surecart.jobs.sync.products']->bootstrap();
106 $container['surecart.jobs.woo_import']->bootstrap();
107
108 // bootstrap services.
109 $container['surecart.sync.products']->bootstrap();
110 $container['surecart.sync.customers']->bootstrap();
111 $container['surecart.sync.woocommerce_products']->bootstrap();
112 $container['surecart.sync.woo_import_cleanup']->bootstrap();
113 $container['surecart.sync.store']->bootstrap();
114 $container['surecart.sync.content']->bootstrap();
115
116 // Bootstrap tasks.
117 $container['surecart.tasks.product.sync']->bootstrap();
118 $container['surecart.tasks.product.cleanup']->bootstrap();
119 $container['surecart.tasks.collection.cleanup']->bootstrap();
120 $container['surecart.tasks.woo_import']->bootstrap();
121 }
122 }
123