public static function _get_record_extras(array $recordData) { if (isset($recordData['ability_score'])) { $recordData['ability_mod'] = Ability::calculate_ability_modifier($recordData['ability_score']); } $recordData['skill_mod'] = self::calculate_skill_modifier($recordData); $recordData['is_class_skill_checked'] = ToolBox::interpret_bool($recordData['is_class_skill'], array('', 'checked="checked"')); $recordData['is_checked_checkbox'] = ToolBox::interpret_bool($recordData['is_class_skill'], array("", "checked")); return $recordData; }
public function texst_delete() { $x = new Ability(); $x->characterId = $this->id; $x->create_defaults($this->dbObj); $allRecords = $x->get_all($this->dbObj, $this->id); $this->assertTrue(count($allRecords) > 0); $keys = array_keys($allRecords); $lastRec = count($allRecords); foreach ($allRecords as $ability => $data) { $this->assertEquals($lastRec, count($x->get_all($this->dbObj, $this->id))); $this->assertTrue(is_string($ability), "ID=(" . $ability . ")"); $this->assertTrue(is_array($data)); $this->assertTrue(count($data) > 0); $x->id = $data['character_ability_id']; $this->assertEquals(1, $x->delete($this->dbObj)); $lastRec--; } $this->assertEquals(0, $lastRec); $allAbilities = $x->get_all($this->dbObj, $this->id); $this->assertEquals(0, count($allAbilities), cs_global::debug_print($allAbilities)); $this->assertEquals(array(), $allAbilities); }
public function test_get_all() { $x = new Skill(); $x->characterId = $this->char->characterId; $a = new Ability(); $a->characterId = $this->char->characterId; $a->create_defaults($this->dbObj); $cache = $a->get_all($this->dbObj, $this->char->id); $byAbility = array('str' => array(), 'con' => array(), 'dex' => array(), 'int' => array(), 'wis' => array(), 'cha' => array()); $this->assertEquals(6, count($byAbility)); foreach ($this->autoSkills as $k => $theData) { $name = $theData[0]; $ability = $theData[1]; $insertData = array('character_id' => $x->characterId, 'ability_id' => $cache[$ability]['ability_id'], 'skill_name' => $name); $id = $x->create($this->dbObj, $insertData); $this->assertTrue(isset($byAbility[$ability])); $this->assertFalse(isset($byAbility[$ability][$id])); $byAbility[$ability][$id] = $insertData; } $this->assertEquals(6, count($byAbility)); foreach ($byAbility as $ability => $data) { $aId = $cache[$ability]['ability_id']; $testData = $x->get_all($this->dbObj, $x->characterId, $aId); $this->assertTrue(is_array($testData)); foreach ($testData as $k => $v) { $this->assertTrue(is_array($v)); $this->assertTrue(isset($v['ability_id'])); $this->assertEquals($aId, $v['ability_id']); } $this->assertEquals(count($data), count($testData), "getting skills based on ability id (" . $ability . "/" . $aId . ") failed..."); } }
public function handle_update($name, $value) { $changesByKey = array(); $result = "not set"; $bits = preg_split('/__/', $name); $prefix = $bits[0]; $realName = $bits[1]; $recordId = null; if (isset($bits[2])) { $recordId = $bits[2]; } $fieldsToUpdate = array($realName => $value); $debug = "realName=(" . $realName . "), id=(" . $recordId . ")"; // $log = new cs_webdblogger($this->dbObj, "Character"); switch ($prefix) { case Ability::sheetIdPrefix: if (is_numeric($recordId)) { $allAbilities = Ability::get_all_abilities($this->dbObj, true); $obj = new Ability(); if (!is_null($value) && strlen($value) == 0) { $fieldsToUpdate[$realName] = null; } $changesByKey = $obj->update_and_get_changes($this->dbObj, $fieldsToUpdate, $recordId); $this->load(); $abilityName = $allAbilities[$obj->ability_id]; $changesByKey[$name] = $value; if (preg_match('/temp/', $realName)) { //update temporary modifier $changesByKey[$this->create_sheet_id($prefix, $abilityName . '_temporary_modifier')] = $obj->get_temp_modifier(); } elseif (preg_match('/^ability/', $realName) || preg_match('/^score$/', $realName)) { //update (standard) modifier $changesByKey[$this->create_sheet_id($prefix, $abilityName . '_modifier')] = $obj->get_modifier(); //Updating skill info is NEW. $depSkills = Skill::get_all($this->dbObj, $this->characterId, $obj->ability_id); foreach ($depSkills as $k => $v) { $changesByKey[$this->create_sheet_id(Skill::sheetIdPrefix, 'ability_mod', $k)] = $obj->get_modifier(); $changesByKey[$this->create_sheet_id(Skill::sheetIdPrefix, 'skill_mod', $k)] = Skill::calculate_skill_modifier($v); } $saveList = Save::get_all($this->dbObj, $this->characterId, $obj->ability_id); foreach ($saveList as $k => $v) { $changesByKey[$this->create_sheet_id(Save::sheetIdPrefix, 'ability_mod', $k)] = $v['ability_mod']; $changesByKey[$this->create_sheet_id(Save::sheetIdPrefix, 'total', $k)] = $v['total_mod']; } //TODO: update misc fields... switch ($abilityName) { case 'str': $miscUpdates = $this->get_strength_stats(); foreach ($miscUpdates as $k => $v) { $changesByKey[$this->create_sheet_id('generated', $k)] = $v; } break; } } else { throw new InvalidArgumentException(__METHOD__ . ": invalid field (" . $realName . ")"); } } $mData = $this->get_misc_data(); foreach ($mData as $k => $v) { $changesByKey[$k] = $v; } break; case Character::sheetIdPrefix: $char = new Character($this->characterId, $this->ownerUid, $this->dbObj); $char->load($this->dbObj); if ($realName == 'xp_change') { $xpCurrent = $char->xp_current; $fieldsToUpdate = array('xp_current', $xpCurrent + $value); } $changesByKey = $char->update_and_get_changes($this->dbObj, $fieldsToUpdate, $recordId); $this->load(); if (preg_match('/^melee/', $realName)) { $changesByKey[$this->create_sheet_id('main', 'melee_total')] = $this->get_attack_bonus('melee'); } elseif (preg_match('/^ranged/', $realName)) { $changesByKey[$this->create_sheet_id('main', 'ranged_total')] = $this->get_attack_bonus('ranged'); } break; case Save::sheetIdPrefix: $x = new Save(); $changesByKey = $x->update_and_get_changes($this->dbObj, $fieldsToUpdate, $recordId); break; case Skill::sheetIdPrefix: $x = new Skill(); $changesByKey = $x->update_and_get_changes($this->dbObj, $fieldsToUpdate, $recordId); break; case Weapon::sheetIdPrefix: $x = new Weapon(); $changesByKey = $x->update_and_get_changes($this->dbObj, $fieldsToUpdate, $recordId); break; case Armor::sheetIdPrefix: $x = new Armor(); $changesByKey = $x->update_and_get_changes($this->dbObj, $fieldsToUpdate, $recordId); break; case SpecialAbility::sheetIdPrefix: $x = new SpecialAbility(); $changesByKey = $x->update_and_get_changes($this->dbObj, $fieldsToUpdate, $recordId); break; case Gear::sheetIdPrefix: $x = new Gear(); $changesByKey = $x->update_and_get_changes($this->dbObj, $fieldsToUpdate, $recordId); $changesByKey[$x::sheetIdPrefix . '__total_weight__generated'] = csbt_gear::calculate_list_weight($x->get_all($this->dbObj, $this->characterId)); break; default: $details = __METHOD__ . ": invalid prefix (" . $prefix . ") or unable to update field (" . $realName . ")"; // $log->log_by_class($details, "exception in code"); throw new InvalidArgumentException($details); } // $log->log_by_class("Updating characterId=". $this->characterId .", ". $name ."=(". $value .")", "update"); $retval = array('debug' => $debug, 'result' => $result, 'changesbykey' => $changesByKey); return $retval; }
public function test_delete() { $x = new Save(); $x->characterId = $this->id; $y = new Ability(); $y->characterId = $this->id; $y->create_defaults($this->dbObj); $numCreated = $x->create_character_defaults($this->dbObj); $this->assertTrue(is_numeric($numCreated)); $this->assertTrue($numCreated > 0); $allSaves = $x->get_all($this->dbObj, $x->characterId); $numLeft = count($allSaves); foreach ($allSaves as $k => $data) { $this->assertEquals($numLeft, count($x->get_all($this->dbObj, $x->characterId))); $this->assertTrue(is_array($data)); $this->assertTrue(isset($data['character_save_id'])); $x->id = $data['character_save_id']; $this->assertEquals(1, $x->delete($this->dbObj)); $numLeft--; } $this->assertEquals(0, $numLeft); $this->assertEquals(array(), $x->get_all($this->dbObj, $x->characterId)); }