本文整理汇总了PHP中Aimeos\MShop\Context\Item\Iface类的典型用法代码示例。如果您正苦于以下问题:PHP Iface类的具体用法?PHP Iface怎么用?PHP Iface使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Iface类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: get
/**
* Returns the locale object for frontend
*
* @param \Aimeos\MShop\Context\Item\Iface $context Context object
* @param \TYPO3\CMS\Extbase\Mvc\RequestInterface|null $request Request object
* @return \Aimeos\MShop\Locale\Item\Iface Locale item object
*/
public static function get(\Aimeos\MShop\Context\Item\Iface $context, \TYPO3\CMS\Extbase\Mvc\RequestInterface $request = null)
{
if (!isset(self::$locale)) {
$config = $context->getConfig();
$sitecode = $config->get('mshop/locale/site', 'default');
$name = $config->get('typo3/param/name/site', 'loc_site');
if ($request !== null && $request->hasArgument($name) === true) {
$sitecode = $request->getArgument($name);
} elseif (($value = \TYPO3\CMS\Core\Utility\GeneralUtility::_GP('S')) !== null) {
$sitecode = $value;
}
$langid = $config->get('mshop/locale/language', '');
$name = $config->get('typo3/param/name/language', 'loc_language');
if ($request !== null && $request->hasArgument($name) === true) {
$langid = $request->getArgument($name);
} elseif (isset($GLOBALS['TSFE']->config['config']['language'])) {
$langid = $GLOBALS['TSFE']->config['config']['language'];
}
$currency = $config->get('mshop/locale/currency', '');
$name = $config->get('typo3/param/name/currency', 'loc_currency');
if ($request !== null && $request->hasArgument($name) === true) {
$currency = $request->getArgument($name);
} elseif (($value = \TYPO3\CMS\Core\Utility\GeneralUtility::_GP('C')) !== null) {
$currency = $value;
}
$localeManager = \Aimeos\MShop\Locale\Manager\Factory::createManager($context);
self::$locale = $localeManager->bootstrap($sitecode, $langid, $currency);
}
return self::$locale;
}
示例2: getLocale
/**
* Returns the locale object for the context
*
* @param \Aimeos\MShop\Context\Item\Iface $context Context object
* @return \Aimeos\MShop\Locale\Item\Iface Locale item object
*/
protected function getLocale(\Aimeos\MShop\Context\Item\Iface $context)
{
if (!isset(self::$locale)) {
$session = $context->getSession();
$config = $context->getConfig();
$sitecode = $config->get('mshop/locale/site', 'default');
$name = $config->get('typo3/param/name/site', 'loc-site');
if ($this->request->hasArgument($name) === true) {
$sitecode = $this->request->getArgument($name);
}
$langid = $config->get('mshop/locale/language', '');
$name = $config->get('typo3/param/name/language', 'loc-language');
if (isset($GLOBALS['TSFE']->config['config']['language'])) {
$langid = $GLOBALS['TSFE']->config['config']['language'];
}
if ($this->request->hasArgument($name) === true) {
$langid = $this->request->getArgument($name);
}
$currency = $config->get('mshop/locale/currency', '');
$name = $config->get('typo3/param/name/currency', 'loc-currency');
if ($this->request->hasArgument($name) === true) {
$currency = $this->request->getArgument($name);
}
$localeManager = \Aimeos\MShop\Locale\Manager\Factory::createManager($context);
self::$locale = $localeManager->bootstrap($sitecode, $langid, $currency);
}
return self::$locale;
}
示例3: createController
/**
* Creates a new controller specified by the given name.
*
* @param \Aimeos\MShop\Context\Item\Iface $context Context object required by controllers
* @param string|null $name Name of the controller or "Standard" if null
* @return \Aimeos\Controller\Common\Order\Iface New order controller object
* @throws \Aimeos\Controller\Common\Exception
*/
public static function createController(\Aimeos\MShop\Context\Item\Iface $context, $name = null)
{
/** controller/common/order/name
* Class name of the used order common controller implementation
*
* Each default common controller can be replace by an alternative imlementation.
* To use this implementation, you have to set the last part of the class
* name as configuration value so the controller factory knows which class it
* has to instantiate.
*
* For example, if the name of the default class is
*
* \Aimeos\Controller\Common\Order\Standard
*
* and you want to replace it with your own version named
*
* \Aimeos\Controller\Common\Order\Myorder
*
* then you have to set the this configuration option:
*
* controller/common/order/name = Myorder
*
* The value is the last part of your own class name and it's case sensitive,
* so take care that the configuration value is exactly named like the last
* part of the class name.
*
* The allowed characters of the class name are A-Z, a-z and 0-9. No other
* characters are possible! You should always start the last part of the class
* name with an upper case character and continue only with lower case characters
* or numbers. Avoid chamel case names like "MyOrder"!
*
* @param string Last part of the class name
* @since 2014.07
* @category Developer
*/
if ($name === null) {
$name = $context->getConfig()->get('controller/common/order/name', 'Standard');
}
if (ctype_alnum($name) === false) {
$classname = is_string($name) ? '\\Aimeos\\Controller\\Common\\Order\\' . $name : '<not a string>';
throw new \Aimeos\Controller\Common\Exception(sprintf('Invalid characters in class name "%1$s"', $classname));
}
$iface = '\\Aimeos\\Controller\\Common\\Order\\Iface';
$classname = '\\Aimeos\\Controller\\Common\\Order\\' . $name;
if (isset(self::$objects[$classname])) {
return self::$objects[$classname];
}
if (class_exists($classname) === false) {
throw new \Aimeos\Controller\Common\Exception(sprintf('Class "%1$s" not available', $classname));
}
$controller = new $classname($context);
if (!$controller instanceof $iface) {
throw new \Aimeos\Controller\Common\Exception(sprintf('Class "%1$s" does not implement interface "%2$s"', $classname, $interface));
}
return $controller;
}
示例4: createController
/**
* @param string $name
*/
public static function createController(\Aimeos\MShop\Context\Item\Iface $context, $name = null, $domainToTest = 'plugin')
{
if ($name === null) {
$name = $context->getConfig()->get('controller/extjs/plugin/name', 'Standard');
}
if (ctype_alnum($name) === false) {
throw new \Aimeos\Controller\ExtJS\Exception(sprintf('Invalid class name "%1$s"', $name));
}
$iface = '\\Aimeos\\Controller\\ExtJS\\Common\\Iface';
$classname = '\\Aimeos\\Controller\\ExtJS\\Plugin\\' . $name;
$manager = self::createControllerBase($context, $classname, $iface);
return self::addControllerDecorators($context, $manager, $domainToTest);
}
示例5: createController
/**
* @param string $name
*/
public static function createController(\Aimeos\MShop\Context\Item\Iface $context, $name = null, $domainToTest = 'service')
{
if ($name === null) {
$name = $context->getConfig()->get('controller/frontend/service/name', 'Standard');
}
if (ctype_alnum($name) === false) {
throw new \Aimeos\Controller\Frontend\Exception(sprintf('Invalid characters in class name "%1$s"', $name));
}
$iface = '\\Aimeos\\Controller\\Frontend\\Service\\Iface';
$classname = '\\Aimeos\\Controller\\Frontend\\Service\\' . $name;
$manager = self::createControllerBase($context, $classname, $iface);
return self::addControllerDecorators($context, $manager, $domainToTest);
}
示例6: addClientDecorators
/**
* Adds the decorators to the JSON API client object
*
* @param \Aimeos\Admin\JsonAdm\Common\Iface $client Client object
* @param \Aimeos\MShop\Context\Item\Iface $context Context instance with necessary objects
* @param \Aimeos\MW\View\Iface $view View object
* @param array $templatePaths List of file system paths where the templates are stored
* @param string $path Name of the client separated by slashes, e.g "product/stock"
* @return \Aimeos\Admin\JsonAdm\Common\Iface Client object
*/
protected static function addClientDecorators(\Aimeos\Admin\JsonAdm\Iface $client, \Aimeos\MShop\Context\Item\Iface $context, \Aimeos\MW\View\Iface $view, array $templatePaths, $path)
{
$config = $context->getConfig();
/** admin/jsonadm/common/decorators/default
* Configures the list of decorators applied to all JSON API clients
*
* Decorators extend the functionality of a class by adding new aspects
* (e.g. log what is currently done), executing the methods of the underlying
* class only in certain conditions (e.g. only for logged in users) or
* modify what is returned to the caller.
*
* This option allows you to configure a list of decorator names that should
* be wrapped around the original instance of all created clients:
*
* admin/jsonadm/common/decorators/default = array( 'decorator1', 'decorator2' )
*
* This would wrap the decorators named "decorator1" and "decorator2" around
* all client instances in that order. The decorator classes would be
* "\Aimeos\Admin\JsonAdm\Common\Decorator\Decorator1" and
* "\Aimeos\Admin\JsonAdm\Common\Decorator\Decorator2".
*
* @param array List of decorator names
* @since 2015.12
* @category Developer
*/
$decorators = $config->get('admin/jsonadm/common/decorators/default', array());
$classprefix = '\\Aimeos\\Admin\\JsonAdm\\Common\\Decorator\\';
$client = self::addDecorators($client, $decorators, $classprefix, $context, $view, $templatePaths, $path);
if ($path !== null && is_string($path)) {
$dpath = trim($path, '/');
$dpath = $dpath !== '' ? $dpath . '/' : $dpath;
$excludes = $config->get('admin/jsonadm/' . $dpath . 'decorators/excludes', array());
$localClass = str_replace(' ', '\\', ucwords(str_replace('/', ' ', $path)));
foreach ($decorators as $key => $name) {
if (in_array($name, $excludes)) {
unset($decorators[$key]);
}
}
$classprefix = '\\Aimeos\\Admin\\JsonAdm\\Common\\Decorator\\';
$decorators = $config->get('admin/jsonadm/' . $dpath . 'decorators/global', array());
$client = self::addDecorators($client, $decorators, $classprefix, $context, $view, $templatePaths, $path);
if (!empty($path)) {
$classprefix = '\\Aimeos\\Admin\\JsonAdm\\' . ucfirst($localClass) . '\\Decorator\\';
$decorators = $config->get('admin/jsonadm/' . $dpath . 'decorators/local', array());
$client = self::addDecorators($client, $decorators, $classprefix, $context, $view, $templatePaths, $path);
}
}
return $client;
}
示例7: create
/**
* Creates the view object for the HTML client.
*
* @param \Aimeos\MShop\Context\Item\Iface $context Context object
* @param array $templatePaths List of base path names with relative template paths as key/value pairs
* @param string|null $locale Code of the current language or null for no translation
* @return \Aimeos\MW\View\Iface View object
*/
public function create(\Aimeos\MShop\Context\Item\Iface $context, array $templatePaths, $locale = null)
{
$config = $context->getConfig();
$view = new \Aimeos\MW\View\Standard($templatePaths);
$this->addCsrf($view);
$this->addAccess($view, $context);
$this->addConfig($view, $config);
$this->addNumber($view, $config);
$this->addParam($view);
$this->addRequest($view);
$this->addResponse($view);
$this->addTranslate($view, $locale);
$this->addUrl($view);
return $view;
}
示例8: create
/**
* Creates the view object for the HTML client.
*
* @param \Aimeos\MShop\Context\Item\Iface $context Context object
* @param \TYPO3\Flow\Mvc\Routing\UriBuilder $uriBuilder URL builder object
* @param array $templatePaths List of base path names with relative template paths as key/value pairs
* @param \TYPO3\Flow\Mvc\RequestInterface|null $request Request object
* @param string|null $langid Language ID
* @return \Aimeos\MW\View\Iface View object
*/
public function create(\Aimeos\MShop\Context\Item\Iface $context, \TYPO3\Flow\Mvc\Routing\UriBuilder $uriBuilder, array $templatePaths, \TYPO3\Flow\Mvc\RequestInterface $request = null, $langid = null)
{
$config = $context->getConfig();
$view = new \Aimeos\MW\View\Standard($templatePaths);
$this->addCsrf($view);
$this->addAccess($view, $context);
$this->addConfig($view, $config);
$this->addNumber($view, $config);
$this->addParam($view, $request);
$this->addRequest($view, $request);
$this->addResponse($view);
$this->addTranslate($view, $langid);
$this->addUrl($view, $uriBuilder, $request);
return $view;
}
示例9: addUser
/**
* Adds the user ID and name if available
*
* @param \Aimeos\MShop\Context\Item\Iface $context Context object
*/
protected function addUser(\Aimeos\MShop\Context\Item\Iface $context)
{
$token = null;
$username = '';
if ($this->container->has('security.token_storage')) {
$token = $this->container->get('security.token_storage')->getToken();
} else {
if ($this->container->has('security.context')) {
$token = $this->container->get('security.context')->getToken();
}
}
if (is_object($token)) {
if (method_exists($token->getUser(), 'getId')) {
$userid = $token->getUser()->getId();
$context->setUserId($userid);
$context->setGroupIds(function () use($context, $userid) {
$manager = \Aimeos\MShop\Factory::createManager($context, 'customer');
return $manager->getItem($userid, array('customer/group'))->getGroups();
});
}
if (is_object($token->getUser())) {
$username = $token->getUser()->getUsername();
} else {
$username = $token->getUser();
}
}
$context->setEditor($username);
}
示例10: createClient
/**
* Creates a stock client object.
*
* @param \Aimeos\MShop\Context\Item\Iface $context Shop context instance with necessary objects
* @param array $templatePaths Stock of file system paths where the templates are stored
* @param string|null $name Client name (default: "Default")
* @return \Aimeos\Client\Html\Iface Filter part implementing \Aimeos\Client\Html\Iface
* @throws \Aimeos\Client\Html\Exception If requested client implementation couldn't be found or initialisation fails
*/
public static function createClient(\Aimeos\MShop\Context\Item\Iface $context, array $templatePaths, $name = null)
{
/** client/html/catalog/stock/name
* Class name of the used catalog stock client implementation
*
* Each default HTML client can be replace by an alternative imlementation.
* To use this implementation, you have to set the last part of the class
* name as configuration value so the client factory knows which class it
* has to instantiate.
*
* For example, if the name of the default class is
*
* \Aimeos\Client\Html\Catalog\Stock\Standard
*
* and you want to replace it with your own version named
*
* \Aimeos\Client\Html\Catalog\Stock\Mystock
*
* then you have to set the this configuration option:
*
* client/html/catalog/stock/name = Mystock
*
* The value is the last part of your own class name and it's case sensitive,
* so take care that the configuration value is exactly named like the last
* part of the class name.
*
* The allowed characters of the class name are A-Z, a-z and 0-9. No other
* characters are possible! You should always start the last part of the class
* name with an upper case character and continue only with lower case characters
* or numbers. Avoid chamel case names like "MyStock"!
*
* @param string Last part of the class name
* @since 2014.03
* @category Developer
*/
if ($name === null) {
$name = $context->getConfig()->get('client/html/catalog/stock/name', 'Standard');
}
if (ctype_alnum($name) === false) {
$classname = is_string($name) ? '\\Aimeos\\Client\\Html\\Catalog\\Stock\\' . $name : '<not a string>';
throw new \Aimeos\Client\Html\Exception(sprintf('Invalid characters in class name "%1$s"', $classname));
}
$iface = '\\Aimeos\\Client\\Html\\Iface';
$classname = '\\Aimeos\\Client\\Html\\Catalog\\Stock\\' . $name;
$client = self::createClientBase($context, $classname, $iface, $templatePaths);
return self::addClientDecorators($context, $client, $templatePaths, 'catalog/stock');
}
示例11: addControllerDecorators
/**
* Adds the decorators to the controller object.
*
* @param \Aimeos\MShop\Context\Item\Iface $context Context instance with necessary objects
* @param \Aimeos\Controller\Frontend\Common\Iface $controller Controller object
* @param string $domain Domain name in lower case, e.g. "product"
* @return \Aimeos\Controller\Frontend\Common\Iface Controller object
*/
protected static function addControllerDecorators(\Aimeos\MShop\Context\Item\Iface $context, \Aimeos\Controller\Frontend\Iface $controller, $domain)
{
if (!is_string($domain) || $domain === '') {
throw new \Aimeos\Controller\Frontend\Exception(sprintf('Invalid domain "%1$s"', $domain));
}
$localClass = str_replace(' ', '\\', ucwords(str_replace('/', ' ', $domain)));
$config = $context->getConfig();
/** controller/frontend/common/decorators/default
* Configures the list of decorators applied to all frontend controllers
*
* Decorators extend the functionality of a class by adding new aspects
* (e.g. log what is currently done), executing the methods of the underlying
* class only in certain conditions (e.g. only for logged in users) or
* modify what is returned to the caller.
*
* This option allows you to configure a list of decorator names that should
* be wrapped around the original instance of all created controllers:
*
* controller/frontend/common/decorators/default = array( 'decorator1', 'decorator2' )
*
* This would wrap the decorators named "decorator1" and "decorator2" around
* all controller instances in that order. The decorator classes would be
* "\Aimeos\Controller\Frontend\Common\Decorator\Decorator1" and
* "\Aimeos\Controller\Frontend\Common\Decorator\Decorator2".
*
* @param array List of decorator names
* @since 2014.03
* @category Developer
*/
$decorators = $config->get('controller/frontend/common/decorators/default', array());
$excludes = $config->get('controller/frontend/' . $domain . '/decorators/excludes', array());
foreach ($decorators as $key => $name) {
if (in_array($name, $excludes)) {
unset($decorators[$key]);
}
}
$classprefix = '\\Aimeos\\Controller\\Frontend\\Common\\Decorator\\';
$controller = self::addDecorators($context, $controller, $decorators, $classprefix);
$classprefix = '\\Aimeos\\Controller\\Frontend\\Common\\Decorator\\';
$decorators = $config->get('controller/frontend/' . $domain . '/decorators/global', array());
$controller = self::addDecorators($context, $controller, $decorators, $classprefix);
$classprefix = '\\Aimeos\\Controller\\Frontend\\' . ucfirst($localClass) . '\\Decorator\\';
$decorators = $config->get('controller/frontend/' . $domain . '/decorators/local', array());
$controller = self::addDecorators($context, $controller, $decorators, $classprefix);
return $controller;
}
示例12: createController
public static function createController(\Aimeos\MShop\Context\Item\Iface $context, $name = null)
{
/** controller/extjs/product/export/text/name
* Class name of the used ExtJS product export text controller implementation
*
* Each default ExtJS controller can be replace by an alternative imlementation.
* To use this implementation, you have to set the last part of the class
* name as configuration value so the client factory knows which class it
* has to instantiate.
*
* For example, if the name of the default class is
*
* \Aimeos\Controller\ExtJS\Product\Export\Text\Standard
*
* and you want to replace it with your own version named
*
* \Aimeos\Controller\ExtJS\Product\Export\Text\Mytext
*
* then you have to set the this configuration option:
*
* controller/extjs/product/export/text/name = Mytext
*
* The value is the last part of your own class name and it's case sensitive,
* so take care that the configuration value is exactly named like the last
* part of the class name.
*
* The allowed characters of the class name are A-Z, a-z and 0-9. No other
* characters are possible! You should always start the last part of the class
* name with an upper case character and continue only with lower case characters
* or numbers. Avoid chamel case names like "MyText"!
*
* @param string Last part of the class name
* @since 2014.03
* @category Developer
*/
if ($name === null) {
$name = $context->getConfig()->get('controller/extjs/product/export/text/name', 'Standard');
}
if (ctype_alnum($name) === false) {
$classname = is_string($name) ? '\\Aimeos\\Controller\\ExtJS\\Product\\Export\\Text\\' . $name : '<not a string>';
throw new \Aimeos\Controller\ExtJS\Exception(sprintf('Invalid class name "%1$s"', $classname));
}
$iface = '\\Aimeos\\Controller\\ExtJS\\Common\\Load\\Text\\Iface';
$classname = '\\Aimeos\\Controller\\ExtJS\\Product\\Export\\Text\\' . $name;
return self::createControllerBase($context, $classname, $iface);
}
示例13: getCache
/**
* Returns the cache object for the context
*
* @param \Aimeos\MShop\Context\Item\Iface $context Context object including config
* @param string $siteid Unique site ID
* @return \Aimeos\MW\Cache\Iface Cache object
*/
protected static function getCache(\Aimeos\MShop\Context\Item\Iface $context)
{
$config = $context->getConfig();
switch (Base::getExtConfig('cacheName', 'Typo3')) {
case 'None':
$config->set('client/html/basket/cache/enable', false);
return \Aimeos\MW\Cache\Factory::createManager('None', array(), null);
case 'Typo3':
if (class_exists('\\TYPO3\\CMS\\Core\\Cache\\Cache')) {
\TYPO3\CMS\Core\Cache\Cache::initializeCachingFramework();
}
$manager = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance('TYPO3\\CMS\\Core\\Cache\\CacheManager');
return new \Aimeos\MAdmin\Cache\Proxy\Typo3($context, $manager->getCache('aimeos'));
default:
return new \Aimeos\MAdmin\Cache\Proxy\Standard($context);
}
}
示例14: createClient
/**
* Creates a new client object.
*
* @param \Aimeos\MShop\Context\Item\Iface $context Shop context instance with necessary objects
* @param array List of file system paths where the templates are stored
* @param string $type Type of the client, e.g 'product' for \Aimeos\Admin\JQAdm\Product\Standard
* @param string|null $name Admin name (default: "Standard")
* @return \Aimeos\Admin\JQAdm\Iface admin client implementing \Aimeos\Admin\JQAdm\Iface
* @throws \Aimeos\Admin\JQAdm\Exception If requested client implementation couldn't be found or initialisation fails
*/
public static function createClient(\Aimeos\MShop\Context\Item\Iface $context, array $templatePaths, $type, $name = null)
{
if (empty($type)) {
throw new \Aimeos\Admin\JQAdm\Exception(sprintf('Admin JQAdm type is empty'));
}
if (ctype_alnum($type) === false) {
throw new \Aimeos\Admin\JQAdm\Exception(sprintf('Invalid characters in client name "%1$s"', $type));
}
$factory = '\\Aimeos\\Admin\\JQAdm\\' . ucwords($type) . '\\Factory';
if (class_exists($factory) === false) {
throw new \Aimeos\Admin\JQAdm\Exception(sprintf('Class "%1$s" not available', $factory));
}
$client = @call_user_func_array(array($factory, 'createClient'), array($context, $templatePaths, $name));
if ($client === false) {
throw new \Aimeos\Admin\JQAdm\Exception(sprintf('Invalid factory "%1$s"', $factory));
}
$client->setView($context->getView());
return $client;
}
示例15: addManagerDecorators
/**
* Adds the decorators to the manager object.
*
* @param \Aimeos\MShop\Context\Item\Iface $context Context instance with necessary objects
* @param \Aimeos\MShop\Common\Manager\Iface $manager Manager object
* @param string $domain Domain name in lower case, e.g. "product"
* @return \Aimeos\MShop\Common\Manager\Iface Manager object
*/
protected static function addManagerDecorators(\Aimeos\MShop\Context\Item\Iface $context, \Aimeos\MShop\Common\Manager\Iface $manager, $domain)
{
$config = $context->getConfig();
/** mshop/common/manager/decorators/default
* Configures the list of decorators applied to all shop managers
*
* Decorators extend the functionality of a class by adding new aspects
* (e.g. log what is currently done), executing the methods of the underlying
* class only in certain conditions (e.g. only for logged in users) or
* modify what is returned to the caller.
*
* This option allows you to configure a list of decorator names that should
* be wrapped around the original instances of all created managers:
*
* mshop/common/manager/decorators/default = array( 'decorator1', 'decorator2' )
*
* This would wrap the decorators named "decorator1" and "decorator2" around
* all controller instances in that order. The decorator classes would be
* "\Aimeos\MShop\Common\Manager\Decorator\Decorator1" and
* "\Aimeos\MShop\Common\Manager\Decorator\Decorator2".
*
* @param array List of decorator names
* @since 2014.03
* @category Developer
*/
$decorators = $config->get('mshop/common/manager/decorators/default', array());
$excludes = $config->get('mshop/' . $domain . '/manager/decorators/excludes', array());
foreach ($decorators as $key => $name) {
if (in_array($name, $excludes)) {
unset($decorators[$key]);
}
}
$classprefix = '\\Aimeos\\MShop\\Common\\Manager\\Decorator\\';
$manager = self::addDecorators($context, $manager, $decorators, $classprefix);
$classprefix = '\\Aimeos\\MShop\\Common\\Manager\\Decorator\\';
$decorators = $config->get('mshop/' . $domain . '/manager/decorators/global', array());
$manager = self::addDecorators($context, $manager, $decorators, $classprefix);
$classprefix = '\\Aimeos\\MShop\\' . ucfirst($domain) . '\\Manager\\Decorator\\';
$decorators = $config->get('mshop/' . $domain . '/manager/decorators/local', array());
$manager = self::addDecorators($context, $manager, $decorators, $classprefix);
return $manager;
}