diff --git a/classes/Battles/DressedItems.php b/classes/Battles/DressedItems.php index d1b170f..5fcb770 100644 --- a/classes/Battles/DressedItems.php +++ b/classes/Battles/DressedItems.php @@ -27,16 +27,16 @@ class DressedItems public static function getDressedItemBySlot($itemSlot, $ownerId) { - return self::$db->fetch('SELECT * FROM inventory WHERE owner_id = ? AND dressed_slot = ?', [$ownerId, $itemSlot]); + return self::$db->fetch('SELECT *, COUNT(1) AS count FROM inventory WHERE owner_id = ? AND dressed_slot = ?', [$ownerId, $itemSlot]); } - public function getItemsInSlots() + public function getItemsInSlots(): \stdClass { $items = self::$db->ofetchALL('SELECT * FROM inventory WHERE owner_id = ? AND dressed_slot > 0', $this->USERID); - $i = 0; - while ($i < count($items)) { - $this->dressedItem[$items[$i]->dressed_slot] = $items; - $i++; + $this->dressedItem = new \stdClass(); + foreach ($items as $item) { + $i = $item->dressed_slot; + $this->dressedItem->$i = $item; } return $this->dressedItem; } @@ -123,7 +123,7 @@ SQL; { self::getItemsInSlots(); // Проверяем, что используется один из 12 слотов и наличие предмета в слоте. - if (in_array($slot_id, Item::ITEM_TYPES_ALLOWED_IN_SLOTS) && $this->dressedItem[$slot_id]) { + if (in_array($slot_id, Item::ITEM_TYPES_ALLOWED_IN_SLOTS) && $this->dressedItem->$slot_id) { self::$db->execute('UPDATE inventory SET dressed_slot = 0 WHERE dressed_slot = ? AND owner_id = ?', [$slot_id, $this->USERID]); } } diff --git a/classes/Battles/Item.php b/classes/Battles/Item.php index 39a22ae..a60cfa0 100644 --- a/classes/Battles/Item.php +++ b/classes/Battles/Item.php @@ -49,9 +49,17 @@ abstract class Item */ public function __construct($row) { - foreach ($this as $key => $value) { - if (isset($row[$key])) { - $this->$key = $row[$key]; + if (is_array($row)) { + foreach ($this as $key => $value) { + if (isset($row[$key])) { + $this->$key = $row[$key]; + } + } + } elseif (is_object($row)) { + foreach ($this as $name => $value) { + if (isset($row->$name)) { + $this->$name = $row->$name; + } } } diff --git a/classes/Battles/UserInfo.php b/classes/Battles/UserInfo.php index ab978cd..4892f7e 100644 --- a/classes/Battles/UserInfo.php +++ b/classes/Battles/UserInfo.php @@ -25,13 +25,13 @@ class UserInfo extends User $dressedItems = $di->getItemsInSlots(); for ($i = 1; $i <= 12; $i++) { echo sprintf('