public function registerEmails($services) { $services['mail.factory.order.note.notification'] = $services->factory(function ($c) { $factory = new \Message\Cog\Mail\Factory($c['mail.message']); $factory->requires('order', 'note'); $appName = $c['cfg']->app->name; $factory->extend(function ($factory, $message) use($appName) { $message->setTo($factory->order->user->email, $factory->order->user->getName()); $message->setSubject(sprintf('Updates to your %s order - %d', $appName, $factory->order->orderID)); $message->setView('Message:Mothership:Commerce::mail:order:note:customer-notification', array('order' => $factory->order, 'note' => $factory->note)); }); return $factory; }); $services['mail.factory.order.cancellation'] = $services->factory(function ($c) { $factory = new \Message\Cog\Mail\Factory($c['mail.message']); $factory->requires('order'); $appName = $c['cfg']->app->name; $factory->extend(function ($factory, $message) use($appName) { $message->setTo($factory->order->user->email); $message->setSubject(sprintf('Your %s order has been cancelled - %d', $appName, $factory->order->orderID)); $message->setView('Message:Mothership:Commerce::mail:order:cancel:order-cancellation', array('order' => $factory->order, 'companyName' => $appName)); }); return $factory; }); $services['mail.factory.order.item.cancellation'] = $services->factory(function ($c) { $factory = new \Message\Cog\Mail\Factory($c['mail.message']); $factory->requires('order'); $appName = $c['cfg']->app->name; $factory->extend(function ($factory, $message) use($appName) { $message->setTo($factory->order->user->email); $message->setSubject(sprintf('An item of your %s order has been cancelled - %d', $appName, $factory->order->orderID)); $message->setView('Message:Mothership:Commerce::mail:order:cancel:item-cancellation', array('order' => $factory->order, 'cancelledItems' => $factory->order->items->getByCurrentStatusCode(OrderStatuses::CANCELLED), 'companyName' => $appName)); }); return $factory; }); }
public function registerServices($services) { $this->registerReports($services); $services['cms.page.types'] = function ($c) { return new CMS\PageType\Collection(); }; $services['cms.page.slug_generator'] = $services->factory(function ($c) { return new CMS\Page\SlugGenerator($c['cms.page.loader'], (array) $c['cfg']->cms->slug->substitutions); }); $services['cms.page.nested_set_helper'] = $services->factory(function ($c) { $helper = $c['db.nested_set_helper']; return $helper->setTable('page', 'page_id', 'position_left', 'position_right', 'position_depth'); }); $services['cms.page.loader'] = $services->factory(function ($c) { return new CMS\Page\Loader($c['db.query.builder.factory'], $c['cms.page.types'], $c['user.groups'], $c['cms.page.authorisation'], $c['user.current'], $c['cms.page.searcher'], new EntityLoaderCollection(['content' => $c['cms.page.content_loader'], 'image' => $c['cms.page.image.loader'], 'tags' => $c['cms.page.tag.loader']]), $c['cms.page.cache']); }); $services['cms.page.cache'] = function ($c) { return new CMS\Page\PageCollection(); }; $services['cms.page.searcher'] = function ($c) { $searcher = new CMS\Page\Searcher($c['db.query'], $c['markdown.parser']); // Ignore terms less than this length. $searcher->setMinTermLength($c['cfg']->search->minTermLength); // Fields to in which to search for the terms. $searcher->setSearchFields($c['cfg']->search->searchFields); // Modifier for result score for fields. // Reformat the array due to issues with yaml formatting array keys. $tmp = $c['cfg']->search->fieldModifiers; $fieldModifiers = array(); foreach ($tmp as $v) { $fieldModifiers[$v[0]] = $v[1]; } $searcher->setFieldModifiers($fieldModifiers); // Modifier for the type of page. // Reformat the array due to issues with yaml formatting array keys. $tmp = $c['cfg']->search->pageTypeModifiers; $pageTypeModifiers = array(); foreach ($tmp as $v) { $pageTypeModifiers[$v[0]] = $v[1]; } $searcher->setPageTypeModifiers($pageTypeModifiers); $searcher->setExcerptField($c['cfg']->search->excerptField); return $searcher; }; $services['cms.page.content_loader'] = $services->factory(function ($c) { return new CMS\Page\ContentLoader($c['db.query'], $c['field.factory'], $c['field.content.builder']); }); $services['cms.page.image.loader'] = $services->factory(function ($c) { return new CMS\Page\ImageLoader($c['locale'], $c['db.query']); }); $services['cms.page.content_edit'] = $services->factory(function ($c) { return new CMS\Page\ContentEdit($c['db.transaction'], $c['event.dispatcher'], $c['user.current']); }); $services['cms.page.authorisation'] = $services->factory(function ($c) { return new CMS\Page\Authorisation($c['user.group.loader'], $c['user.current']); }); $services['cms.page.tag.loader'] = function ($c) { return new CMS\Page\TagLoader($c['db.query.builder.factory']); }; $services['cms.page.create'] = $services->factory(function ($c) { return new CMS\Page\Create($c['cms.page.loader'], $c['db.query'], $c['event.dispatcher'], $c['cms.page.nested_set_helper'], $c['cms.page.slug_generator'], $c['user.current']); }); $services['cms.page.delete'] = $services->factory(function ($c) { return new CMS\Page\Delete($c['db.query'], $c['event.dispatcher'], $c['cms.page.loader'], $c['user.current']); }); $services['cms.page.edit'] = $services->factory(function ($c) { return new CMS\Page\Edit($c['cms.page.loader'], $c['db.transaction'], $c['event.dispatcher'], $c['cms.page.nested_set_helper'], $c['user.current']); }); $services['cms.page.cookietrail.builder'] = $services->factory(function ($c) { return new CMS\Page\CookieTrail\CookieTrailBuilder($c['cms.page.loader']); }); $services['cms.search.loader'] = $services->factory(function ($c) { return new CMS\SearchLog\Loader($c['db.query']); }); $services['cms.search.create'] = $services->factory(function ($c) { return new CMS\SearchLog\Create($c['cms.search.loader'], $c['db.query'], $c['user.current']); }); $services['cms.blog.content_validator'] = function ($c) { return new CMS\Blog\ContentValidator(); }; $services['cms.blog.comment_builder'] = $services->factory(function ($c) { return new CMS\Blog\CommentBuilder($c['user.current'], $c['request'], $c['cms.blog.content_validator'], $c['user.group.loader']); }); $services['cms.blog.comment_loader'] = function ($c) { return new CMS\Blog\CommentLoader($c['db.query.builder.factory'], $c['cms.blog.comment_statuses']); }; $services['cms.blog.comment_create'] = function ($c) { return new CMS\Blog\CommentCreate($c['db.query']); }; $services['cms.blog.comment_edit'] = function ($c) { return new CMS\Blog\CommentEdit($c['db.transaction']); }; $services['cms.blog.comment_permission_resolver'] = function ($c) { return new CMS\Blog\CommentPermissionResolver($c['cms.blog.content_validator'], $c['user.group.loader']); }; $services['cms.blog.comment_statuses'] = function ($c) { return new CMS\Blog\Statuses(); }; $services['cms.blog.comment_dashboard_loader'] = function ($c) { return new CMS\Blog\Dashboard\DashboardLoader($c['cms.blog.comment_loader'], $c['cms.page.loader'], $c['cms.page.types']); }; $services->extend('field.collection', function ($fields, $c) { $fields->add(new \Message\Mothership\CMS\FieldType\Link($c['cms.page.loader'])); return $fields; }); $services['cms.page.slug_edit'] = function ($c) { return new CMS\Page\SlugEdit($c['cms.page.loader'], $c['cms.page.edit'], $c['routing.matcher'], $c['routing.generator']); }; $services->extend('form.extensions', function ($extensions, $c) { $extensions[] = $c['form.cms_extension']; return $extensions; }); $services['form.cms_extension'] = $services->factory(function ($c) { $ext = new \Message\Mothership\CMS\FormType\CmsExtension(); $ext->setContainer($c); return $ext; }); $services->extend('form.templates.twig', function ($templates, $c) { $templates[] = 'Message:Mothership:CMS::form:twig:form_div_layout'; return $templates; }); $services->extend('form.templates.php', function ($templates, $c) { $templates[] = 'Message:Mothership:CMS::form:php'; return $templates; }); $services['form.blog_comment'] = $services->factory(function ($c) { return new \Message\Mothership\CMS\Form\BlogComment($c['user.current']); }); $services['form.manage_comments'] = $services->factory(function ($c) { return new CMS\Form\ManageComments($c['cms.blog.comment_statuses']); }); $services['form.contact'] = $services->factory(function ($c) { return new \Message\Mothership\CMS\Form\Contact($c['translator']); }); $services['form.publishschedule'] = $services->factory(function () { return new \Message\Mothership\CMS\Form\PublishSchedule(); }); $services->extend('user.groups', function ($groups) { $groups->add(new CMS\UserGroup\ContentManager()); return $groups; }); $services['mail.factory.contact'] = $services->factory(function ($c) { $factory = new \Message\Cog\Mail\Factory($c['mail.message']); $factory->requires('email', 'name', 'message'); $toEmail = $c['cfg']->app->defaultContactEmail; $appName = $c['cfg']->app->name; $factory->extend(function ($factory, $message) use($appName, $toEmail) { $message->setFrom($factory->email, $factory->name); $message->setTo($toEmail, $appName); $message->setSubject('New contact from the ' . $appName . ' website'); $message->setView('Message:Mothership:CMS::mail:contact', ['name' => $factory->name, 'email' => $factory->email, 'message' => $factory->message]); }); return $factory; }); $services['analytics.collection'] = function ($c) { return new Analytics\ProviderCollection([new Analytics\Provider\GoogleAnalyticsProvider($c['cfg']->analytics->key), new Analytics\Provider\GoogleAnalyticsUniversalProvider($c['cfg']->analytics->key)]); }; $services['analytics.provider'] = function ($c) { return $c['analytics.collection']->get($c['cfg']->analytics->provider); }; }
public function registerEmails($services) { $services['mail.factory.order.confirmation'] = $services->factory(function ($c) { $factory = new \Message\Cog\Mail\Factory($c['mail.message']); $factory->requires('order', 'payments'); $appName = $c['cfg']->app->name; $factory->extend(function ($factory, $message) use($appName) { $message->setTo($factory->order->user->email); $message->setSubject(sprintf('Your %s order confirmation - %d', $appName, $factory->order->orderID)); $message->setView('Message:Mothership:Ecommerce::mail:order:confirmation', array('order' => $factory->order, 'payments' => $factory->payments, 'companyName' => $appName)); }); return $factory; }); }