public static function get_all(Database $dbObj, $characterId, $basedOnAbilityId = null)
    {
        $sql = 'SELECT 
					cs.*, a.ability_name, ca.ability_score, 
					ca.temporary_score 
				FROM csbt_character_skill_table AS cs 
					INNER JOIN csbt_ability_table AS a 
						ON (cs.ability_id=a.ability_id) 
					INNER JOIN csbt_character_ability_table AS ca 
						ON (cs.character_id=ca.character_id AND a.ability_id=ca.ability_id) 
				WHERE 
					cs.character_id=:id';
        $params = array('id' => $characterId);
        if (!is_null($basedOnAbilityId) && is_numeric($basedOnAbilityId)) {
            $sql .= ' AND cs.ability_id=:aid ';
            $params['aid'] = $basedOnAbilityId;
        }
        $sql .= ' ORDER BY cs.skill_name';
        try {
            $dbObj->run_query($sql, $params);
            $retval = $dbObj->farray_fieldnames(self::pkeyField);
        } catch (Exception $e) {
            throw new ErrorException(__METHOD__ . ":: failed to retrieve character skills, DETAILS::: " . $e->getMessage());
        }
        return $retval;
    }
 public static function search(Database $dbObj, array $criteria)
 {
     if (is_array($criteria) && count($criteria)) {
         $retval = array();
         $sql = "SELECT c.*, ca.campaign_name FROM " . Character::tableName . " AS c\n\t\t\t\tLEFT OUTER JOIN " . Campaign::tableName . " AS ca \n\t\t\t\tUSING (campaign_id)\n\t\t\t\tWHERE \n\t\t\t\t(LOWER(c.character_name) LIKE :character_name OR :character_name IS NULL)\n\t\t\t\tAND \n\t\t\t\t(LOWER(ca.campaign_name) LIKE :campaign_name OR :campaign_name IS NULL)\t\n\t\t\tAND\n\t\t\t\t(c.campaign_id IS NULL)\n\t\t\t\tORDER BY c.character_name, ca.campaign_name";
         //Note that the campaign_id IS NULL part is arbitrary...
         if (!isset($criteria['character_name'])) {
             $criteria['character_name'] = null;
         } else {
             $criteria['character_name'] .= '%';
         }
         if (!isset($criteria['campaign_name'])) {
             $criteria['campaign_name'] = null;
         } else {
             $criteria['campaign_name'] .= '%';
         }
         //			if(!isset($criteria['campaign']))
         try {
             $numRows = $dbObj->run_query($sql, $criteria);
             if ($numRows > 0) {
                 $retval = $dbObj->farray_fieldnames(Character::pkeyField);
             }
         } catch (Exception $e) {
             cs_debug_backtrace(1);
             throw new exception(__METHOD__ . ": error while running search::: " . $e->getMessage());
         }
     } else {
         throw new exception(__METHOD__ . ": invalid or empty search criteria");
     }
     return $retval;
 }
 public static function get_all_saves(Database $dbObj, $byId = false)
 {
     $sql = "SELECT s.*, a.* FROM csbt_save_table AS s \n\t\t\tINNER JOIN csbt_ability_table AS a ON (s.ability_id=a.ability_id)";
     try {
         $numrows = $dbObj->run_query($sql);
         if ($numrows > 0) {
             if ($byId) {
                 $data = $dbObj->farray_fieldnames('save_id');
             } else {
                 $data = $dbObj->farray_fieldnames('save_name');
             }
         } else {
             throw new LogicException(__METHOD__ . ": no data available");
         }
     } catch (Exception $ex) {
         throw new ErrorException(__METHOD__ . ": failed to retrieve cache, DETAILS::: " . $ex->getMessage());
     }
     return $data;
 }
 public static function get_all(Database $dbObj, $characterId)
 {
     $retval = array();
     $sql = "SELECT * FROM " . self::tableName . " WHERE character_id=:id";
     $params = array('id' => $characterId);
     $rows = $dbObj->run_query($sql, $params);
     if ($rows > 0) {
         $retval = $dbObj->farray_fieldnames(self::pkeyField);
     }
     return $retval;
 }
 public static function get_all(Database $dbObj, $characterId)
 {
     $sql = 'SELECT * FROM ' . self::tableName . ' WHERE character_id=:id ORDER BY ' . self::pkeyField;
     $params = array('id' => $characterId);
     try {
         $dbObj->run_query($sql, $params);
         $retval = $dbObj->farray_fieldnames(self::pkeyField);
     } catch (Exception $e) {
         throw new ErrorException(__METHOD__ . ":: failed to retrieve character weapons, DETAILS::: " . $e->getMessage());
     }
     return $retval;
 }
 public static function get_all(Database $dbObj, $characterId)
 {
     $sql = "SELECT * FROM " . self::tableName . " WHERE character_id=:id";
     $params = array('id' => $characterId);
     try {
         $dbObj->run_query($sql, $params);
         $retval = $dbObj->farray_fieldnames(self::pkeyField);
     } catch (Exception $ex) {
         throw new ErrorException(__METHOD__ . ": error while retrieving character gear, DETAILS::: " . $ex->getMessage());
     }
     return $retval;
 }
 public static function get_all(Database $dbObj, $ownerUid)
 {
     $retval = array();
     $sql = "SELECT * FROM " . self::tableName . " WHERE owner_uid=:id ORDER BY campaign_name";
     $params = array('id' => $ownerUid);
     $rows = $dbObj->run_query($sql, $params);
     if ($rows > 0) {
         $retval = $dbObj->farray_fieldnames(self::pkeyField);
         //
         foreach (array_keys($retval) as $id) {
             $retval[$id]['playerList'] = CampaignCharacterList::get_character_list($dbObj, $id);
         }
     }
     return $retval;
 }
 public static function get_character_list(Database $dbObj, $campaignId)
 {
     $characterList = array();
     try {
         //			$characterList = $this->get_records(array('campaign_id'=>$this->campaignId), 'character_name');
         $sql = "SELECT * FROM " . self::tableName . " WHERE campaign_id=:id ORDER BY character_name";
         $numrows = $dbObj->run_query($sql, array('id' => $campaignId));
         if ($numrows > 0) {
             $characterList = $dbObj->farray_fieldnames(self::pkeyField);
         }
     } catch (exception $e) {
         throw new exception(__METHOD__ . ": failed to retrieve character list::: " . $e->getMessage());
     }
     return $characterList;
 }
 public static function get_all(Database $dbObj, $characterId)
 {
     if (!is_null($characterId) && $characterId > 0) {
         $sql = "SELECT ca.*, a.ability_name, a.display_name " . "FROM csbt_character_ability_table " . "AS ca INNER JOIN csbt_ability_table AS a USING (ability_id) " . "WHERE ca.character_id=:id " . "ORDER BY a.display_order";
         $params = array('id' => $characterId);
         try {
             $dbObj->run_query($sql, $params);
             $data = $dbObj->farray_fieldnames('ability_name');
         } catch (Exception $ex) {
             throw new ErrorException(__METHOD__ . ": failed to retrieve cache, DETAILS::: " . $ex->getMessage());
         }
     } else {
         throw new ErrorException(__METHOD__ . ": characterId required");
     }
     return $data;
 }
 /**
  * 
  * @param bool/optional $onlyInUse	If specified, returns only those with the
  *										given value in the "in_use" column.
  * 
  * @return type
  * @throws ErrorException
  */
 public static function get_all(Database $dbObj, $characterId, $onlyInUse = null)
 {
     $sql = 'SELECT * FROM ' . self::tableName . ' WHERE ';
     //'character_id=:id';
     $params = array('character_id' => $characterId);
     if (!is_null($onlyInUse) && is_bool($onlyInUse)) {
         $params['in_use'] = ToolBox::interpret_bool($onlyInUse, array('f', 't'));
     }
     $addThis = "";
     foreach (array_keys($params) as $n) {
         $addThis = ToolBox::create_list($addThis, $n . '=:' . $n, ' AND ');
     }
     $sql .= $addThis;
     try {
         $dbObj->run_query($sql, $params);
         $retval = $dbObj->farray_fieldnames(self::pkeyField);
     } catch (Exception $e) {
         throw new ErrorException(__METHOD__ . ":: failed to retrieve character weapons, DETAILS::: " . $e->getMessage());
     }
     return $retval;
 }