shopId = $shopId; } public static function id($shopid): self { return new self($shopid); } private function showGoods(): string { if ($this->categoryType) { $stmt = Db::getInstance()->ofetchAll('select * from items inner join trade_offers on id = shop_item_id where shop_id = ? and shop_item_quantity !=0 and item_type = ?', [$this->shopId, $this->categoryType]); $stmt2 = Db::getInstance()->ofetchAll('select * from inventory where on_sale != 0 and present is null and item_type = ?', $this->categoryType); } else { $stmt = Db::getInstance()->ofetchAll('select * from items inner join trade_offers on id = shop_item_id where shop_id = ? and shop_item_quantity !=0', $this->shopId); $stmt2 = Db::getInstance()->ofetchAll('select * from inventory where on_sale != 0 and present is null'); } $iteminfo = []; foreach ($stmt as $item) { $iteminfo[] = new ShopItem($item, 'buyshop'); } foreach ($stmt2 as $item) { $iteminfo[] = new ShopItem($item, 'buymarket'); } return $this->strFromArr($iteminfo); } private function showUserSellItems(): string { $stmt = Db::getInstance()->ofetchall('select * from inventory where on_sale = 0 and dressed_slot = 0 and durability > 0 and owner_id = ?', User::getInstance()->getId()); $iteminfo = []; $operationType = 'sellshop'; if ($this->categoryType === self::BARTER_SHOP) { $operationType = 'setmarket'; } foreach ($stmt as $item) { $iteminfo[] = new ShopItem($item, $operationType); } return $this->strFromArr($iteminfo); } private function strFromArr(array $array): string { $str = ''; $format = '
%s%s
%s
'; foreach ($array as $a) { $str .= sprintf($format, $a->printImage(), $a->printControls(), $a->printInfo()); } return $str; } public function getCategoryName(): string { $names = [ Item::TYPE_HELMET => 'Шлемы', Item::TYPE_ARMOR => 'Броня', Item::TYPE_LEGS => 'Поножи', Item::TYPE_BOOTS => 'Сапоги', Item::TYPE_GLOVES => 'Перчатки', Item::TYPE_WEAPON => 'Оружие', Item::TYPE_SHIELD => 'Щиты', Item::TYPE_BELT => 'Пояса', Item::TYPE_RING => 'Кольца', Item::TYPE_AMULET => 'Амулеты', Item::TYPE_CONSUMABLE => 'Расходники', Item::TYPE_OTHER => 'Разное', self::CATEGORY_SALE_ITEMS => 'Предметы в инвентаре', 0 => 'Все товары', ]; return $names[$this->categoryType]; } public function getItemsList(): string { return $this->categoryType !== self::CATEGORY_SALE_ITEMS || $this->categoryType !== self::BARTER_SHOP ? $this->showGoods() : $this->showUserSellItems(); } }