function tribe_createTribe($tag, $name, $leaderID, $db) { $query = "INSERT INTO Tribe " . "(tag, name, leaderID, created, governmentID) " . "values ('{$tag}', '{$name}', 0, NOW() + 0, 1)"; // ADDED by chris--- cause this is nicer // ------------------------------------------------------------------------------- $leadername = getPlayerFromID($leaderID); $message = $leadername['name'] . " gründet den Clan " . $tag . "."; relation_insertIntoHistory($tag, $message, $db); tribe_sendTribeMessage($tag, TRIBE_MESSAGE_INFO, "Clan gegründet!", $message); // ------------------------------------------------------------------------------- if (!$db->query($query)) { return 0; } if ($leaderID && !tribe_joinTribe($leaderID, $tag, $db)) { return 0; } if ($leaderID && !tribe_makeLeader($leaderID, $tag, $db)) { tribe_leaveTribe($leaderID, $tag, $db); return 0; } return 1; }
function tribe_deleteTribe($tag, $db, $FORCE = 0) { global $relationList; if (!$FORCE && !relation_leaveTribeAllowed($tag, $db)) { return 0; } if (!($tribe = tribe_getTribeByTag($tag, $db))) { return 0; } //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// // get relations if (!($tribeRelations = relation_getRelationsForTribe($tag, $db))) { return 0; } // end others relations foreach ($tribeRelations['other'] as $otherTag => $relation) { $relationType = $relationList[$relation['relationType']]; $oDST = $relationType['onDeletionSwitchTo']; if ($oDST >= 0) { // die raltion umschalten und zielrelation temporär eintragen; sie wird // am ende dieser funktion ohne weiteres umschalten geloescht. Das // temporaere umschalten ist aber noetig, um zum beispiel die // ruhmberechnung im siegfall oder aehnliche effekte, die an // relation_setRelation haengen abzuarbeiten. if (!relation_setRelation($otherTag, $tag, $oDST, 0, $db, 0, $relation['tribe_rankingPoints'], $relation['target_rankingPoints'])) { return 0; } // insert history if ($message = $relationList[$oDST]['historyMessage']) { relation_insertIntoHistory($otherTag, relation_prepareHistoryMessage($tag, $otherTag, $message), $db); } // insert tribe message $relationName = $relationList[$oDST]['name']; tribe_sendTribeMessage($otherTag, TRIBE_MESSAGE_RELATION, "Haltung gegenüber {$tag} geändert", "Die Haltung Ihres Stammes gegenüber dem Stamm {$tag} wurde " . "automatisch auf {$relationName} geändert."); } } //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// if ($tribe['leaderID'] && !tribe_unmakeLeader($tribe['leaderID'], $tag, $db)) { return 0; } if (($members = tribe_getAllMembers($tag, $db)) < 0) { return 0; } foreach ($members as $playerID => $playerData) { if (!tribe_leaveTribe($playerID, $tag, $db)) { return 0; } if (!tribe_setBlockingPeriodPlayerID($playerID, $db)) { return 0; } messages_sendSystemMessage($playerID, 8, "Auflösung des Stammes", "Ihr Stamm {$tag} wurde soeben aufgelöst. " . "Sollten Sie Probleme mit dem " . "Stammesmenü haben, loggen Sie sich " . "bitte neu ein.", $db); Player::addHistoryEntry($db, $playerID, sprintf(_('verläßt den Stamm \'%s\''), $tag)); } $query = "DELETE FROM Tribe " . "WHERE tag LIKE '{$tag}'"; if (!$db->query($query)) { return 0; } $query = "DELETE FROM Relation " . "WHERE tribe LIKE '{$tag}' " . "OR tribe_target LIKE '{$tag}'"; if (!$db->query($query)) { return 0; } $query = "DELETE FROM TribeMessage " . "WHERE tag LIKE '{$tag}'"; if (!$db->query($query)) { return 0; } $query = "DELETE FROM TribeHistory " . "WHERE tribe LIKE '{$tag}'"; if (!$db->query($query)) { return 0; } $query = "DELETE FROM Election " . "WHERE tribe LIKE '{$tag}'"; if (!$db->query($query)) { return 0; } $query = "SELECT rank " . "FROM RankingTribe " . "WHERE tribe LIKE '{$tag}'"; if (!($result = $db->query($query))) { return 0; } if (!($row = $result->nextRow())) { return 0; } $rank = $row['rank']; $query = "DELETE FROM RankingTribe " . "WHERE tribe LIKE '{$tag}'"; if (!$db->query($query)) { return 0; } $query = "UPDATE RankingTribe SET rank = rank - 1 " . "WHERE rank > '{$rank}'"; if (!$db->query($query)) { return 0; } Player::addHistoryEntry($db, $tribe['leaderID'], sprintf(_('löst den Stamm \'%s\' auf'), $tag)); return 1; }
function tribe_deleteTribe($tag, $FORCE = 0) { global $db; if (!$FORCE && !relation_leaveTribeAllowed($tag)) { return 0; } if (!($tribe = tribe_getTribeByTag($tag))) { return 0; } //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// // get relations if (!($tribeRelations = relation_getRelationsForTribe($tag))) { return 0; } // end others relations foreach ($tribeRelations['other'] as $otherTag => $relation) { $relationType = $GLOBALS['relationList'][$relation['relationType']]; $oDST = $relationType['onDeletionSwitchTo']; if ($oDST >= 0) { // die relation umschalten und zielrelation temporaer eintragen; sie wird // am ende dieser funktion ohne weiteres umschalten geloescht. Das // temporaere umschalten ist aber noetig, um zum beispiel die // ruhmberechnung im siegfall oder aehnliche effekte, die an // relation_setRelation haengen abzuarbeiten. if (!relation_setRelation($otherTag, $tag, $oDST, 0, 0, $relation['tribe_rankingPoints'], $relation['target_rankingPoints'])) { return 0; } // insert history if (isset($GLOBALS['relationList'][$oDST]['historyMessage'])) { relation_insertIntoHistory($otherTag, relation_prepareHistoryMessage($tag, $otherTag, $GLOBALS['relationList'][$oDST]['historyMessage'])); } // insert tribe message $relationName = $GLOBALS['relationList'][$oDST]['name']; tribe_sendTribeMessage($otherTag, TRIBE_MESSAGE_RELATION, "Haltung gegenüber {$tag} geändert", "Die Haltung Ihres Stammes gegenüber dem Stamm {$tag} wurde automatisch auf {$relationName} geändert."); } } //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// if ($tribe['leaderID'] && !tribe_unmakeLeader($tribe['leaderID'], $tag)) { return 0; } if (($members = tribe_getAllMembers($tag)) < 0) { return 0; } foreach ($members as $playerID => $playerData) { if (!tribe_leaveTribe($playerID, $tag)) { return 0; } if (!tribe_setBlockingPeriodPlayerID($playerID)) { return 0; } $messagesClass = new Messages(); $messagesClass->sendSystemMessage($playerID, 8, "Auflösung des Stammes", "Ihr Stamm {$tag} wurde soeben aufgelöst. " . "Sollten Sie Probleme mit dem " . "Stammesmenü haben, loggen Sie sich " . "bitte neu ein."); Player::addHistoryEntry($playerID, sprintf(_("verlässt den Stamm '%s'"), $tag)); } $sql = $db->prepare("DELETE FROM " . TRIBE_TABLE . " WHERE tag LIKE :tag"); $sql->bindValue('tag', $tag, PDO::PARAM_STR); if (!$sql->execute()) { return 0; } $sql = $db->prepare("DELETE FROM " . RELATION_TABLE . "\n WHERE tribe LIKE :tag\n OR tribe_target LIKE :tag"); $sql->bindValue('tag', $tag, PDO::PARAM_STR); if (!$sql->execute()) { return 0; } $sql = $db->prepare("DELETE FROM " . TRIBE_MESSAGE_TABLE . " WHERE tag LIKE :tag"); $sql->bindValue('tag', $tag, PDO::PARAM_STR); if (!$sql->execute()) { return 0; } $sql = $db->prepare("DELETE FROM " . TRIBE_HISTORY_TABLE . " WHERE tribe LIKE :tag"); $sql->bindValue('tag', $tag, PDO::PARAM_STR); if (!$sql->execute()) { return 0; } $sql = $db->prepare("DELETE FROM " . ELECTION_TABLE . " WHERE tribe LIKE :tag"); $sql->bindValue('tag', $tag, PDO::PARAM_STR); if (!$sql->execute()) { return 0; } $sql = $db->prepare("SELECT rank FROM " . RANKING_TRIBE_TABLE . " WHERE tribe LIKE :tag"); $sql->bindValue('tag', $tag, PDO::PARAM_STR); if (!$sql->execute()) { return 0; } if (!($row = $sql->fetch())) { return 0; } $rank = $row['rank']; $sql = $db->prepare("DELETE FROM " . RANKING_TRIBE_TABLE . " WHERE tribe LIKE :tag"); $sql->bindValue('tag', $tag, PDO::PARAM_STR); if (!$sql->execute()) { return 0; } $sql = $db->prepare("UPDATE " . RANKING_TRIBE_TABLE . " SET rank = rank - 1 " . "WHERE rank > :rank"); $sql->bindValue('rank', $rank, PDO::PARAM_STR); if (!$sql->execute()) { return 0; } Player::addHistoryEntry($tribe['leaderID'], sprintf(_("löst den Stamm '%s' auf"), $tag)); return 1; }