/** * Create a new blueprint from the given array. * array( * 'name' => 'test', * 'userId' => 1, * 'itemId' => 1, * 'itemTypeId => 1, * 'damageType' => 'damage', * 'material' => array( * 0 => 1, * ), * 'percentage' => array( * 0 => 100 * ), * 'materialWeaponModificator' => '0/0', * 'technique' => array( * 0 => 1, * ) * 'upgradeHitPoints' => 0, * 'upgradeBreakFactor' => 0, * 'upgradeInitiative' => 0, * 'upgradeWeaponModificator' => '0/0', * ) * * @param array $data * * @return boolean */ public static function create($data) { if (!$data['name'] && !$data['itemId'] && count($data['material']) === 0) { return false; } $weaponModificatorString = ''; if (!empty($data['materialWeaponModificator'])) { foreach ($data['materialWeaponModificator'] as $materialWeaponModificator) { $weaponModificatorString .= $materialWeaponModificator . ' || '; } } $weaponModificators = \Helper\WeaponModificator::getWeaponModificatorArray(substr($weaponModificatorString, 0, -2)); $upgradeWeaponModificator = \Helper\WeaponModificator::toWeaponModificatorArray($data['upgradeWeaponModificator']['attack'], $data['upgradeWeaponModificator']['parade']); $sql = ' INSERT INTO blueprints SET name = ' . \sqlval($data['name']) . ', userId = ' . \sqlval($data['userId']) . ', itemId = ' . \sqlval($data['itemId']) . ', itemTypeId = ' . \sqlval($data['itemTypeId']) . ', damageType = ' . \sqlval($data['damageType']) . ', materialWeaponModificator = ' . \sqlval(json_encode($weaponModificators)) . ', upgradeHitPoints = ' . \sqlval($data['upgradeHitPoints']) . ', upgradeBreakFactor = ' . \sqlval($data['upgradeBreakFactor']) . ', upgradeInitiative = ' . \sqlval($data['upgradeInitiative']) . ', upgradeWeaponModificator = ' . \sqlval(json_encode($upgradeWeaponModificator)) . ', bonusRangedFightValue = ' . \sqlval($data['bonusRangedFightValue']) . ', reducePhysicalStrengthRequirement = ' . \sqlval($data['reducePhysicalStrengthRequirement']) . ' '; $blueprintId = query($sql); foreach ($data['material'] as $key => $material) { $materialAssetId = false; $sql = ' SELECT `materialAssetId`, `percentage` FROM materialAssets WHERE `materialId` = ' . \sqlval($material) . ' AND !deleted ORDER BY percentage DESC '; $materialAssets = \query($sql, true); foreach ($materialAssets as $materialAsset) { if ($data['percentage'][$key] >= $materialAsset['percentage']) { $materialAssetId = $materialAsset['materialAssetId']; break; } } if (empty($materialAssetId)) { $materialAssetId = $materialAssets[0]['materialAssetId']; } $sql = ' INSERT INTO materialsToBlueprints SET materialId = ' . \sqlval($material) . ', blueprintId = ' . \sqlval($blueprintId) . ', materialAssetId = ' . \sqlval($materialAssetId) . ', percentage = ' . \sqlval($data['percentage'][$key]) . ', talent = ' . \sqlval($data['talent'][$key]) . ' '; query($sql); } if (!empty($data['technique'])) { foreach ($data['technique'] as $technique) { $sql = ' INSERT INTO techniquesToBlueprints SET techniqueId = ' . \sqlval($technique) . ', blueprintId = ' . \sqlval($blueprintId) . ' '; query($sql); } } return true; }
/** * Create a new material asset from the given array. * array( * 'percentage' => array( * 0 => 50, * 1 => 50, * ), * 'timeFactor' => array( * 0 => 1, * 1 => 1, * ), * 'priceFactor' => array( * 0 => 2, * 0 => 1.5, * ), * 'priceWeight' => array(), * 'currency' => array( * 0 => 'S', * 1 => 'D', * ), * 'proof' => array( * 0 => 0, * 1 => -1, * ), * 'breakFactor' => array( * 0 => 1, * 1 => -1, * ), * 'hitPoints' => array( * 0 => 0, * 1 => 1, * ), * 'armor' => array( * 0 => 0, * 1 => 0, * ), * 'weaponModificator' => array( * 0 => '0/0', * 1 => '-1/0', * ), * ) * * @param array $data * * @return boolean */ public static function create($data) { if (!$data['materialId'] && !$data['percentage'] && !$data['timeFactor'] && (!$data['priceFactor'] || $data['priceWeight'])) { return false; } $weaponModificators = array(); if (!empty($data['weaponModificator'])) { $weaponModificators = \Helper\WeaponModificator::getWeaponModificatorArray($data['weaponModificator']); } if (!empty($data['priceWeight'])) { $moneyHelper = new \Helper\Money(); $data['priceWeight'] = $moneyHelper->exchange($data['priceWeight'], $data['currency']); } $sql = ' INSERT INTO materialAssets SET materialId = ' . \sqlval($data['materialId']) . ', percentage = ' . \sqlval($data['percentage']) . ', timeFactor = ' . \sqlval($data['timeFactor']) . ', priceFactor = ' . \sqlval($data['priceFactor']) . ', priceWeight = ' . \sqlval($data['priceWeight']) . ', proof = ' . \sqlval($data['proof']) . ', breakFactor = ' . \sqlval($data['breakFactor']) . ', hitPoints = ' . \sqlval($data['hitPoints']) . ', armor = ' . \sqlval($data['armor']) . ', weaponModificator = ' . \sqlval(json_encode($weaponModificators)) . ' '; query($sql); return true; }
/** * Update the item. * * @param array $data * * @return integer */ public function update($data) { $update = ''; $data['twoHanded'] = $data['twoHanded'] ? $data['twoHanded'] : 0; $data['improvisational'] = $data['improvisational'] ? $data['improvisational'] : 0; $data['privileged'] = $data['privileged'] ? $data['privileged'] : 0; foreach ($data as $key => $value) { if ($key == 'currency') { continue; } if ($key == 'price') { $moneyHelper = new \Helper\Money(); $value = $moneyHelper->exchange($value, $data['currency']); } elseif ($key == 'weaponModificator') { $value = json_encode(\Helper\WeaponModificator::getWeaponModificatorArray($value)); } $update .= \sqlval($key, false) . ' = ' . \sqlval($value) . ",\n"; } $update = substr($update, 0, -2); $sql = ' UPDATE items SET ' . $update . ' WHERE `itemId` = ' . \sqlval($this->itemId) . ' '; $result = \query($sql); if ($result) { $this->fill($data); } return $result; }