public function registerProductPageMapper($services) { // Service to map pages to products and vice-versa $services['product.page_mapper.simple'] = function ($c) { $mapper = new \Message\Mothership\Commerce\ProductPageMapper\SimpleMapper($c['db.query'], $c['cms.page.loader'], $c['cms.page.authorisation'], $c['product.loader'], $c['product.unit.loader']); $mapper->setValidFieldNames('product'); $mapper->setValidGroupNames(null); $mapper->setValidPageTypes('product'); return $mapper; }; $services['product.page_mapper.option_criteria'] = function ($c) { $mapper = new \Message\Mothership\Commerce\ProductPageMapper\OptionCriteriaMapper($c['db.query'], $c['cms.page.loader'], $c['cms.page.authorisation'], $c['product.loader'], $c['product.unit.loader']); $mapper->setValidFieldNames('product'); $mapper->setValidGroupNames(null); $mapper->setValidPageTypes('product'); return $mapper; }; // Set the default product page mapper to the simple mapper $services['product.page_mapper'] = $services->raw('product.page_mapper.simple'); $services['page.product_mapper'] = $services->raw('product.page_mapper.simple'); // Extend twig with the product/page finders $services->extend('templating.twig.environment', function ($twig, $c) { $twig->addExtension(new \Message\Mothership\Commerce\ProductPageMapper\Templating\TwigExtension($c['page.product_mapper'], $c['product.page_mapper'])); return $twig; }); }
public function registerServices($services) { $this->addOrderStatuses($services); $this->registerEmails($services); $this->registerStatisticsDatasets($services); $this->registerPaymentGateways($services); $services['form.orders.checkbox'] = $services->factory(function ($sm) { return new \Message\Mothership\Ecommerce\Form\Orders($sm); }); /** * @deprecated */ $services['form.pickup'] = $services->factory(function ($sm) { return new \Message\Mothership\Ecommerce\Form\Pickup($sm); }); $services['form.fulfillment.pickup'] = $services->factory(function ($c) { return new \Message\Mothership\Ecommerce\Form\Fulfillment\Pickup($c['order.dispatch.loader']); }); $services['file.packing_slip'] = $services->factory(function ($sm) { return new \Message\Mothership\Ecommerce\File\PackingSlip($sm); }); $services['checkout.hash'] = function ($c) { return new \Message\Cog\Security\Hash\SHA1($c['security.salt']); }; // Add payments logger $services['log.payments'] = function ($c) { $logger = new \Monolog\Logger('payments'); return $logger; }; // @todo move to commerce, where address is $services['address.form'] = $services->factory(function ($sm) { return new \Message\Mothership\Ecommerce\Form\AddressForm($sm); }); $services['checkout.form.addresses'] = $services->factory(function ($sm) { return new \Message\Mothership\Ecommerce\Form\CheckoutAddressesForm($sm); }); $services['checkout.form.register'] = $services->factory(function ($sm) { return new \Message\Mothership\Ecommerce\Form\CheckoutRegisterForm($sm); }); $services['checkout.form.confirm'] = function ($c) { return new \Message\Mothership\Ecommerce\Form\CheckoutConfirmForm($c['gateways'], $c['translator']); }; $services['product.form.upload_confirm'] = $services->factory(function ($c) { return new \Message\Mothership\Ecommerce\Form\Product\CsvUploadConfirm($c['routing.generator'], $c['product.form.upload_create_product_pages'], (bool) $c['cfg']->shop->shopParentPage); }); $services['product.form.upload_create_product_pages'] = $services->factory(function ($c) { return new \Message\Mothership\Ecommerce\Form\Product\CreateProductPages($c['translator'], $c['cms.page.loader'], $c['http.session'], $c['product.page.variant_name_crawler'], $c['product.page.brand_validator'], $c['cfg']->shop->shopParentPage); }); $services['product.form.product_page_publish'] = $services->factory(function ($c) { return new \Message\Mothership\Ecommerce\Form\Product\ProductPagePublish(); }); $services['product.form.product_page_create'] = $services->factory(function ($c) { return new \Message\Mothership\Ecommerce\Form\Product\ProductPageCreateSingle($c['cms.page.loader'], $c['product.option.loader']); }); $services['product.page.unit_record.edit'] = $services->factory(function ($c) { return new \Message\Mothership\Ecommerce\ProductPage\UnitRecord\Edit($c['db.transaction']); }); $services['product.page.create'] = function ($c) { return new \Message\Mothership\Ecommerce\ProductPage\Create($c['cms.page.create'], $c['cms.page.edit'], $c['cms.page.loader'], $c['cms.page.content_loader'], $c['cms.page.content_edit'], $c['cms.page.types'], $c['product.page_type.listing'], $c['product.page.create_dispatcher'], $c['product.page.parent_create_dispatcher'], $c['product.page.exists'], $c['product.page_type.mapping']); }; $services['product.page.exists'] = function ($c) { return new \Message\Mothership\Ecommerce\ProductPage\Exists($c['db.query']); }; $services['product.page.upload_record.builder'] = function ($c) { return new \Message\Mothership\Ecommerce\ProductPage\UploadRecord\Builder(); }; $services['product.page.upload_record.create'] = function ($c) { return new \Message\Mothership\Ecommerce\ProductPage\UploadRecord\Create($c['db.transaction']); }; $services['product.page.upload_record.loader'] = function ($c) { return new \Message\Mothership\Ecommerce\ProductPage\UploadRecord\Loader($c['db.query']); }; $services['product.page.upload_record.edit'] = function ($c) { return new \Message\Mothership\Ecommerce\ProductPage\UploadRecord\Edit($c['db.transaction']); }; $services['product.page_type.listing'] = function ($c) { return null; }; $services['product.page_type.mapping'] = function ($c) { return []; }; $services['product.page.create_dispatcher'] = function ($c) { return new \Message\Mothership\Ecommerce\ProductPage\ProductPageCreateEventDispatcher($c['event.dispatcher']); }; $services['product.page.parent_create_dispatcher'] = function ($c) { return new \Message\Mothership\Ecommerce\ProductPage\ParentPageCreateEventDispatcher($c['event.dispatcher']); }; $services['product.page.variant_name_crawler'] = function ($c) { return new \Message\Mothership\Ecommerce\ProductPage\UploadData\VariantNameCrawler($c['product.upload.heading_keys']); }; $services['product.page.brand_validator'] = function ($c) { return new \Message\Mothership\Ecommerce\ProductPage\UploadData\BrandValidator($c['product.upload.heading_keys']); }; // Override from commerce to allow the use of page mappings. $services['product.page_mapper.simple'] = function ($c) { $mapper = new \Message\Mothership\Commerce\ProductPageMapper\SimpleMapper($c['db.query'], $c['cms.page.loader'], $c['cms.page.authorisation'], $c['product.loader'], $c['product.unit.loader']); $mapper->setValidFieldNames('product'); $mapper->setValidGroupNames(null); $mapper->setValidPageTypes(array_merge(['product'], array_values($c['product.page_type.mapping']))); return $mapper; }; }