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