private static function cleanupPlayers() { echo __METHOD__ . PHP_EOL; $players = GDO::table('SR_Player'); $before = $players->countRows(); if (false === ($result = $players->select('sr4pl_id, sr4pl_partyid'))) { echo GWF_HTML::err('ERR_DATABASE', array(__FILE__, __LINE__)); return; } $sr_time = Shadowrun4::getTime(); while (false !== ($row = $players->fetch($result, GDO::ARRAY_N))) { if (false !== ($player = SR_Player::getByID($row[0]))) { if (false === SR_Party::getByID($player->getPartyID())) { if ($player->isHuman()) { printf("WARNING: %s has not party!!\n", $player->getName()); } else { $player->delete(); } } } } $players->free($result); $after = $players->countRows(); printf("I removed %s players from the database and %s are left.\n", $before - $after, $after); }
/** * Get the player for a join request. * @param SR_Player $leader * @param SR_Clan $clan * @param string $pname * @return SR_Player */ public static function getRequest(SR_Player $leader, SR_Clan $clan, $pname) { $ename = GDO::escape($pname); if (false === ($pid = self::table(__CLASS__)->selectVar('sr4cr_pid', "sr4cr_pname='{$ename}'"))) { return false; } if (false === ($player = Shadowrun4::getPlayerByPID($pid))) { if (false === ($player = SR_Player::getByID($pid))) { return false; } } return $player; }
private static function cleanupItemsForPlayer($player_id) { if (false === ($player = SR_Player::getByID($player_id))) { echo GWF_HTML::err('ERR_DATABASE', array(__FILE__, __LINE__)); return false; } $items = GDO::table('SR_Item'); if (false === ($itemIDs = $items->selectColumn('sr4it_id', "sr4it_uid={$player_id}"))) { echo GWF_HTML::err('ERR_DATABASE', array(__FILE__, __LINE__)); return false; } foreach ($itemIDs as $itemID) { if (!self::hasItem($player, $itemID)) { printf("Deleted lonely item %d for player %s.\n", $itemID, $player->getName()); $items->deleteWhere("sr4it_id={$itemID}"); } } }
/** * Get or load a player. * @param int $playerid * @return SR_Player */ public static function getPlayerByPID($playerid) { $playerid = (int) $playerid; # Cached if (true === isset(self::$players[$playerid])) { return self::$players[$playerid]; } # Load? if (false === ($player = SR_Player::getByID($playerid))) { return false; } # Cache (if real player, not NPC) if (true === $player->isHuman()) { self::addPlayer($player); } return $player; }
/** * Get the leader of this clan. * @return SR_Player */ public function getLeader() { $lead_id = $this->getLeaderID(); if (false === ($leader = Shadowrun4::getPlayerByPID($lead_id))) { if (false === ($leader = SR_Player::getByID($lead_id))) { return false; } } return $leader; }