/
home
/
sharedstore
/
public_html
/
prestashop.sharedstore.ma
/
src
/
Adapter
/
/home/sharedstore/public_html/prestashop.sharedstore.ma/src/Adapter
mkdir
upload
Name
Size
Mode
Actions
Address/
-
0755
rm
Admin/
-
0755
rm
Assets/
-
0755
rm
Attachment/
-
0755
rm
Attribute/
-
0755
rm
AttributeGroup/
-
0755
rm
Backup/
-
0755
rm
BestSales/
-
0755
rm
Cache/
-
0755
rm
Carrier/
-
0755
rm
Cart/
-
0755
rm
CartRule/
-
0755
rm
CatalogPriceRule/
-
0755
rm
Category/
-
0755
rm
CMS/
-
0755
rm
Configuration/
-
0755
rm
Contact/
-
0755
rm
Container/
-
0755
rm
Converter/
-
0755
rm
Country/
-
0755
rm
CreditSlip/
-
0755
rm
Currency/
-
0755
rm
Customer/
-
0755
rm
Debug/
-
0755
rm
Domain/
-
0755
rm
Email/
-
0755
rm
Employee/
-
0755
rm
EntityTranslation/
-
0755
rm
Feature/
-
0755
rm
File/
-
0755
rm
Form/
-
0755
rm
Geolocation/
-
0755
rm
Grid/
-
0755
rm
Group/
-
0755
rm
Hook/
-
0755
rm
Hosting/
-
0755
rm
Image/
-
0755
rm
Import/
-
0755
rm
Invoice/
-
0755
rm
Kpi/
-
0755
rm
Language/
-
0755
rm
Localization/
-
0755
rm
Mail/
-
0755
rm
MailTemplate/
-
0755
rm
Manufacturer/
-
0755
rm
Media/
-
0755
rm
Meta/
-
0755
rm
Module/
-
0755
rm
NewProducts/
-
0755
rm
Notification/
-
0755
rm
Number/
-
0755
rm
OptionalFeatures/
-
0755
rm
Order/
-
0755
rm
OrderMessage/
-
0755
rm
OrderReturn/
-
0755
rm
OrderReturnState/
-
0755
rm
OrderState/
-
0755
rm
Pack/
-
0755
rm
PDF/
-
0755
rm
Preferences/
-
0755
rm
Presenter/
-
0755
rm
PricesDrop/
-
0755
rm
Product/
-
0755
rm
Profile/
-
0755
rm
Requirement/
-
0755
rm
Routes/
-
0755
rm
Routing/
-
0755
rm
Search/
-
0755
rm
SearchEngine/
-
0755
rm
Security/
-
0755
rm
Session/
-
0755
rm
Shop/
-
0755
rm
Smarty/
-
0755
rm
SpecificPrice/
-
0755
rm
SqlManager/
-
0755
rm
State/
-
0755
rm
Store/
-
0755
rm
Supplier/
-
0755
rm
Support/
-
0755
rm
System/
-
0755
rm
Tab/
-
0755
rm
Tax/
-
0755
rm
TaxRulesGroup/
-
0755
rm
Theme/
-
0755
rm
Title/
-
0755
rm
Translations/
-
0755
rm
Twig/
-
0755
rm
Upload/
-
0755
rm
Warehouse/
-
0755
rm
Webservice/
-
0755
rm
Zone/
-
0755
rm
AbstractObjectModelValidator.php
3719
0644
edit
dl
rm
AddressFactory.php
2051
0644
edit
dl
rm
CacheManager.php
1450
0644
edit
dl
rm
ClassLang.php
1716
0644
edit
dl
rm
CombinationDataProvider.php
8580
0644
edit
dl
rm
Configuration.php
13959
0644
edit
dl
rm
ContainerBuilder.php
8966
0644
edit
dl
rm
ContainerFinder.php
2398
0644
edit
dl
rm
ContextStateManager.php
10336
0644
edit
dl
rm
CoreException.php
1229
0644
edit
dl
rm
Database.php
2698
0644
edit
dl
rm
EntityMapper.php
5573
0644
edit
dl
rm
EntityMetaDataRetriever.php
2034
0644
edit
dl
rm
Environment.php
2670
0644
edit
dl
rm
GeneralConfiguration.php
4331
0644
edit
dl
rm
HookManager.php
3969
0644
edit
dl
rm
ImageManager.php
4320
0644
edit
dl
rm
LegacyContext.php
11008
0644
edit
dl
rm
LegacyContextLoader.php
4262
0644
edit
dl
rm
LegacyHookSubscriber.php
4780
0644
edit
dl
rm
LegacyLogger.php
4898
0644
edit
dl
rm
ObjectPresenter.php
1327
0644
edit
dl
rm
RoundingMapper.php
2523
0644
edit
dl
rm
ServiceLocator.php
2065
0644
edit
dl
rm
StockManager.php
7914
0644
edit
dl
rm
SymfonyContainer.php
1970
0644
edit
dl
rm
Tools.php
5932
0644
edit
dl
rm
Validate.php
3833
0644
edit
dl
rm
Edit:
/home/sharedstore/public_html/prestashop.sharedstore.ma/src/Adapter/ContainerBuilder.php
(8966B)
<?php /** * Copyright since 2007 PrestaShop SA and Contributors * PrestaShop is an International Registered Trademark & Property of PrestaShop SA * * NOTICE OF LICENSE * * This source file is subject to the Open Software License (OSL 3.0) * that is bundled with this package in the file LICENSE.md. * It is also available through the world-wide-web at this URL: * https://opensource.org/licenses/OSL-3.0 * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@prestashop.com so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade PrestaShop to newer * versions in the future. If you wish to customize PrestaShop for your * needs please refer to https://devdocs.prestashop.com/ for more information. * * @author PrestaShop SA and Contributors <contact@prestashop.com> * @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/OSL-3.0 Open Software License (OSL 3.0) */ namespace PrestaShop\PrestaShop\Adapter; use Doctrine\ORM\Tools\Setup; use Exception; use LegacyCompilerPass; use PrestaShop\PrestaShop\Adapter\Container\ContainerBuilderExtensionInterface; use PrestaShop\PrestaShop\Adapter\Container\ContainerParametersExtension; use PrestaShop\PrestaShop\Adapter\Container\DoctrineBuilderExtension; use PrestaShop\PrestaShop\Adapter\Container\LegacyContainer; use PrestaShop\PrestaShop\Adapter\Container\LegacyContainerBuilder; use PrestaShop\PrestaShop\Core\EnvironmentInterface; use PrestaShopBundle\DependencyInjection\Compiler\LoadServicesFromModulesPass; use PrestaShopBundle\Exception\ServiceContainerException; use PrestaShopBundle\PrestaShopBundle; use Symfony\Component\Cache\Adapter\ArrayAdapter; use Symfony\Component\Cache\DoctrineProvider; use Symfony\Component\Config\ConfigCache; use Symfony\Component\Config\FileLocator; use Symfony\Component\Config\Resource\FileResource; use Symfony\Component\DependencyInjection\Compiler\PassConfig; use Symfony\Component\DependencyInjection\ContainerInterface; use Symfony\Component\DependencyInjection\Dumper\PhpDumper; use Symfony\Component\DependencyInjection\Loader\YamlFileLoader; /** * Build the Container for PrestaShop Legacy. */ class ContainerBuilder { /** * @var ContainerInterface */ private static $containers; /** * @var EnvironmentInterface */ private $environment; /** * @var string */ private $containerName; /** * @var string */ private $containerClassName; /** * @var string */ private $dumpFile; /** * @var ConfigCache */ private $containerConfigCache; /** * @param string $containerName * @param bool $isDebug * * @return LegacyContainerBuilder * * @throws Exception */ public static function getContainer($containerName, $isDebug) { if ($containerName === 'admin') { throw new ServiceContainerException( 'You should use `SymfonyContainer::getInstance()` instead of `ContainerBuilder::getContainer(\'admin\')`' ); } if (!isset(self::$containers[$containerName])) { $builder = new ContainerBuilder(new Environment($isDebug)); self::$containers[$containerName] = $builder->buildContainer($containerName); } return self::$containers[$containerName]; } /** * @param EnvironmentInterface $environment */ public function __construct(EnvironmentInterface $environment) { $this->environment = $environment; } /** * @param string $containerName * * @return ContainerInterface|LegacyContainerBuilder * * @throws Exception */ public function buildContainer($containerName) { $this->containerName = $containerName; $this->containerClassName = ucfirst($this->containerName) . 'Container'; $this->dumpFile = $this->environment->getCacheDir() . DIRECTORY_SEPARATOR . $this->containerClassName . '.php'; $this->containerConfigCache = new ConfigCache($this->dumpFile, $this->environment->isDebug()); //These methods load required files like autoload or annotation metadata so we need to load //them at each container creation, this can't be compiled. $this->loadDoctrineAnnotationMetadata(); $container = $this->loadDumpedContainer(); if (null === $container) { $container = $this->compileContainer(); } else { $this->loadModulesAutoloader($container); } // synthetic definitions can't be compiled $container->set('shop', $container->get('context')->shop); $container->set('employee', $container->get('context')->employee); return $container; } /** * @return ContainerInterface|null */ private function loadDumpedContainer() { $container = null; if ($this->containerConfigCache->isFresh()) { require_once $this->dumpFile; $container = new $this->containerClassName(); } return $container; } /** * @return LegacyContainerBuilder * * @throws Exception */ private function compileContainer() { $container = new LegacyContainerBuilder(); //If the container builder is modified the container logically should be rebuilt $container->addResource(new FileResource(__FILE__)); $container->addCompilerPass(new LoadServicesFromModulesPass($this->containerName), PassConfig::TYPE_BEFORE_OPTIMIZATION, PrestaShopBundle::LOAD_MODULE_SERVICES_PASS_PRIORITY); $container->addCompilerPass(new LegacyCompilerPass()); //Build extensions $builderExtensions = [ new ContainerParametersExtension($this->environment), new DoctrineBuilderExtension($this->environment), ]; /** @var ContainerBuilderExtensionInterface $builderExtension */ foreach ($builderExtensions as $builderExtension) { $builderExtension->build($container); } $this->loadServicesFromConfig($container); $this->loadModulesAutoloader($container); $container->compile(); //Dump the container file $dumper = new PhpDumper($container); $this->containerConfigCache->write( $dumper->dump([ 'class' => $this->containerClassName, 'base_class' => LegacyContainer::class, ]), $container->getResources() ); return $container; } /** * In symfony context doctrine classes (like Table, Entity, ...) are available thanks to * the autoloader. In this specific context we don't have the general autoloader, so we need * to include these classes manually. This is performed in Doctrine\ORM\Configuration::newDefaultAnnotationDriver * which is called in Setup::createAnnotationMetadataConfiguration. */ private function loadDoctrineAnnotationMetadata() { //IMPORTANT: we need to provide a cache because doctrine tries to init a connection on redis, memcached, ... on its own $cacheProvider = new DoctrineProvider(new ArrayAdapter()); Setup::createAnnotationMetadataConfiguration([], $this->environment->isDebug(), null, $cacheProvider); } /** * @param LegacyContainerBuilder $container * * @throws Exception */ private function loadServicesFromConfig(LegacyContainerBuilder $container) { $loader = new YamlFileLoader($container, new FileLocator(__DIR__)); $servicesPath = sprintf( '%sservices/%s/services_%s.yml', _PS_CONFIG_DIR_, $this->containerName, $this->environment->getName() ); $loader->load($servicesPath); } /** * Loops through all active modules and automatically include their autoload (if present). * Needs to be done as earlier as possible in application lifecycle. Unfortunately this can't * be done in a compiler pass because they are only executed on compilation and this needs to * be done at each container instanciation. * * @param ContainerInterface $container * * @throws Exception */ private function loadModulesAutoloader(ContainerInterface $container) { if (!$container->hasParameter('kernel.active_modules')) { return; } $activeModules = $container->getParameter('kernel.active_modules'); /** @var array<string> $activeModules */ foreach ($activeModules as $module) { $autoloader = _PS_MODULE_DIR_ . $module . '/vendor/autoload.php'; if (file_exists($autoloader)) { include_once $autoloader; } } } }
Save
cmd:
run