From 279422ee9e3b42be362063095f95b2136b195b35 Mon Sep 17 00:00:00 2001 From: lopar Date: Wed, 10 Mar 2021 23:20:56 +0200 Subject: [PATCH] =?UTF-8?q?=D0=9E=D1=82=D0=BE=D0=B1=D1=80=D0=B0=D0=B6?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BF=D1=80=D0=B5=D0=B4=D0=BC=D0=B5?= =?UTF-8?q?=D1=82=D0=BE=D0=B2=20=D1=87=D0=B5=D1=80=D0=B5=D0=B7=20stdClass?= =?UTF-8?q?=20=D0=B2=D0=BC=D0=B5=D1=81=D1=82=D0=BE=20=D0=BC=D0=B0=D1=81?= =?UTF-8?q?=D1=81=D0=B8=D0=B2=D0=BE=D0=B2.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- classes/Battles/DressedItems.php | 14 +++++++------- classes/Battles/Item.php | 14 +++++++++++--- classes/Battles/UserInfo.php | 10 +++++----- main.php | 9 ++++----- 4 files changed, 27 insertions(+), 20 deletions(-) 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('
', $i); - if (!empty($dressedItems[$i])) { + if (!empty($dressedItems->$i)) { if (!$isBattle && $isMain) { - $itemString = '%s'; - echo sprintf($itemString, mt_rand(), $i, $dressedItems[$i]['image'], $dressedItems[$i]['name'], $dressedItems[$i]['name']); + echo sprintf('%s', + mt_rand(), $i, $dressedItems->$i->image, $dressedItems->$i->name, $dressedItems->$i->name); } else { - $itemString = '%s%s'; - echo sprintf($itemString, $dressedItems[$i]['image'], $dressedItems[$i]['name'], $dressedItems[$i]['name']); + echo sprintf('%s%s', + $dressedItems->$i->image, $dressedItems->$i->name, $dressedItems->$i->name); } } else { echo sprintf('Пустой слот [%s]', $i, $i); diff --git a/main.php b/main.php index 91173ed..9721a0b 100644 --- a/main.php +++ b/main.php @@ -36,10 +36,9 @@ $edit = $_GET['edit'] ?? null; // Подготавливаем отображение инфы и предметов. $userInfo = new UserInfo($user->getId()); $getItemsBonuses = new DressedItems($_SESSION['uid']); -$data_query = 'SELECT * FROM inventory WHERE owner_id = ?i AND dressed_slot = 0 AND on_sale = 0'; -$data = db::c()->query($data_query, $_SESSION['uid']); +$data = \Battles\Database\DBPDO::INIT()->ofetchAll('SELECT * FROM inventory WHERE owner_id = ? AND dressed_slot = 0 AND on_sale = 0', $user->getId()); $iteminfo = []; -while ($row = $data->fetch_assoc()) { +foreach ($data as $row) { $iteminfo[] = new InventoryItem($row); } @@ -456,8 +455,8 @@ Template::header('Игра'); echo ""; $ii->printInfo(); } - if ($data->getNumRows() == 0) { - echo "Пусто"; + if (!$data) { + echo "Пусто"; } ?>