You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					141 lines
				
				5.1 KiB
			
		
		
			
		
	
	
					141 lines
				
				5.1 KiB
			| 
											8 years ago
										 | <?php
 | ||
|  | 
 | ||
|  | namespace common\bootstrap;
 | ||
|  | 
 | ||
|  | //use Elasticsearch\Client;
 | ||
|  | //use Elasticsearch\ClientBuilder;
 | ||
|  | use League\Flysystem\Adapter\Ftp;
 | ||
|  | use League\Flysystem\Filesystem;
 | ||
|  | //use shop\cart\Cart;
 | ||
|  | //use shop\cart\cost\calculator\DynamicCost;
 | ||
|  | //use shop\cart\cost\calculator\SimpleCost;
 | ||
|  | //use shop\cart\storage\HybridStorage;
 | ||
|  | use core\dispatchers\AsyncEventDispatcher;
 | ||
|  | use core\dispatchers\DeferredEventDispatcher;
 | ||
|  | use core\dispatchers\EventDispatcher;
 | ||
|  | use core\dispatchers\SimpleEventDispatcher;
 | ||
|  | use core\entities\behaviors\FlySystemImageUploadBehavior;
 | ||
|  | //use shop\entities\Shop\Product\events\ProductAppearedInStock;
 | ||
|  | use core\jobs\AsyncEventJobHandler;
 | ||
|  | //use shop\listeners\Shop\Category\CategoryPersistenceListener;
 | ||
|  | //use shop\listeners\Shop\Product\ProductAppearedInStockListener;
 | ||
|  | //use shop\listeners\Shop\Product\ProductSearchPersistListener;
 | ||
|  | //use shop\listeners\Shop\Product\ProductSearchRemoveListener;
 | ||
|  | use core\listeners\user\UserSignupConfirmedListener;
 | ||
|  | use core\listeners\user\UserSignupRequestedListener;
 | ||
|  | //use shop\repositories\events\EntityPersisted;
 | ||
|  | //use shop\repositories\events\EntityRemoved;
 | ||
|  | use core\services\newsletter\MailChimp;
 | ||
|  | use core\services\newsletter\Newsletter;
 | ||
|  | //use shop\services\sms\LoggedSender;
 | ||
|  | //use shop\services\sms\SmsRu;
 | ||
|  | //use shop\services\sms\SmsSender;
 | ||
|  | //use shop\services\yandex\ShopInfo;
 | ||
|  | //use shop\services\yandex\YandexMarket;
 | ||
|  | use core\events\user\UserSignUpConfirmed;
 | ||
|  | use core\events\user\UserSignUpRequested;
 | ||
|  | use core\services\ContactService;
 | ||
|  | use yii\base\BootstrapInterface;
 | ||
|  | use yii\base\ErrorHandler;
 | ||
|  | use yii\caching\Cache;
 | ||
|  | use yii\di\Container;
 | ||
|  | use yii\di\Instance;
 | ||
|  | use yii\mail\MailerInterface;
 | ||
|  | use yii\rbac\ManagerInterface;
 | ||
|  | use yii\queue\Queue;
 | ||
|  | use yiidreamteam\upload\ImageUploadBehavior;
 | ||
|  | 
 | ||
|  | class SetUp implements BootstrapInterface
 | ||
