* @copyright Since 2007 PrestaShop SA and Contributors * @license https://opensource.org/licenses/AFL-3.0 Academic Free License version 3.0 */ namespace PrestaShop\Module\PsAccounts\Provider; use PrestaShop\Module\PsAccounts\Adapter\Link; use PrestaShop\Module\PsAccounts\Context\ShopContext; class ShopProvider { /** * @var ShopContext */ private $shopContext; /** * @var Link */ private $link; /** * ShopProvider constructor. * * @param ShopContext $shopContext * @param Link $link */ public function __construct( ShopContext $shopContext, Link $link ) { $this->shopContext = $shopContext; $this->link = $link; } /** * @param string $psxName * * @return array * * @throws \PrestaShopException */ public function getCurrentShop($psxName = '') { $shop = \Shop::getShop($this->shopContext->getContext()->shop->id); return [ 'id' => $shop['id_shop'], 'name' => $shop['name'], 'domain' => $shop['domain'], 'domainSsl' => $shop['domain_ssl'], 'url' => $this->link->getAdminLink( 'AdminModules', true, [], [ 'configure' => $psxName, 'setShopContext' => 's-' . $shop['id_shop'], ] ), ]; } /** * @param string $psxName * * @return array * * @throws \PrestaShopException */ public function getShopsTree($psxName) { $shopList = []; if (true === $this->shopContext->isShopContext()) { return $shopList; } foreach (\Shop::getTree() as $groupId => $groupData) { $shops = []; foreach ($groupData['shops'] as $shopId => $shopData) { $shops[] = [ 'id' => $shopId, 'name' => $shopData['name'], 'domain' => $shopData['domain'], 'domainSsl' => $shopData['domain_ssl'], 'url' => $this->link->getAdminLink( 'AdminModules', true, [], [ 'configure' => $psxName, 'setShopContext' => 's-' . $shopId, ] ), ]; } $shopList[] = [ 'id' => $groupId, 'name' => $groupData['name'], 'shops' => $shops, ]; } return $shopList; } /** * @return ShopContext */ public function getShopContext() { return $this->shopContext; } }