Exemplo n.º 1
0
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;
}
Exemplo n.º 2
0
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&ouml;sung des Stammes", "Ihr Stamm {$tag} wurde soeben aufgel&ouml;st. " . "Sollten Sie Probleme mit dem " . "Stammesmen&uuml; 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;
}
Exemplo n.º 3
0
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;
}