|  | {
 | ||
|  |     public function bootstrap($app): void
 | ||
|  |     {
 | ||
|  |         $container = \Yii::$container;
 | ||
|  | 
 | ||
|  |         /*$container->setSingleton(Client::class, function () {
 | ||
|  |             return ClientBuilder::create()->build();
 | ||
|  |         });*/
 | ||
|  | 
 | ||
|  |         $container->setSingleton(MailerInterface::class, function () use ($app) {
 | ||
|  |             return $app->mailer;
 | ||
|  |         });
 | ||
|  | 
 | ||
|  |         $container->setSingleton(ErrorHandler::class, function () use ($app) {
 | ||
|  |             return $app->errorHandler;
 | ||
|  |         });
 | ||
|  | 
 | ||
|  |         $container->setSingleton(Queue::class, function () use ($app) {
 | ||
|  |             return $app->get('queue');
 | ||
|  |         });
 | ||
|  | 
 | ||
|  |         $container->setSingleton(Cache::class, function () use ($app) {
 | ||
|  |             return $app->cache;
 | ||
|  |         });
 | ||
|  | 
 | ||
|  |         $container->setSingleton(ManagerInterface::class, function () use ($app) {
 | ||
|  |             return $app->authManager;
 | ||
|  |         });
 | ||
|  | 
 | ||
|  |         $container->setSingleton(ContactService::class, [], [
 | ||
|  |             $app->params['adminEmail']
 | ||
|  |         ]);
 | ||
|  | 
 | ||
|  |         /*$container->setSingleton(Cart::class, function () use ($app) {
 | ||
|  |             return new Cart(
 | ||
|  |                 new HybridStorage($app->get('user'), 'cart', 3600 * 24, $app->db),
 | ||
|  |                 new DynamicCost(new SimpleCost())
 | ||
|  |             );
 | ||
|  |         });
 | ||
|  | 
 | ||
|  |         $container->setSingleton(YandexMarket::class, [], [
 | ||
|  |             new ShopInfo($app->name, $app->name, $app->params['frontendHostInfo']),
 | ||
|  |         ]);*/
 | ||
|  | 
 | ||
|  |         $container->setSingleton(Newsletter::class, function () use ($app) {
 | ||
|  |             return new MailChimp(
 | ||
|  |                 new \DrewM\MailChimp\MailChimp($app->params['mailChimpKey']),
 | ||
|  |                 $app->params['mailChimpListId']
 | ||
|  |             );
 | ||
|  |         });
 | ||
|  | 
 | ||
|  |         /*$container->setSingleton(SmsSender::class, function () use ($app) {
 | ||
|  |             return new LoggedSender(
 | ||
|  |                 new SmsRu($app->params['smsRuKey']),
 | ||
|  |                 \Yii::getLogger()
 | ||
|  |             );
 | ||
|  |         });*/
 | ||
|  | 
 | ||
|  |         $container->setSingleton(EventDispatcher::class, DeferredEventDispatcher::class);
 | ||
|  | 
 | ||
|  |         $container->setSingleton(DeferredEventDispatcher::class, function (Container $container) {
 | ||
|  |             return new DeferredEventDispatcher(new AsyncEventDispatcher($container->get(Queue::class)));
 | ||
|  |         });
 | ||
|  | 
 | ||
|  |         $container->setSingleton(SimpleEventDispatcher::class, function (Container $container) {
 | ||
|  |             return new SimpleEventDispatcher($container, [
 | ||
|  |                 UserSignUpRequested::class => [UserSignupRequestedListener::class],
 | ||
|  |                 UserSignUpConfirmed::class => [UserSignupConfirmedListener::class],
 | ||
|  |                 //ProductAppearedInStock::class => [ProductAppearedInStockListener::class],
 | ||
|  |                 //EntityPersisted::class => [
 | ||
|  |                 //    ProductSearchPersistListener::class,
 | ||
|  |                 //    CategoryPersistenceListener::class,
 | ||
|  |                 //],
 | ||
|  |                 //EntityRemoved::class => [
 | ||
|  |                 //    ProductSearchRemoveListener::class,
 | ||
|  |                 //    CategoryPersistenceListener::class,
 | ||
|  |                 //],
 | ||
|  |             ]);
 | ||
|  |         });
 | ||
|  | 
 | ||
|  |         $container->setSingleton(AsyncEventJobHandler::class, [], [
 | ||
|  |             Instance::of(SimpleEventDispatcher::class)
 | ||
|  |         ]);
 | ||
|  | 
 | ||
|  |         /*
 | ||
|  |         $container->setSingleton(Filesystem::class, function () use ($app) {
 | ||
|  |             return new Filesystem(new Ftp($app->params['ftp']));
 | ||
|  |         });
 | ||
|  | 
 | ||
|  |         $container->set(ImageUploadBehavior::class, FlySystemImageUploadBehavior::class);
 | ||
|  |         */
 | ||
|  |     }
 | ||
|  | }
 |