Esempio n. 1
0
function wonder_processTribeWonder($caveID, $wonderID, $casterTribe, $targetTribe)
{
    global $db;
    // check if wonder exists and is TribeWonder
    if (isset($GLOBALS['wonderTypeList'][$wonderID]) || !$wonder->isTribeWonder) {
        $wonder = $GLOBALS['wonderTypeList'][$wonderID];
    } else {
        return -33;
    }
    // check if tribes exist
    $targetTribeData = tribe_getTribeByTag($targetTribe);
    $casterTribeData = tribe_getTribeByTag($casterTribe);
    if (!$targetTribeData || !$casterTribeData) {
        return -15;
    }
    // check if tribe is valid
    if (!$targetTribeData['valid']) {
        return -34;
    }
    // check if caster tribe ist valid
    if (!$casterTribeData['valid']) {
        return -35;
    }
    $targetTribeRelations = relation_getRelationsForTribe($targetTribe);
    $casterTribeRelations = relation_getRelationsForTribe($casterTribe);
    $wonderPossible = false;
    foreach ($wonder->targetsPossible as $targetsPossible) {
        // check target
        if ($targetsPossible['target'] == 'own' && strtoupper($casterTribe) != strtoupper($targetTribe)) {
            continue;
        }
        if ($targetsPossible['target'] == 'other' && strtoupper($casterTribe) == strtoupper($targetTribe)) {
            continue;
        }
        // check relation
        $check = wonder_checkRelations($targetsPossible['relation'], $targetTribe, $casterTribe, $casterTribeRelations, $targetTribeRelations);
        if ($check == true) {
            $wonderPossible = true;
            break;
        }
    }
    if ($wonderPossible == false) {
        return -37;
    }
    // take wonder Costs from TribeStorage
    $memberNumber = tribe_getNumberOfMembers($casterTribe);
    if (!processProductionCost($wonder, 0, NULL, $memberNumber, true)) {
        return -33;
    }
    // does the wonder fail?
    if ((double) rand() / (double) getRandMax() > $wonder->chance) {
        return 11;
        // wonder did fail
    }
    // schedule the wonder's impacts
    // create a random factor between -0.3 and +0.3
    $delayRandFactor = rand(0, getrandmax()) / getrandmax() * 0.6 - 0.3;
    // now calculate the delayDelta depending on the first impact's delay
    $delayDelta = $wonder->impactList[0]['delay'] * $delayRandFactor;
    // get targets
    $targets = tribe_getTribeWonderTargets($targetTribe);
    if (!$targets || sizeof($targets) == 0) {
        return -33;
    }
    $now = time();
    // loop over targets
    foreach ($targets as $target) {
        // loop over impacts
        foreach ($wonder->impactList as $impactID => $impact) {
            $delay = (int) (($delayDelta + $impact['delay']) * WONDER_TIME_BASE_FACTOR);
            $sql = $db->prepare("INSERT INTO " . EVENT_WONDER_TABLE . " (casterID, sourceID, targetID, \n                       wonderID, impactID, start, end) \n                       VALUES (:playerID, :caveID, :targetID, :wonderID, :impactID, :start, :end)");
            $sql->bindValue('playerID', 0, PDO::PARAM_INT);
            // playerID 0, for not receiving lots of wonder-end-messages
            $sql->bindValue('caveID', $caveID, PDO::PARAM_INT);
            $sql->bindValue('targetID', $target['caveID'], PDO::PARAM_INT);
            $sql->bindValue('wonderID', $wonderID, PDO::PARAM_INT);
            $sql->bindValue('impactID', $impactID, PDO::PARAM_INT);
            $sql->bindValue('start', time_toDatetime($now), PDO::PARAM_STR);
            $sql->bindValue('end', time_toDatetime($now + $delay), PDO::PARAM_STR);
            $sql->execute();
        }
        // end foreach impactList
    }
    // end foreach target
    // send caster messages
    $messageClass = new Messages();
    $sourceMessage = 'Sie haben auf den Stamm "' . $targetTribe . '" ein Stammeswunder ' . $wonder->name . ' erwirkt.';
    $messageClass->sendSystemMessage($_SESSION['player']->playerID, 9, 'Stammeswunder erwirkt auf "' . $targetTribe . '"', $sourceMessage);
    // send target messages
    $targetPlayersArray = array();
    foreach ($targets as $target) {
        if (!isset($targetPlayersArray[$target['playerID']])) {
            $targetPlayersArray[$target['playerID']] = $target;
        }
    }
    foreach ($targetPlayersArray as $target) {
        $targetMessage = 'Der Stamm "' . $casterTribe . '" hat ein Stammeswunder auf deine Höhlen gewirkt';
        $messageClass->sendSystemMessage($target['playerID'], 9, 'Stammeswunder!', $targetMessage);
    }
    return 12;
}
Esempio n. 2
0
function tribeAdmin_getContent($playerID, $tag)
{
    global $config, $params, $db, $no_resource_flag, $relationList, $governmentList, $wonderTypeList;
    $no_resource_flag = 1;
    // check, for security reasons!
    if (!tribe_isLeaderOrJuniorLeader($playerID, $tag, $db)) {
        page_dberror();
    }
    $isLeader = tribe_isLeader($playerID, $tag, $db);
    $isLeader ? $leaderID = $playerID : ($leaderID = tribe_getLeaderID($tag, $db));
    !$isLeader ? $juniorLeaderID = $playerID : ($juniorLeaderID = tribe_getJuniorLeaderID($tag, $db));
    //get Member Data
    if (!($memberData = tribe_getAllMembers($tag, $db))) {
        page_dberror();
    }
    // get government
    if (!($tribeGovernment = government_getGovernmentForTribe($tag, $db))) {
        page_dberror();
    }
    $tribeGovernment['name'] = $governmentList[$tribeGovernment['governmentID']]['name'];
    //seems to be leader, but not in tribe
    if ($isLeader && !is_array($memberData[$leaderID])) {
        tribe_unmakeLeaderJuniorLeader($leaderID, $tag, $db);
    }
    //seems to be juniorleader, but not in tribe
    if (!$isLeader && !is_array($memberData[$leaderID])) {
        tribe_unmakeJuniorLeader($leaderID, $tag, $db);
    }
    // messages
    $messageText = array(-27 => _('Das Stammeswunder wurde gewirkt.'), -26 => _('Das Stammeswunder konnte nicht gewirkt werden.'), -25 => _('Ihr Kriegsanteil ist nicht hoch genug, um den Gegner zur Aufgabe zu zwingen.'), -24 => _('Nur in der Demokratie sind solche Wahlen möglich.'), -23 => _('Sie sind schon Stammesanführer.'), -22 => _('Dieser Spieler ist nicht im Stamm.'), -21 => _('Dies darf nur der Stammesanführer tun.'), -20 => _('Es ist kein gleicher Vorkriegsgegner vorhanden.'), -19 => _('Die Beziehung des anderen Stammes erlauben kein Kriegsbündniss.'), -18 => _('Unsere aktuelle Beziehung erlaubt kein Kriegsbündniss.'), -17 => _('Der Stamm hat noch nicht genug Mitglieder um Beziehungen eingehen zu dürfen'), -16 => _('Die Stammeszugehörigkeit hat sich erst vor kurzem geändert. Warten Sie, bis die Stammeszugehörigkeit geändert werden darf.'), -15 => _('Ihr Stamm befindet sich im Krieg. Sie dürfen derzeit nicht austreten.'), -14 => _('Die Beziehung wurde nicht geändert, weil der ausgewählte Beziehungstyp bereits eingestellt ist.'), -13 => _('Eure Untergebenen weigern sich, diese Beziehung gegenüber einem so großen Stamm einzugehen.'), -12 => _('Eure Untergebenen weigern sich, diese Beziehung gegenüber einem so kleinen Stamm einzugehen.'), -11 => sprintf(_('Die Moral des Gegners ist noch nicht schlecht genug. Sie muss unter %d sinken. Eine weitere Chance besteht, wenn die Mitgliederzahl des gegnerischen Stammes um 30 Prozent gesunken ist. Das Verhältnis Eurer Rankingpunkte zu denen des Gegners muss sich seit Kriegsbeginn verdoppelt haben.'), RELATION_FORCE_MORAL_THRESHOLD), -10 => _('Die zu ändernde Beziehung wurde nicht gefunden!'), -9 => _('Die Regierung konnte nicht geändert werden, weil sie erst vor kurzem geändert wurde.'), -8 => _('Die Regierung konnte aufgrund eines Fehlers nicht aktualisiert werden'), -7 => _('Zu sich selber kann man keine Beziehungen aufnehmen!'), -6 => _('Den Stamm gibt es nicht!'), -5 => _('Von der derzeitigen Beziehung kann nicht direkt auf die ausgewählte Beziehungsart gewechselt werden.'), -4 => _('Die Mindestlaufzeit läuft noch!'), -3 => _('Die Beziehung konnte aufgrund eines Fehlers nicht aktualisiert werden.'), -2 => _('Der Spieler ist ebenfalls Stammesanführer und kann nicht gekickt werden. Er kann nur freiwillig gehen.'), -1 => _('Der Spieler konnte nicht gekickt werden!'), 0 => _('Die Daten wurden erfolgreich aktualisiert.'), 1 => _('Der Spieler wurde erfolgreich gekickt.'), 2 => _('Die Daten konnten gar nicht oder zumindest nicht vollständig aktualisiert werden.'), 3 => _('Die Beziehung wurde umgestellt.'), 4 => _('Die Regierung wurde geändert.'));
    // proccess form data
    if ($params->POST->relationData && $params->POST->forceSurrender) {
        $messageID = relation_forceSurrender($tag, $params->POST->relationData, $db);
    } else {
        if ($params->POST->relationData && !$params->POST->forceSurrender) {
            $messageID = relation_processRelationUpdate($tag, $params->POST->relationData, $db);
        } else {
            if ($params->POST->data) {
                $messageID = tribe_processAdminUpdate($playerID, $tag, $params->POST->data, $db);
            } else {
                if ($params->POST->kick) {
                    if (!$isLeader) {
                        $messageID = -21;
                    } else {
                        $messageID = tribe_processKickMember($params->POST->playerID, $tag, $db);
                    }
                } else {
                    if ($params->POST->governmentData) {
                        if (!$isLeader) {
                            $messageID = -21;
                        } else {
                            $messageID = government_processGovernmentUpdate($tag, $params->POST->governmentData, $db);
                        }
                    } else {
                        if ($params->POST->juniorLeader) {
                            $newleadership = array(0 => $leaderID, 1 => $params->POST->juniorLeader[juniorLeaderID]);
                            if (!$isLeader) {
                                $messageID = -21;
                            } elseif ($newleadership[1] && !is_array($memberData[$newleadership[1]])) {
                                $messageID = -22;
                            } elseif ($newleadership[1] == $newleadership[0]) {
                                $messageID = -23;
                            } elseif ($tribeGovernment['governmentID'] != 2) {
                                $messageID = -24;
                            } elseif (tribe_ChangeLeader($tag, $newleadership, $leaderID, $juniorLeaderID, $db)) {
                                $messageID = 0;
                                //success
                            } else {
                                $messageID = 2;
                                //something went wrong
                            }
                        }
                    }
                }
            }
        }
    }
    // get the tribe data
    if (!($tribeData = tribe_getTribeByTag($tag, $db))) {
        page_dberror();
    }
    $tribeData['description'] = str_replace('<br />', '', $tribeData['description']);
    // get relations
    if (!($tribeRelations = relation_getRelationsForTribe($tag, $db))) {
        page_dberror();
    }
    // get current wars
    $tribeWarTargets = relation_getWarTargetsAndFame($tag, $db);
    $template = tmpl_open($params->SESSION->player->getTemplatePath() . 'tribeAdmin.ihtml');
    // Show a special message
    if (isset($messageID)) {
        tmpl_set($template, '/MESSAGE/message', $messageText[$messageID]);
    }
    // show the profile's data
    tmpl_set($template, 'modus_name', 'modus');
    tmpl_set($template, 'modus_value', TRIBE_ADMIN);
    ////////////// user data //////////////////////
    tmpl_set($template, 'DATA_GROUP/heading', _('Stammesdaten'));
    tmpl_set($template, 'DATA_GROUP/ENTRY_INFO/name', _('Tag'));
    tmpl_set($template, 'DATA_GROUP/ENTRY_INFO/value', $tribeData['tag']);
    tmpl_iterate($template, 'DATA_GROUP/ENTRY_INFO');
    tmpl_set($template, 'DATA_GROUP/ENTRY_INPUT/name', _('Name'));
    tmpl_set($template, 'DATA_GROUP/ENTRY_INPUT/dataarray', 'data');
    tmpl_set($template, 'DATA_GROUP/ENTRY_INPUT/dataentry', 'name');
    tmpl_set($template, 'DATA_GROUP/ENTRY_INPUT/value', $tribeData['name']);
    tmpl_set($template, 'DATA_GROUP/ENTRY_INPUT/size', '20');
    tmpl_set($template, 'DATA_GROUP/ENTRY_INPUT/maxlength', '90');
    tmpl_iterate($template, 'DATA_GROUP/ENTRY_INPUT');
    tmpl_set($template, 'DATA_GROUP/ENTRY_INPUT/name', _('Password'));
    tmpl_set($template, 'DATA_GROUP/ENTRY_INPUT/dataarray', 'data');
    tmpl_set($template, 'DATA_GROUP/ENTRY_INPUT/dataentry', 'password');
    tmpl_set($template, 'DATA_GROUP/ENTRY_INPUT/value', $tribeData['password']);
    tmpl_set($template, 'DATA_GROUP/ENTRY_INPUT/size', '15');
    tmpl_set($template, 'DATA_GROUP/ENTRY_INPUT/maxlength', '15');
    tmpl_set($template, 'DATA_GROUP/ENTRY_MEMO/name', _('Beschreibung'));
    tmpl_set($template, 'DATA_GROUP/ENTRY_MEMO/dataarray', 'data');
    tmpl_set($template, 'DATA_GROUP/ENTRY_MEMO/dataentry', 'description');
    tmpl_set($template, 'DATA_GROUP/ENTRY_MEMO/value', $tribeData['description']);
    tmpl_set($template, 'DATA_GROUP/ENTRY_MEMO/cols', '25');
    tmpl_set($template, 'DATA_GROUP/ENTRY_MEMO/rows', '8');
    ////////////// junioLeader ////////////////////
    if ($isLeader && $tribeGovernment['governmentID'] == 2) {
        tmpl_set($template, 'JUNIORADMIN', array('modus_name' => "modus", 'modus' => TRIBE_ADMIN, 'caption' => _('Wählen'), 'SELECTOR' => array('dataarray' => 'juniorLeader', 'dataentry' => 'juniorLeaderID')));
        foreach ($memberData as $playerID => $playerData) {
            if ($leaderID == $playerID) {
                continue;
            }
            tmpl_iterate($template, 'JUNIORADMIN/SELECTOR/OPTION');
            tmpl_set($template, 'JUNIORADMIN/SELECTOR/OPTION', array("value" => $playerID, 'selected' => $tribeData['juniorLeaderID'] == $playerID ? "selected" : "", 'text' => $playerData['name']));
        }
        tmpl_iterate($template, 'JUNIORADMIN/SELECTOR/OPTION');
        tmpl_set($template, 'JUNIORADMIN/SELECTOR/OPTION', array("value" => 0, 'selected' => $tribeData['juniorLeaderID'] == 0 ? "selected" : "", 'text' => _('keinen Stellvertreter wählen')));
    }
    ////////////// government /////////////////////
    if ($isLeader) {
        if ($tribeGovernment['isChangeable']) {
            tmpl_set($template, 'GOVERNMENT', array('modus_name' => "modus", 'modus' => TRIBE_ADMIN, 'caption' => _('Ändern'), 'SELECTOR' => array('dataarray' => 'governmentData', 'dataentry' => 'governmentID')));
            foreach ($governmentList as $governmentID => $typeData) {
                tmpl_iterate($template, 'GOVERNMENT/SELECTOR/OPTION');
                tmpl_set($template, 'GOVERNMENT/SELECTOR/OPTION', array('value' => $governmentID, 'selected' => $governmentID == $tribeGovernment['governmentID'] ? "selected" : "", 'text' => $typeData['name']));
            }
        } else {
            tmpl_set($template, 'GOVERNMENT_INFO', array('name' => $tribeGovernment['name'], 'duration' => $tribeGovernment['time']));
        }
    }
    ////////////// tribewonder //////////////////////
    /*
    init_Wonders();
      $tribewonderExists = False;
      for ($i = 0; $i < sizeof($wonderTypeList); $i++){
      	 $wonder = $wonderTypeList[$i];
         if ($wonder->groupID<>3) 
         	 continue;
         $tribewonderExists = True;
         tmpl_iterate($template,'TRIBEWONDER/OPTION');	 
         tmpl_set($template, 'TRIBEWONDER/OPTION',
               array('text'     => $wonder->name,
                     'value'     => $i));
      };
      if ($tribewonderExists) {
        tmpl_set($template, 'TRIBEWONDER/caption',_('erwirken'));
        tmpl_set($template, 'TRIBEWONDER/modus_name',"modus");
        tmpl_set($template, 'TRIBEWONDER/modus', TRIBE_ADMIN);
      };
    */
    ////////////// relations //////////////////////
    tmpl_set($template, 'RELATION_NEW', array('modus_name' => "modus", 'modus' => TRIBE_ADMIN, 'dataarray' => "relationData", 'dataentry' => "tag", 'value' => $params->POST->relationData['tag'], 'size' => 8, 'maxlength' => 8, 'caption' => _('Ändern')));
    tmpl_set($template, 'RELATION_NEW/SELECTOR', array('dataarray' => "relationData", 'dataentry' => "relationID"));
    foreach ($relationList as $relationID => $typeData) {
        tmpl_iterate($template, 'RELATION_NEW/SELECTOR/OPTION');
        tmpl_set($template, 'RELATION_NEW/SELECTOR/OPTION', array('value' => $relationID, 'selected' => $relationID == $params->POST->relationData['relationID'] ? "selected" : "", 'text' => $typeData['name']));
    }
    // existing relations towards other clans //////////////////
    foreach ($tribeRelations['own'] as $target => $targetData) {
        if (!$targetData['changeable']) {
            // relation, that couldn't be changed at the moment
            tmpl_iterate($template, 'RELATION_INFO');
            $relation_info = array('tag' => $target, 'relation' => $relationList[$targetData['relationType']]['name'], 'duration' => $targetData['time'], 'their_relation' => $tribeRelations['other'][$target] ? $relationList[$tribeRelations['other'][$target]['relationType']]['name'] : $relationList[0]['name']);
            // war?
            if ($tribeWarTargets[$target]) {
                $relation_info["WAR/fame_own"] = $tribeWarTargets[$target]["fame_own"];
                $relation_info["WAR/fame_target"] = $tribeWarTargets[$target]["fame_target"];
                $relation_info["WAR/percent_actual"] = $tribeWarTargets[$target]["percent_actual"];
            }
            tmpl_set($template, 'RELATION_INFO', $relation_info);
            // check, if it is possible to get or loose fame, and display if true
            /*if ($targetData['attackerReceivesFame'] ||
                  $targetData['defenderReceivesFame'] ||
                  $tribeRelations['other'][$target]['attackerReceivesFame'] ||
                  $tribeRelations['other'][$target]['defenderReceivesFame']) {
                tmpl_set($template, 'RELATION_INFO/FAME',
                         array('tribe_fame'   => $targetData['fame'],
                               'target_fame'  => $tribeRelations['other'][$target]['fame'],
                               'tribe_moral'  => $targetData['moral'],
                               'target_moral' => $tribeRelations['other'][$target]['moral']));
              }*/
            continue;
        } else {
            // relation, that is changeable
            tmpl_iterate($template, 'RELATION');
            $relation = array('modus_name' => "modus", 'modus' => TRIBE_ADMIN, 'dataarray' => "relationData", 'dataentry' => "tag", 'value' => $target, 'target_points' => $targetData['target_rankingPoints'], 'tribe_points' => $targetData['tribe_rankingPoints'], 'their_relation' => $tribeRelations['other'][$target] ? $relationList[$tribeRelations['other'][$target]['relationType']]['name'] : $relationList[0]['name'], 'caption' => _('Ändern'));
            // war?
            if ($tribeWarTargets[$target]) {
                $wartarget = $tribeWarTargets[$target];
                $relation["WAR/fame_own"] = $wartarget["fame_own"];
                $relation["WAR/fame_target"] = $wartarget["fame_target"];
                $relation["WAR/percent_actual"] = $wartarget["percent_actual"];
                if ($wartarget["isForcedSurrenderTheoreticallyPossible"]) {
                    $relation["WAR/FORCEDSURRENDER/percent_estimated"] = $wartarget["percent_estimated"];
                    if ($wartarget["isForcedSurrenderPracticallyPossible"]) {
                        $relation["WAR/FORCEDSURRENDER/class"] = "enough";
                    } else {
                        if ($target["isForcedSurrenderPracticallyPossibleForTarget"]) {
                            $relation["WAR/FORCEDSURRENDER/class"] = "less";
                        } else {
                            $relation["WAR/FORCEDSURRENDER/class"] = "";
                        }
                    }
                }
            }
            tmpl_set($template, 'RELATION', $relation);
            tmpl_set($template, 'RELATION/SELECTOR', array('dataarray' => "relationData", 'dataentry' => "relationID"));
            // check, if it is possible to get or loose fame, and display if true
            /*if ($targetData['attackerReceivesFame'] ||
                  $targetData['defenderReceivesFame'] ||
                  $tribeRelations['other'][$target]['attackerReceivesFame'] ||
                  $tribeRelations['other'][$target]['defenderReceivesFame']) {
                tmpl_set($template, 'RELATION/FAME',
                         array('tribe_fame'   => $targetData['fame'],
                               'target_fame'  => $tribeRelations['other'][$target]['fame'],
                               'tribe_moral'  => $targetData['moral'],
                               'target_moral' => $tribeRelations['other'][$target]['moral']));
              }*/
            foreach ($relationList as $relationType => $typeData) {
                // get relation of target to tr.
                if ($tribeRelations['other'][$tag]) {
                    $relationTypeTowardsTribe = $tribeRelations['other'][$tag]['relationType'];
                }
                // check, if switch to relationType is possible
                if ($relationTypeTowardsTribe != $relationType && $relationType != $targetData['relationType'] && !relation_isPossible($relationType, $targetData['relationType'])) {
                    continue;
                }
                tmpl_iterate($template, 'RELATION/SELECTOR/OPTION');
                tmpl_set($template, 'RELATION/SELECTOR/OPTION', array('value' => $relationType, 'selected' => $relationType == $targetData['relationType'] ? "selected" : "", 'text' => $typeData['name']));
            }
        }
    }
    ////////////// memberliste ////////////////////
    foreach ($memberData as $playerID => $playerData) {
        if ($isLeader) {
            tmpl_iterate($template, 'MEMBERADMIN');
            tmpl_set($template, 'MEMBERADMIN', array("name" => $playerData['name'], "lastAction" => $playerData['lastAction'], "player_link" => "modus=" . PLAYER_DETAIL . "&detailID={$playerID}", "player_kick_link" => "modus=" . TRIBE_ADMIN . "&playerID={$playerID}&kick=1"));
        } else {
            tmpl_iterate($template, 'MEMBERJUNIORADMIN');
            tmpl_set($template, 'MEMBERJUNIORADMIN', array("name" => $playerData['name'], "lastAction" => $playerData['lastAction'], "player_link" => "modus=" . PLAYER_DETAIL . "&detailID={$playerID}"));
        }
    }
    ////////////// delete tribe ////////////////////
    if ($isLeader) {
        tmpl_set($template, 'DELETE/modus_name', 'modus');
        tmpl_set($template, 'DELETE/modus', TRIBE_DELETE);
        tmpl_set($template, 'DELETE/heading', _('Stamm auflösen'));
        tmpl_set($template, 'DELETE/text', _('Den gesamten Stamm auflösen. Alle Mitglieder sind danach stammeslos.'));
        tmpl_set($template, 'DELETE/caption', sprintf(_('%s auflösen'), $tribe));
    }
    return tmpl_parse($template);
}
Esempio n. 3
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&uuml;ber {$tag} ge&auml;ndert", "Die Haltung Ihres Stammes gegen&uuml;ber dem Stamm {$tag}  wurde " . "automatisch auf {$relationName} ge&auml;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;
}
Esempio n. 4
0
function tribeAdmin_getContent($playerID, $tag)
{
    global $config, $params, $db, $no_resource_flag, $relationList, $governmentList;
    $no_resource_flag = 1;
    // check, for sercurity reasons!
    if (!tribe_isLeader($playerID, $tag, $db)) {
        page_dberror();
    }
    // messages
    $messageText = array(-13 => "Die Beziehung wurde nicht ge&auml;ndert, weil der ausgew&auml;hlte " . "Beziehungstyp bereits eingestellt ist.", -12 => "Eure Untergebenen weigern sich, " . "diese Beziehung gegen&uuml;ber einem so kleinen Clan einzugehen.", -11 => "Die Moral des Gegners ist noch nicht schlecht genug. Sie muss unter " . RELATION_FORCE_MORAL_THRESHOLD . " sinken. Eine weitere Chance besteht, " . "wenn die Mitglierzahl des gegnerischen Clans um 30 Prozent gesunken ist.", "Euren Gunsten verschoben. Das Verh&auml;ltnis Eurer Rankingpunkte zu " . "denen des Gegners muss sich seit Kriegsbeginn verdoppelt haben.", -10 => "Die zu &auml;ndernde Beziehung wurde nicht gefunden!", -9 => "Die Regierung konnte nicht ge&auml;ndert werden, weil sie erst " . "vor kurzem ge&auml;ndert wurde.", -8 => "Die Regierung konnte aufgrund eines Fehlers nicht aktualisiert " . "werden", -7 => "Zu sich selber kann man keine Beziehungen aufhehmen!", -6 => "Den Clan gibt es nicht!", -5 => "Von der derzeititgen Beziehung kann nicht dirket auf die " . "ausgew&auml;hlte Beziehungsart gewechselt werden.", -4 => "Die Mindestlaufzeit l&auml;uft noch!", -3 => "Die Beziehung konnte aufgrund eines Fehlers nicht aktualisiert " . "werden.", -2 => "Der Spieler ist ebenfalls Clananf&uuml;hrer und kann nicht " . "gekickt werden. Er kann nur freiwillig gehen.", -1 => "Der Spieler konnte nicht gekickt werden!", 0 => "Die Daten wurden erfolgreich aktualisiert.", 1 => "Der Spieler wurde erfolgreich gekickt.", 2 => "Die Daten konnten gar nicht oder zumindest nicht vollst&auml;ndig " . "aktualisiert werden.", 3 => "Die Beziehung wurde umgestellt.", 4 => "Die Regierung wurde ge&auml;ndert.");
    // proccess form data
    if ($params->POST->forceRelationData) {
        $messageID = relation_processForceRelation($tag, $params->POST->forceRelationData, $db);
    } else {
        if ($params->POST->relationData) {
            $messageID = relation_processRelationUpdate($tag, $params->POST->relationData, $db);
        } else {
            if ($params->POST->data) {
                $messageID = tribe_processAdminUpdate($playerID, $tag, $params->POST->data, $db);
            } else {
                if ($params->POST->kick) {
                    $messageID = tribe_processKickMember($params->POST->playerID, $tag, $db);
                } else {
                    if ($params->POST->governmentData) {
                        $messageID = government_processGovernmentUpdate($tag, $params->POST->governmentData, $db);
                    }
                }
            }
        }
    }
    // get the tribe data
    if (!($tribeData = tribe_getTribeByTag($tag, $db))) {
        page_dberror();
    }
    $tribeData[description] = str_replace("<br />", "", $tribeData[description]);
    if (!($memberData = tribe_getAllMembers($tag, $db))) {
        page_dberror();
    }
    // get government
    if (!($tribeGovernment = government_getGovernmentForTribe($tag, $db))) {
        page_dberror();
    }
    $tribeGovernment[name] = $governmentList[$tribeGovernment[governmentID]][name];
    // get relations
    if (!($tribeRelations = relation_getRelationsForTribe($tag, $db))) {
        page_dberror();
    }
    $template = @tmpl_open("./templates/" . $config->template_paths[$params->SESSION->user['template']] . "/tribeAdmin.ihtml");
    // Show a special message
    if (isset($messageID)) {
        tmpl_set($template, '/MESSAGE/message', $messageText[$messageID]);
    }
    // show the profile's data
    tmpl_set($template, 'modus_name', 'modus');
    tmpl_set($template, 'modus_value', TRIBE_ADMIN);
    ////////////// user data //////////////////////
    tmpl_set($template, 'DATA_GROUP/heading', 'Clandaten');
    tmpl_set($template, 'DATA_GROUP/ENTRY_INFO/name', 'Tag');
    tmpl_set($template, 'DATA_GROUP/ENTRY_INFO/value', $tribeData[tag]);
    tmpl_iterate($template, 'DATA_GROUP/ENTRY_INFO');
    tmpl_set($template, 'DATA_GROUP/ENTRY_INPUT/name', 'Name');
    tmpl_set($template, 'DATA_GROUP/ENTRY_INPUT/dataarray', 'data');
    tmpl_set($template, 'DATA_GROUP/ENTRY_INPUT/dataentry', 'name');
    tmpl_set($template, 'DATA_GROUP/ENTRY_INPUT/value', $tribeData[name]);
    tmpl_set($template, 'DATA_GROUP/ENTRY_INPUT/size', '20');
    tmpl_set($template, 'DATA_GROUP/ENTRY_INPUT/maxlength', '90');
    tmpl_iterate($template, 'DATA_GROUP/ENTRY_INPUT');
    tmpl_set($template, 'DATA_GROUP/ENTRY_INPUT/name', 'Password');
    tmpl_set($template, 'DATA_GROUP/ENTRY_INPUT/dataarray', 'data');
    tmpl_set($template, 'DATA_GROUP/ENTRY_INPUT/dataentry', 'password');
    tmpl_set($template, 'DATA_GROUP/ENTRY_INPUT/value', $tribeData[password]);
    tmpl_set($template, 'DATA_GROUP/ENTRY_INPUT/size', '15');
    tmpl_set($template, 'DATA_GROUP/ENTRY_INPUT/maxlength', '15');
    tmpl_set($template, 'DATA_GROUP/ENTRY_MEMO/name', 'Beschreibung');
    tmpl_set($template, 'DATA_GROUP/ENTRY_MEMO/dataarray', 'data');
    tmpl_set($template, 'DATA_GROUP/ENTRY_MEMO/dataentry', 'description');
    tmpl_set($template, 'DATA_GROUP/ENTRY_MEMO/value', $tribeData[description]);
    tmpl_set($template, 'DATA_GROUP/ENTRY_MEMO/cols', '25');
    tmpl_set($template, 'DATA_GROUP/ENTRY_MEMO/rows', '8');
    ////////////// government /////////////////////
    if ($tribeGovernment[isChangeable]) {
        tmpl_set($template, 'GOVERNMENT', array('modus_name' => "modus", 'modus' => TRIBE_ADMIN, 'caption' => "&Auml;ndern", 'SELECTOR' => array('dataarray' => 'governmentData', 'dataentry' => 'governmentID')));
        foreach ($governmentList as $governmentID => $typeData) {
            tmpl_iterate($template, 'GOVERNMENT/SELECTOR/OPTION');
            tmpl_set($template, 'GOVERNMENT/SELECTOR/OPTION', array('value' => $governmentID, 'selected' => $governmentID == $tribeGovernment[governmentID] ? "selected" : "", 'text' => $typeData[name]));
        }
    } else {
        tmpl_set($template, 'GOVERNMENT_INFO', array('name' => $tribeGovernment[name], 'duration' => $tribeGovernment[time]));
    }
    ////////////// relations //////////////////////
    tmpl_set($template, 'RELATION_NEW', array('modus_name' => "modus", 'modus' => TRIBE_ADMIN, 'dataarray' => "relationData", 'dataentry' => "tag", 'value' => $params->POST->relationData['tag'], 'size' => 8, 'maxlength' => 8, 'caption' => "&Auml;ndern"));
    tmpl_set($template, 'RELATION_NEW/SELECTOR', array('dataarray' => "relationData", 'dataentry' => "relationID"));
    foreach ($relationList as $relationID => $typeData) {
        tmpl_iterate($template, 'RELATION_NEW/SELECTOR/OPTION');
        tmpl_set($template, 'RELATION_NEW/SELECTOR/OPTION', array('value' => $relationID, 'selected' => $relationID == $params->POST->relationData[relationID] ? "selected" : "", 'text' => $typeData[name]));
    }
    // existing relations towards other clans //////////////////
    foreach ($tribeRelations[own] as $target => $targetData) {
        if (!$targetData[changeable]) {
            // relation, that couldn't be changed at the moment
            tmpl_iterate($template, 'RELATION_INFO');
            tmpl_set($template, 'RELATION_INFO', array('tag' => $target, 'relation' => $relationList[$targetData[relationType]][name], 'duration' => $targetData[time], 'their_relation' => $tribeRelations[other][$target] ? $relationList[$tribeRelations[other][$target][relationType]][name] : $relationList[0][name]));
            continue;
        } else {
            // relation, that is changeable
            tmpl_iterate($template, 'RELATION');
            tmpl_set($template, 'RELATION', array('modus_name' => "modus", 'modus' => TRIBE_ADMIN, 'dataarray' => "relationData", 'dataentry' => "tag", 'value' => $target, 'target_points' => $targetData[target_rankingPoints], 'tribe_points' => $targetData[tribe_rankingPoints], 'their_relation' => $tribeRelations[other][$target] ? $relationList[$tribeRelations[other][$target][relationType]][name] : $relationList[0][name], 'caption' => "&Auml;ndern"));
            tmpl_set($template, 'RELATION/SELECTOR', array('dataarray' => "relationData", 'dataentry' => "relationID"));
            // check, if it is possible to get or loose fame, and display if true
            if ($targetData[attackerReceivesFame] || $targetData[defenderReceivesFame] || $tribeRelations[other][$target][attackerReceivesFame] || $tribeRelations[other][$target][defenderReceivesFame]) {
                tmpl_set($template, 'RELATION/FAME', array('tribe_fame' => $targetData[fame], 'target_fame' => $tribeRelations[other][$target][fame], 'tribe_moral' => $targetData[moral], 'target_moral' => $tribeRelations[other][$target][moral]));
            }
            foreach ($relationList as $relationType => $typeData) {
                if ($tribeRelations[other][$tag]) {
                    // get relation of target to tr.
                    $relationTypeTowardsTribe = $tribeRelations[other][$tag][relationType];
                }
                // check, if switch to relationType is possible
                if ($relationTypeTowardsTribe != $relationType && $relationType != $targetData[relationType] && !relation_isPossible($relationType, $targetData[relationType])) {
                    continue;
                }
                tmpl_iterate($template, 'RELATION/SELECTOR/OPTION');
                tmpl_set($template, 'RELATION/SELECTOR/OPTION', array('value' => $relationType, 'selected' => $relationType == $targetData[relationType] ? "selected" : "", 'text' => $typeData[name]));
            }
            if ($targetData[relationType] == RELATION_FORCE_FROM_ID) {
                tmpl_set($template, 'RELATION/FORCE', array('modus_name' => "modus", 'modus' => TRIBE_ADMIN, 'dataarray' => forceRelationData, 'dataentry' => "tag", 'value' => $target, 'caption' => "Kapitulation von {$target} erzwingen"));
            }
        }
    }
    ////////////// memberliste ////////////////////
    foreach ($memberData as $playerID => $playerData) {
        tmpl_iterate($template, 'MEMBER');
        tmpl_set($template, 'MEMBER', array("name" => $playerData['name'], "lastAction" => $playerData['lastAction'], "player_link" => "modus=" . PLAYER_DETAIL . "&detailID={$playerID}", "player_kick_link" => "modus=" . TRIBE_ADMIN . "&playerID={$playerID}&kick=1"));
    }
    ////////////// delete tribe ////////////////////
    tmpl_set($template, 'DELETE/modus_name', 'modus');
    tmpl_set($template, 'DELETE/modus', TRIBE_DELETE);
    tmpl_set($template, 'DELETE/heading', 'Clan aufl&ouml;sen');
    tmpl_set($template, 'DELETE/text', 'Den gesamten Clan aufl&ouml;sen. Alle Mitglieder sind danach Clanlos.');
    tmpl_set($template, 'DELETE/caption', "{$tribe} aufl&ouml;sen");
    return tmpl_parse($template);
}
Esempio n. 5
0
function tribe_getContent($caveID, &$details)
{
    global $template;
    // messages
    $messageText = array(-42 => array('type' => 'error', 'message' => _('Ein Rohstoff wurde erst vor kurzen eingelagert. Bitte warte bis du es erneut versucht.')), -41 => array('type' => 'error', 'message' => _('Beim kicken das Spielers ist ein Fehler aufgetreten.')), -40 => array('type' => 'error', 'message' => _('Der Stamm befindet sich zur Zeit in einem Krieg und es kann kein Spieler gekickt werden.')), -39 => array('type' => 'error', 'message' => _('Der Stammesführer kann nicht entlassen werden.')), -38 => array('type' => 'error', 'message' => _('Der Spieler wurde in dem Stamm nicht gefunden!')), -37 => array('type' => 'error', 'message' => _('Der Zielstamm besitzt nicht die benötigte Vorraussetzung um das Wunder erwirken zu können.')), -36 => array('type' => 'error', 'message' => _('Dieses Wunder wurde erst vor kurzen gewundert. Bitte warte etwas bevor du es erneut wunderst.')), -35 => array('type' => 'error', 'message' => _('Der gegnerische Stamm hat nicht genug Mitglieder um Stammeswunder bekommen zu können!')), -34 => array('type' => 'error', 'message' => _('Ihr Stamm hat nicht genug Mitglieder um Stammeswunder sprechen zu können!')), -33 => array('type' => 'error', 'message' => _('Beim erbitten des Stammeswunders ist ein Problem aufgetreten!')), -32 => array('type' => 'error', 'message' => _('Das Stammeswunder konnte nicht gewirkt werden.')), -31 => array('type' => 'error', 'message' => _('Die Rechte konnten nicht angewandt werden.')), -30 => array('type' => 'error', 'message' => _('Fehler in den Formulardaten!')), -29 => array('type' => 'error', 'message' => _('Die Stimme konnte wegen eines Fehlers nicht abgegeben werden.')), -28 => array('type' => 'error', 'message' => _('Die Regierung konnte nicht geändert werden, weil sie erst vor kurzem geändert wurde.')), -27 => array('type' => 'error', 'message' => _('Die Regierung konnte aufgrund eines Fehlers nicht aktualisiert werden')), -26 => array('type' => 'error', 'message' => _('Ihr Kriegsanteil ist nicht hoch genug, um den Gegner zur Aufgabe zu zwingen.')), -25 => array('type' => 'error', 'message' => _('Eure Untergebenen weigern sich, diese Beziehung gegenüber einem so großen Stamm einzugehen.')), -24 => array('type' => 'error', 'message' => _('Eure Untergebenen weigern sich, diese Beziehung gegenüber einem so kleinen Stamm einzugehen.')), -23 => array('type' => 'error', 'message' => _('Ihr habt mit dem anderen Stamm keinen gleichen Kriegsgegner.')), -22 => array('type' => 'error', 'message' => _('Die Beziehung des anderen Stammes erlauben kein Kriegsbündniss.')), -21 => array('type' => 'error', 'message' => _('Unsere aktuelle Beziehung erlaubt kein Kriegsbündniss.')), -20 => array('type' => 'error', 'message' => _('Von der derzeitigen Beziehung kann nicht direkt auf die ausgewählte Beziehungsart gewechselt werden.')), -19 => array('type' => 'error', 'message' => _('Die Mindestlaufzeit von der derzeitigen Beziehung läuft noch!')), -18 => array('type' => 'error', 'message' => _('Die Beziehung wurde nicht geändert, weil der ausgewählte Beziehungstyp bereits eingestellt ist.')), -17 => array('type' => 'error', 'message' => _('Die Beziehung konnte aufgrund eines Fehlers nicht aktualisiert werden.')), -16 => array('type' => 'error', 'message' => _('Der Stamm hat noch nicht genug Mitglieder um Beziehungen eingehen zu dürfen')), -15 => array('type' => 'error', 'message' => _('Den Stamm gibt es nicht!')), -14 => array('type' => 'error', 'message' => _('Zu sich selber kann man keine Beziehungen aufnehmen!')), -13 => array('type' => 'error', 'message' => _('Ungültiges Bild oder URL beim Avatar! Wird zurückgesetzt!')), -12 => array('type' => 'error', 'message' => _('Ungültiges Passwort! (Mind. 6 Zeichen, ohne Sonderzeichen)')), -11 => array('type' => 'error', 'message' => _('Fehler beim Eintragen ins Stammeslager!')), -10 => array('type' => 'error', 'message' => _('Nicht genug Rohstoffe vorhanden!')), -9 => array('type' => 'error', 'message' => _('Eine Rohstoff hat den maximalen Einzahlungswert überschritten!')), -8 => array('type' => 'info', 'message' => _('Bitte die gewünscht Menge an Rohstoffen die eingezahlt werden sollen angeben.')), -7 => array('type' => 'error', 'message' => _('Die Nachricht konnte nicht verschickt werden.')), -6 => array('type' => 'error', 'message' => _('Du mußt eine Nachricht schreiben um sie versenden zu können.')), -5 => array('type' => 'error', 'message' => _('Sie konnten nicht austreten. Vermutlich gehören Sie gar keinem Stamm an.')), -4 => array('type' => 'error', 'message' => _('Sie sind der Stammesanführer und konnten nicht entlassen werden.')), -3 => array('type' => 'error', 'message' => _('Die Stammeszugehörigkeit hat sich erst vor kurzem geändert. Warten Sie, bis die Stammeszugehörigkeit geändert werden darf.')), -2 => array('type' => 'error', 'message' => _('Ihr Stamm befindet sich im Krieg. Sie dürfen derzeit nicht austreten.')), -1 => array('type' => 'error', 'message' => _('Du hast keine Berechtigung dies zu tun.')), 1 => array('type' => 'success', 'message' => _('Du hast den Stamm verlassen.')), 2 => array('type' => 'success', 'message' => _('Du hast den Stamm erfolgreich verlassen.<br />Da du das letzte Mitglied warst, wurde der Stamm aufgelöst.')), 3 => array('type' => 'success', 'message' => _('Die Nachricht wurde Erfolgreich verschickt.')), 4 => array('type' => 'success', 'message' => _('Deine Rohstoffe wurden Erfolgreich ins Stammeslager eingezahlt!')), 5 => array('type' => 'success', 'message' => _('Die Daten wurden erfolgreich aktualisiert.')), 6 => array('type' => 'error', 'message' => _('Die Daten konnten gar nicht oder zumindest nicht vollständig aktualisiert werden.')), 7 => array('type' => 'success', 'message' => _('Die Beziehung zu dem anderen Stamm wurde erfolgreich geändert.')), 8 => array('type' => 'success', 'message' => _('Die Regierung des Stammes wurde erfolgreich geändert.')), 9 => array('type' => 'success', 'message' => _('Die Stimme wurde erfolgreich gezählt.')), 10 => array('type' => 'success', 'message' => _('Der Spieler hat seine Rechte erfolgreich erhalten.')), 11 => array('type' => 'info', 'message' => _('Die Götter haben Ihr Flehen nicht erhört! Die eingesetzten Opfergaben sind natürlich dennoch verloren. Mehr Glück beim nächsten Mal!')), 12 => array('type' => 'success', 'message' => _('Das Erflehen des Wunders scheint Erfolg zu haben.')), 13 => array('type' => 'success', 'message' => _('Der Spieler wurde erfolgreich gekickt.')));
    if (!$_SESSION['player']->tribe) {
        tribe_getContentNoTribe($caveID, $details);
        return;
    }
    $tribeTag = $_SESSION['player']->tribe;
    $tribeData = tribe_getTribeByTag($tribeTag);
    if ($tribeData == null) {
        $template->throwError('Der Stamm konnte nicht geladen werden.');
        return;
    }
    $tribeMembers = tribe_getAllMembers($tribeTag);
    // open template
    $template->setFile('tribeMember.tmpl');
    $template->setShowRresource(true);
    // init auth
    $auth = new auth();
    $userAuth = $auth->getAllTypePermission('tribe', $_SESSION['player']->auth['tribe']);
    $userAuth['isLeader'] = $tribeData['leaderID'] == $_SESSION['player']->playerID ? true : false;
    // process form data
    $messageID = 0;
    $tribeAction = Request::getVar('action', 0);
    switch ($tribeAction) {
        /****************************************************************************************************
        *
        * Spielerrechte Ändern
        *
        ****************************************************************************************************/
        case TRIBE_ACTION_AUTH:
            if (!$userAuth['isLeader']) {
                $messageID = -1;
                break;
            }
            if (!Request::isPost('player_id', true)) {
                $messageID = -30;
                break;
            }
            $authID = 0;
            foreach ($auth->perm['tribe'] as $type => $data) {
                $authID = $authID | Request::getVar($type, 0);
            }
            if ($auth->setPermission('tribe', $authID, Request::getVar('player_id', 0))) {
                $messageID = 10;
            } else {
                $messageID = -31;
            }
            $tribeMembers = tribe_getAllMembers($tribeTag);
            break;
            /****************************************************************************************************
            *
            * Auswahl des Anführers
            *
            ****************************************************************************************************/
        /****************************************************************************************************
        *
        * Auswahl des Anführers
        *
        ****************************************************************************************************/
        case TRIBE_ACTION_CHOOSE_LEADER:
            $voteID = Request::getVar('chooseLeaderID', 0);
            $messageID = leaderChoose_processChoiceUpdate($voteID, $_SESSION['player']->playerID, $tribeTag);
            break;
            /****************************************************************************************************
            *
            * Ressie Spende an den Stamm
            *
            ****************************************************************************************************/
        /****************************************************************************************************
        *
        * Ressie Spende an den Stamm
        *
        ****************************************************************************************************/
        case TRIBE_ACTION_DONATE:
            $value = Request::getVar('value', array('' => ''));
            $messageID = tribe_donateResources($value, $caveID, $details);
            $tribeData = tribe_getTribeByTag($tribeTag);
            break;
            /****************************************************************************************************
            *
            * Regierungstyp ändern
            *
            ****************************************************************************************************/
        /****************************************************************************************************
        *
        * Regierungstyp ändern
        *
        ****************************************************************************************************/
        case TRIBE_ACTION_GOVERMENT:
            if (!$userAuth['isLeader']) {
                $messageID = -1;
                break;
            }
            $governmentData = Request::getVar('governmentData', array('' => ''));
            $messageID = government_processGovernmentUpdate($tribeTag, $governmentData);
            break;
            /****************************************************************************************************
            *
            * bye bye Spieler
            *
            ****************************************************************************************************/
        /****************************************************************************************************
        *
        * bye bye Spieler
        *
        ****************************************************************************************************/
        case TRIBE_ACTION_KICK:
            if (!$userAuth['kick_member'] && !$userAuth['isLeader']) {
                $messageID = -1;
                break;
            }
            $playerID = Request::getVar('playerID', 0);
            $messageID = tribe_processKickMember($playerID, $tribeTag);
            $tribeMembers = tribe_getAllMembers($tribeTag);
            break;
            /****************************************************************************************************
            *
            * Bye Bye Stamm :(
            *
            ****************************************************************************************************/
        /****************************************************************************************************
        *
        * Bye Bye Stamm :(
        *
        ****************************************************************************************************/
        case TRIBE_ACTION_LEAVE:
            if (Request::isPost('cancelOrderConfirm')) {
                $messageID = tribe_processLeave($_SESSION['player']->playerID, $tribeTag);
                if ($messageID > 0) {
                    page_refreshUserData();
                    $template->addVar('status_msg', $messageText[$messageID]);
                    tribe_getContentNoTribe($caveID, $details);
                    return;
                }
            } else {
                $template->addVars(array('confirm_box' => true, 'confirm_action' => TRIBE_ACTION_LEAVE, 'confirm_id' => false, 'confirm_mode' => TRIBE, 'confirm_msg' => sprintf(_('Möchtest du den Stamm <span class="bold">%s</span> wirklich verlassen?'), $tribeTag)));
            }
            break;
            /****************************************************************************************************
            *
            * paar Spieler informieren über irgendwas
            *
            ****************************************************************************************************/
        /****************************************************************************************************
        *
        * paar Spieler informieren über irgendwas
        *
        ****************************************************************************************************/
        case TRIBE_ACTION_MESSAGE:
            if (!$userAuth['msg_tribe'] && !$userAuth['msg_public'] && !$userAuth['isLeader']) {
                $messageID = -1;
                break;
            }
            if (!Request::isPost('messageText', true)) {
                $messageID = -6;
                break;
            }
            if (Request::isPost('ingame') && ($userAuth['msg_public'] || $userAuth['isLeader'])) {
                $messageID = tribe_processSendTribeIngameMessage($_SESSION['player']->playerID, $tribeTag, Request::getVar('messageText', '', true));
            } else {
                if ($userAuth['msg_tribe'] || $userAuth['isLeader']) {
                    $messageID = tribe_processSendTribeMessage($_SESSION['player']->playerID, $tribeTag, Request::getVar('messageText', '', true));
                } else {
                    $messageID = -1;
                }
            }
            break;
            /****************************************************************************************************
            *
            * Krieg? Niederlage? Verbünden? Aktualisieren der Beziehung
            *
            ****************************************************************************************************/
        /****************************************************************************************************
        *
        * Krieg? Niederlage? Verbünden? Aktualisieren der Beziehung
        *
        ****************************************************************************************************/
        case TRIBE_ACTION_RELATION:
            if (!$userAuth['change_relation'] && !$userAuth['isLeader']) {
                $messageID = -1;
                break;
            }
            $relationData = Request::getVar('relationData', array('' => ''));
            if (Request::isPost('forceSurrender')) {
                $messageID = relation_forceSurrender($tribeTag, $relationData);
            } else {
                $messageID = relation_processRelationUpdate($tribeTag, $relationData);
            }
            break;
            /****************************************************************************************************
            *
            * Stammesinfos aktualisieren
            *
            ****************************************************************************************************/
        /****************************************************************************************************
        *
        * Stammesinfos aktualisieren
        *
        ****************************************************************************************************/
        case TRIBE_ACTION_UPDATE:
            if (!$userAuth['change_settings'] && !$userAuth['isLeader']) {
                $messageID = -1;
                break;
            }
            $password = Request::getVar('tribe_password', '');
            $postData = array('name' => Request::getVar('tribe_name', '', true), 'password' => !empty($password) ? $password : $tribeData['password'], 'avatar' => Request::getVar('tribe_avatar', ''), 'description' => Request::getVar('tribe_description', '', true));
            $messageID = tribe_processAdminUpdate($tribeTag, $postData);
            $tribeData = tribe_getTribeByTag($tribeTag);
            break;
            /****************************************************************************************************
            *
            * Stammeswunder?
            *
            ****************************************************************************************************/
        /****************************************************************************************************
        *
        * Stammeswunder?
        *
        ****************************************************************************************************/
        case TRIBE_ACTION_WONDER:
            if (!$userAuth['wonder'] && !$userAuth['isLeader']) {
                $messageID = -1;
                break;
            }
            $wonderID = Request::getVar('wonderID', -1);
            $tribeName = Request::getVar('tribeName', '');
            if ($wonderID == -1) {
                $messageID = -32;
                break;
            }
            if (empty($tribeName)) {
                $messageID = -15;
                break;
            }
            if (isset($tribeData['wonderLocked'][$wonderID]) && $tribeData['wonderLocked'][$wonderID] > time()) {
                $messageID = -36;
                break;
            }
            $messageID = wonder_processTribeWonder($caveID, $wonderID, $tribeTag, $tribeName);
            if ($messageID > 0) {
                wonder_updateTribeLocked($tribeTag, $wonderID, $tribeData['wonderLocked']);
            }
            if ($messageID == 11 || $messageID == 12) {
                $success = $messageID == 12 ? 1 : 2;
                wonder_addStatistic($wonderID, $success);
            }
            $tribeData = tribe_getTribeByTag($tribeTag);
            break;
    }
    /****************************************************************************************************
     *
     * Auswahl der Regierungsformen
     *
     ****************************************************************************************************/
    $tribeGovernment = government_getGovernmentForTribe($tribeTag);
    if (empty($tribeGovernment)) {
        $template->throwError('Fehler beim Auslesen der Regierungsform.');
        return;
    }
    $tribeGovernment['name'] = $GLOBALS['governmentList'][$tribeGovernment['governmentID']]['name'];
    if ($userAuth['isLeader'] && $tribeGovernment['isChangeable']) {
        $GovernmentSelect = array();
        foreach ($GLOBALS['governmentList'] as $governmentID => $typeData) {
            $GovernmentSelect[] = array('value' => $governmentID, 'selected' => $governmentID == $tribeGovernment['governmentID'] ? 'selected="selected"' : '', 'name' => $typeData['name']);
        }
        $template->addVar('government_select', $GovernmentSelect);
    } else {
        $template->addVar('government_data', array('name' => $tribeGovernment['name'], 'duration' => $tribeGovernment['time']));
    }
    if ($tribeGovernment['governmentID'] == 2) {
        $choice = leaderChoose_getVoteOf($_SESSION['player']->playerID);
        $votes = leaderChoose_getElectionResultsForTribe($tribeTag);
        $possibleChoices = $tribeMembers;
        $possibleChoices[0] = array('name' => _('Keiner'), 'playerID' => 0);
        foreach ($possibleChoices as $key => $value) {
            if ($key == $choice) {
                $possibleChoices[$key]['selected'] = 'selected="selected"';
            }
        }
        ksort($possibleChoices);
        $template->addVars(array('goverment_votes_list' => $votes, 'goverment_choice_list' => $possibleChoices, 'goverment_choice_name' => $GLOBALS['leaderDeterminationList'][$tribeGovernment['governmentID']]['name'], 'goverment_choice_description' => $GLOBALS['leaderDeterminationList'][$tribeGovernment['governmentID']]['description']));
    } else {
        $template->addVars(array('choose' => false, 'goverment_choice_message' => _('Ihr habt keinen Einfluss auf die Bestimmung des Stammesanführers.'), 'goverment_choice_name' => $GLOBALS['leaderDeterminationList'][$tribeGovernment['governmentID']]['name'], 'goverment_choice_description' => $GLOBALS['leaderDeterminationList'][$tribeGovernment['governmentID']]['description']));
    }
    /****************************************************************************************************
     *
     * Parsen für die Mitgliederliste
     *
     ****************************************************************************************************/
    $tribeMembersAll = tribe_getPlayerList($tribeTag, true, true);
    /****************************************************************************************************
     *
     * Auslesen der Stammesnachrichten
     *
     ****************************************************************************************************/
    $messagesClass = new Messages();
    $messageAry = array();
    $messages = tribe_getTribeMessages($tribeTag);
    if (sizeof($messages)) {
        foreach ($messages as $msgID => $messageData) {
            $messageAry[] = array('time' => $messageData['date'], 'subject' => $messageData['messageSubject'], 'message' => $messagesClass->p($messageData['messageText']));
        }
        $template->addVar('tribe_messages', $messageAry);
    }
    /****************************************************************************************************
     *
     * Auslesen und Anzeigen der Beziehungen
     *
     ****************************************************************************************************/
    $relationsAll = relation_getRelationsForTribe($tribeTag);
    $relationsWar = relation_getWarTargetsAndFame($tribeTag);
    // Allgemein -> Allgemeines
    // Regierung -> Beziehungen
    $relations = $relationAlly = $relations_info = array();
    foreach ($relationsAll['own'] as $target => $targetData) {
        if (in_array($targetData['relationType'], Config::$tribeRelationAlly)) {
            $relationAlly[] = $targetData;
        }
        if (!$targetData['changeable']) {
            $relations_info[$target] = array('tag' => $target, 'relation' => $GLOBALS['relationList'][$targetData['relationType']]['name'], 'duration' => $targetData['time'], 'their_relation' => isset($relationsAll['other'][$target]) ? $GLOBALS['relationList'][$relationsAll['other'][$target]['relationType']]['name'] : $GLOBALS['relationList'][0]['name']);
            // war?
            if (isset($relationsWar[$target])) {
                $relations_info[$target]['war'] = true;
                $relations_info[$target]['fame_own'] = $relationsWar[$target]['fame_own'];
                $relations_info[$target]['fame_target'] = $relationsWar[$target]['fame_target'];
                $relations_info[$target]['percent_actual'] = $relationsWar[$target]['percent_actual'];
            }
        } else {
            $relations[$target] = array('tag' => $target, 'target_points' => $targetData['target_rankingPoints'], 'tribe_points' => $targetData['tribe_rankingPoints'], 'their_relation' => isset($relationsAll['other'][$target]) ? $GLOBALS['relationList'][$relationsAll['other'][$target]['relationType']]['name'] : $GLOBALS['relationList'][0]['name'], 'relation_type' => $targetData['relationType']);
            if (isset($relationsWar[$target])) {
                $relations[$target]['war'] = true;
                $relations[$target]['fame_own'] = $relationsWar[$target]['fame_own'];
                $relations[$target]['fame_target'] = $relationsWar[$target]['fame_target'];
                $relations[$target]['percent_actual'] = $relationsWar[$target]['percent_actual'];
                if ($relationsWar[$target]['isForcedSurrenderTheoreticallyPossible']) {
                    $relations[$target]['isForcePossible'] = true;
                    $relations[$target]['percent_estimated'] = $relationsWar[$target]['percent_estimated'];
                }
            }
        }
    }
    foreach ($relationsAll['other'] as $target => $targetData) {
        if (isset($relationsAll['own'][$target])) {
            continue;
        }
        $relations[$target] = array('tag' => $target, 'their_relation' => $GLOBALS['relationList'][$relationsAll['other'][$target]['relationType']]['name'], 'duration' => $targetData['time'], 'relation_type' => 0);
    }
    /****************************************************************************************************
     *
     * Stammeslager
     *
     ****************************************************************************************************/
    $tribeStorageValues = $tribeStorage = array();
    $dontePossible = false;
    foreach ($GLOBALS['resourceTypeList'] as $resourceID => $resource) {
        if ($resource->maxTribeDonation == 0) {
            continue;
        }
        $tribeStorage[$resource->dbFieldName] = $tribeData[$resource->dbFieldName];
        $tribeStorageValues[$resource->dbFieldName]['resourceID'] = $resource->resourceID;
        $tribeStorageValues[$resource->dbFieldName]['name'] = $resource->name;
        $tribeStorageValues[$resource->dbFieldName]['value'] = $tribeData[$resource->dbFieldName];
        $tribeStorageValues[$resource->dbFieldName]['dbFieldName'] = $resource->dbFieldName;
        $tribeStorageValues[$resource->dbFieldName]['maxTribeDonation'] = $resource->maxTribeDonation;
        if (!isset($_SESSION['player']->donateLocked['tribe'][$resource->dbFieldName]) || empty($_SESSION['player']->donateLocked['tribe'][$resource->dbFieldName])) {
            $tribeStorageValues[$resource->dbFieldName]['lastDonate'] = '';
            $tribeStorageValues[$resource->dbFieldName]['donatePossible'] = true;
            $dontePossible = true;
        } else {
            $tribeStorageValues[$resource->dbFieldName]['lastDonate'] = date("d.m. H:i:s", $_SESSION['player']->donateLocked['tribe'][$resource->dbFieldName]);
            if ($_SESSION['player']->donateLocked['tribe'][$resource->dbFieldName] < time()) {
                $tribeStorageValues[$resource->dbFieldName]['donatePossible'] = true;
                $dontePossible = true;
            } else {
                $tribeStorageValues[$resource->dbFieldName]['donatePossible'] = false;
            }
        }
    }
    $template->addVars(array('tribeStorageValues' => $tribeStorageValues, 'donationInterval' => TRIBE_STORAGE_DONATION_INTERVAL, 'showTribeStorageDonations' => $dontePossible));
    /****************************************************************************************************
     *
     * Einzahlungen
     *
     ****************************************************************************************************/
    $donations = tribe_getTribeStorageDonations($tribeData['tag']);
    $template->addVar('donations', $donations);
    /****************************************************************************************************
     *
     * Stammeswunder
     *
     ****************************************************************************************************/
    $wonders = array();
    $memberCount = count($tribeMembers);
    foreach ($GLOBALS['wonderTypeList'] as $wonder) {
        // exclude nonTribeWonders
        if (!$wonder->isTribeWonder || $wonder->nodocumentation) {
            continue;
        }
        // multiply costs with number of tribe members
        foreach ($wonder->resourceProductionCost as $prodID => $prod) {
            $wonder->resourceProductionCost[$prodID] = $prod * $memberCount;
        }
        foreach ($wonder->unitProductionCost as $prodID => $prod) {
            $wonder->unitProductionCost[$prodID] = $prod * $memberCount;
        }
        foreach ($wonder->buildingProductionCost as $prodID => $prod) {
            $wonder->buildingProductionCost[$prodID] = $prod * $memberCount;
        }
        $wonders[$wonder->wonderID] = array('dbFieldName' => $wonder->wonderID, 'name' => $wonder->name, 'wonder_id' => $wonder->wonderID, 'description' => $wonder->description);
        $wonders[$wonder->wonderID] = array_merge($wonders[$wonder->wonderID], parseCost($wonder, $tribeStorage));
        // show the building link ?!
        if (isset($tribeData['wonderLocked'][$wonder->wonderID]) && $tribeData['wonderLocked'][$wonder->wonderID] > time()) {
            $wonders[$wonder->wonderID]['no_build_msg'] = sprintf(_('Das Wunder ist noch gesperrt bis: %s'), date("d. m. H:i:s", $tribeData['wonderLocked'][$wonder->wonderID]));
        } else {
            if ($wonders[$wonder->wonderID]['notenough']) {
                $wonders[$wonder->wonderID]['no_build_msg'] = _('Zu wenig Rohstoffe');
            } else {
                $wonders[$wonder->wonderID]['build_link'] = true;
            }
        }
    }
    /****************************************************************************************************
     *
     * Übergabe ans Template
     *
     ****************************************************************************************************/
    if ($messageID && isset($messageText[$messageID])) {
        $template->addVar('status_msg', $messageText[$messageID]);
    }
    $template->addVars(array('tribe_name' => $tribeData['name'], 'tribe_tag' => $tribeData['tag'], 'tribe_avatar' => $tribeData['avatar'], 'tribe_description' => $tribeData['description'], 'tribe_leader_name' => $tribeData['leaderName'], 'tribe_leader_id' => $tribeData['leaderID'], 'tribe_members' => $tribeMembers, 'tribe_members_all' => $tribeMembersAll, 'tribe_members_count' => strval($memberCount), 'government_name' => $GLOBALS['governmentList'][$tribeData['governmentID']]['name'], 'is_auth' => $userAuth, 'relations' => isset($relations) ? $relations : array(), 'relations_ally' => $relationAlly, 'relations_list' => $GLOBALS['relationList'], 'relations_info' => $relations_info, 'relations_war' => !empty($relationsWar) ? true : false, 'tribe_action_auth' => TRIBE_ACTION_AUTH, 'tribe_action_choose_leader' => TRIBE_ACTION_CHOOSE_LEADER, 'tribe_action_donate' => TRIBE_ACTION_DONATE, 'tribe_action_goverment' => TRIBE_ACTION_GOVERMENT, 'tribe_action_leave' => TRIBE_ACTION_LEAVE, 'tribe_action_message' => TRIBE_ACTION_MESSAGE, 'tribe_action_relation' => TRIBE_ACTION_RELATION, 'tribe_action_update' => TRIBE_ACTION_UPDATE, 'tribe_action_wonder' => TRIBE_ACTION_WONDER, 'tribe_action_kick' => TRIBE_ACTION_KICK, 'wonders' => $wonders));
}
Esempio n. 6
0
function tribe_getContent($playerID, $tribe)
{
    global $config, $params, $db, $no_resource_flag, $governmentList;
    $no_resource_flag = 1;
    // messages
    $messageText = array(-12 => _('Der Stamm befindet sich gerade im Krieg und darf daher im Moment keine neuen Mitglieder aufnehmen.'), -11 => _('Die Stammeszugehörigkeit hat sich erst vor kurzem geändert. Warten Sie, bis die Stammeszugehörigkeit geändert werden darf.'), -10 => _('Ihr Stamm befindet sich im Krieg. Sie dürfen derzeit nicht austreten.'), -9 => _('Die Nachricht konnte nicht eingetragen werden.'), -8 => _('Sie sind der Stammesanführer und konnten nicht entfernt werden.'), -7 => _('Das Passwort konnte nicht gesetzt werden!'), -6 => _('Der Stamm konnte nicht angelegt werden.'), -5 => _('Es gibt schon einen Stamm mit diesem Kürzel;'), -4 => _('Sie konnten nicht austreten. Vermutlich gehören Sie gar keinem Stamm an.'), -3 => _('Sie konnten dem Stamm nicht beitreten. Vermutlich sind Sie schon bei einem anderen Stamm Mitglied.'), -2 => _('Passwort und Stammeskürzel stimmen nicht überein.'), -1 => _('Bei der Aktion ist ein unerwarteter Datenbankfehler aufgetreten!'), 01 => _('Sie sind dem Stamm beigetreten.'), 02 => _('Sie haben den Stamm verlassen.'), 03 => _('Der Stamm wurde erfolgreich angelegt.'), 04 => _('Sie waren das letzte Mitglied, der Stamm wurde aufgelöst'), 05 => _('Die Nachricht wurde eingetragen'), 10 => _('Dieser Stammesname ist nicht erlaubt!'));
    // process form data
    if ($params->POST->tribeAction) {
        switch ($params->POST->tribeAction) {
            case TRIBE_ACTION_JOIN:
                if (tribe_validatePassword($params->POST->password) && tribe_validateTag($params->POST->tag)) {
                    $messageID = tribe_processJoin($playerID, $params->POST->tag, $params->POST->password, $db);
                }
                break;
            case TRIBE_ACTION_CREATE:
                if (tribe_validatePassword($params->POST->password) && tribe_validateTag($params->POST->tag)) {
                    $messageID = tribe_processCreate($playerID, $params->POST->tag, $params->POST->password, $db, $params->POST->restore_rank == 'yes');
                }
                break;
            case TRIBE_ACTION_LEAVE:
                $messageID = tribe_processLeave($playerID, $tribe, $db);
                break;
            case TRIBE_ACTION_MESSAGE:
                if ($params->POST->messageText && $params->POST->ingame) {
                    $messageID = tribe_processSendTribeIngameMessage($playerID, $tribe, $params->POST->messageText, $db);
                } else {
                    if ($params->POST->messageText && !$params->POST->ingame) {
                        $messageID = tribe_processSendTribeMessage($playerID, $tribe, $params->POST->messageText, $db);
                    }
                }
                break;
        }
        if ($params->POST->tribeAction == TRIBE_ACTION_JOIN || $params->POST->tribeAction == TRIBE_ACTION_LEAVE || $params->POST->tribeAction == TRIBE_ACTION_CREATE) {
            // the tribe might have changed
            page_refreshUserData();
            $tribe = $params->SESSION->player->tribe;
        }
    }
    // ----------------------------------------------------------------------------
    // ------- SECTION FOR PLAYERS WITHOUT MEMBERSHIP -----------------------------
    if (!$tribe) {
        // not a tribe member
        $template = tmpl_open($params->SESSION->player->getTemplatePath() . 'tribe.ihtml');
        if ($messageID) {
            tmpl_set($template, "MESSAGE/message", $messageText[$messageID]);
        }
        // ------------------------------------------------------------------------
        // ----------- Join existing tribe ----------------------------------------
        tmpl_iterate($template, "FORM");
        $form = array("heading" => _('Einem Stamm beitreten'), "modus_name" => "modus", "modus_value" => TRIBE, "action_name" => "tribeAction", "action_value" => TRIBE_ACTION_JOIN, "TAG/fieldname" => "tag", "TAG/tag_regexp" => _("Buchstaben, Zahlen, Bindestriche; keine Zahlen oder Bindestrich am Anfang"), "TAG/value" => $tribe ? $tribe : $params->POST->tag, "TAG/size" => 8, "TAG/maxlength" => 8, "TAG/form_prefix" => "join_", "PASSWORD/fieldname" => "password", "PASSWORD/pw_regexp" => _("mind. 6 Buchstaben oder Zahlen"), "PASSWORD/value" => $params->POST->password, "PASSWORD/size" => 8, "PASSWORD/maxlength" => 15, "PASSWORD/form_prefix" => "join_", "BUTTON/caption" => _('Beitreten'));
        tmpl_set($template, "FORM", $form);
        // ------------------------------------------------------------------------
        // ----------- Create new tribe -------------------------------------------
        tmpl_iterate($template, "FORM");
        // only change the different values for creation
        $form["heading"] = _('Einen neuen Stamm gründen');
        $form["TAG/form_prefix"] = "create_";
        $form["PASSWORD/form_prefix"] = "create_";
        $form["action_value"] = TRIBE_ACTION_CREATE;
        $form["BUTTON/caption"] = _('Neu gründen');
        $form["RESTORERANKING/fieldName"] = "restore_rank";
        tmpl_set($template, "FORM", $form);
    } else {
        if (!($tribeData = tribe_getTribeByTag($tribe, $db))) {
            return _('Fehler');
        }
        $template = tmpl_open($params->SESSION->player->getTemplatePath() . 'tribeMember.ihtml');
        if ($messageID) {
            tmpl_set($template, "MESSAGE/message", $messageText[$messageID]);
        }
        if (tribe_isLeaderOrJuniorLeader($playerID, $tribe, $db)) {
            $adminData = array("modus_name" => "modus", "modus_value" => TRIBE_ADMIN, "TRIBEMESSAGEFORM" => array("message_name" => "messageText", "modus_name" => "modus", "modus_value" => TRIBE, "action_name" => "tribeAction", "action_value" => TRIBE_ACTION_MESSAGE));
            tmpl_set($template, "ADMIN", $adminData);
        }
        $data = array("tag" => $tribe, "name" => $tribeData['name'], "link_tribe" => "modus=" . TRIBE_DETAIL . "&tribe=" . urlencode(unhtmlentities($tribeData['tag'])), "MEMBERS/tag_name" => "tag", "MEMBERS/tag_value" => $tribe, "MEMBERS/modus_name" => "modus", "MEMBERS/modus_value" => TRIBE_PLAYER_LIST, "LEAVE/modus_name" => "modus", "LEAVE/modus_value" => TRIBE, "LEAVE/action_name" => "tribeAction", "LEAVE/action_value" => TRIBE_ACTION_LEAVE);
        if ($tribeData['leaderID']) {
            $JuniorAdmin = $targetPlayer = new Player(getPlayerByID($tribeData['juniorLeaderID']));
            $leaderData = array("LEADER/name" => $tribeData['leaderName'], "LEADER/leaderID_name" => "detailID", "LEADER/leaderID_value" => $tribeData['leaderID'], "LEADER/juniorLeaderName" => $JuniorAdmin->name, "LEADER/juniorLeaderID_name" => "detailID", "LEADER/juniorLeaderID_value" => $JuniorAdmin->playerID, "LEADER/modus_name" => "modus", "LEADER/modus_value" => PLAYER_DETAIL);
        } else {
            $leaderData = array("NOLEADER/message" => _('Ihr Stamm hat zur Zeit keinen Anführer.'));
        }
        $leaderDeterminationData = array("LEADERDETERMINATION/modus_name" => "modus", "LEADERDETERMINATION/modus_value" => TRIBE_LEADER_DETERMINATION);
        $governmentData = array("GOVERNMENT/name" => $governmentList[$governmentData['governmentID']]);
        if ($warTargets = relation_getWarTargetsAndFame($tribe, $db)) {
            tmpl_set($template, "NORMAL/WAR", array());
            foreach ($warTargets as $target) {
                $target_facts = array("target" => $target["target"], "fame_own" => $target["fame_own"], "fame_target" => $target["fame_target"], "percent_actual" => $target["percent_actual"]);
                if ($target["isForcedSurrenderTheoreticallyPossible"]) {
                    $target_facts["FORCEDSURRENDER/percent_estimated"] = $target["percent_estimated"];
                    if ($target["isForcedSurrenderPracticallyPossible"]) {
                        $target_facts["FORCEDSURRENDER/class"] = "enough";
                    } else {
                        if ($target["isForcedSurrenderPracticallyPossibleForTarget"]) {
                            $target_facts["FORCEDSURRENDER/class"] = "less";
                        } else {
                            $target_facts["FORCEDSURRENDER/class"] = "";
                        }
                    }
                }
                tmpl_iterate($template, "NORMAL/WAR/TARGET");
                tmpl_set($template, "NORMAL/WAR/TARGET", $target_facts);
            }
        }
        if ($messages = tribe_getTribeMessages($tribe, $db)) {
            foreach ($messages as $messageID => $messageData) {
                $message = array("time" => $messageData['date'], "subject" => $messageData['messageSubject'], "message" => $messageData['messageText']);
                tmpl_iterate($template, "NORMAL/TRIBEMESSAGE");
                tmpl_set($template, "NORMAL/TRIBEMESSAGE", $message);
            }
        }
        $data = array_merge($data, $leaderData, $leaderDeterminationData, $governmentData);
        tmpl_set($template, "NORMAL", $data);
    }
    return tmpl_parse($template);
}
Esempio n. 7
0
function tribe_getContent($playerID, $tribe)
{
    global $config, $params, $db, $no_resource_flag, $governmentList;
    $no_resource_flag = 1;
    // messages
    $messageText = array(-12 => "Der Clan befindet sich gerade im Krieg und darf daher im Moment" . "keine neuen Mitglieder aufnehmen.", -11 => "Ihre Clanzugeh&ouml;rigkeit hat sich erst vor kurzem " . "ge&auml;ndert. Sie m&uuml;ssen noch warten, bis Sie wieder " . "etwas an Ihrer Clanzugeh&ouml;rigkeit &auml;ndern d&uuml;rfen.", -10 => "Ihr Clan befindet sich im Krieg. Sie d&uuml;rfen derzeit nicht " . "austreten.", -9 => "Die Nachricht konnte nicht eingetragen werden.", -8 => "Sie sind der Clananf&uuml;hrer und konnten nicht entfernt " . "werden.", -7 => "Das Passwort konnte nicht gesetzt werden!", -6 => "Der Clan konnte nicht angelegt werden.", -5 => "Es gibt schon einen Clan mit diesem K&uuml;rzel;", -4 => "Sie konnten nicht austreten. Vermutlich geh&ouml;ren Sie gar " . "keinem Clan an.", -3 => "Sie konnten dem Clan nicht beitreten. Vermutlich sind Sie schon " . "bei einem anderen Clan Mitglied.", -2 => "Passwort und Clank&uuml;rzel stimmen nicht &uuml;berein.", -1 => "Bei der Aktion ist ein unerwarteter Datenbankfehler aufgetreten!", 01 => "Sie sind dem Clan beigetreten.", 02 => "Sie haben den Clan verlassen.", 03 => "Der Clan wurde erfolgreich angelegt.", 04 => "Sie waren das letzte Mitglied, der Clan wurde aufgel&ouml;st", 05 => "Die Nachricht wurde eingetragen", 10 => "Dieser Clanname ist nicht erlaubt!");
    // proccess form data
    if ($params->POST->tribeAction) {
        switch ($params->POST->tribeAction) {
            case TRIBE_ACTION_JOIN:
                if ($params->POST->password && $params->POST->tag) {
                    $messageID = tribe_processJoin($playerID, $params->POST->tag, $params->POST->password, $db);
                }
                break;
            case TRIBE_ACTION_CREATE:
                if ($params->POST->password && $params->POST->tag) {
                    $messageID = tribe_processCreate($playerID, $params->POST->tag, $params->POST->password, $db);
                }
                break;
            case TRIBE_ACTION_LEAVE:
                $messageID = tribe_processLeave($playerID, $tribe, $db);
                break;
            case TRIBE_ACTION_MESSAGE:
                if ($params->POST->messageText) {
                    $messageID = tribe_processSendTribeMessage($playerID, $tribe, $params->POST->messageText, $db);
                }
                break;
        }
        if ($params->POST->tribeAction == TRIBE_ACTION_JOIN || $params->POST->tribeAction == TRIBE_ACTION_LEAVE || $params->POST->tribeAction == TRIBE_ACTION_CREATE) {
            // the tribe might have changed
            if (!page_refreshUserData()) {
                return "ERROR";
            }
            $tribe = $params->SESSION->user['tribe'];
        }
    }
    // ----------------------------------------------------------------------------
    // ------- SECTION FOR PLAYERS WITHOUT MEMBERSHIP -----------------------------
    if (!$tribe) {
        // not a tribe member
        $template = @tmpl_open("./templates/" . $config->template_paths[$params->SESSION->user['template']] . "/tribe.ihtml");
        if ($messageID) {
            tmpl_set($template, "MESSAGE/message", $messageText[$messageID]);
        }
        // ------------------------------------------------------------------------
        // ----------- Join existing tribe ----------------------------------------
        tmpl_iterate($template, "FORM");
        $form = array("heading" => "Einem Clan beitreten", "modus_name" => "modus", "modus_value" => TRIBE, "action_name" => "tribeAction", "action_value" => TRIBE_ACTION_JOIN, "TAG/fieldname" => "tag", "TAG/value" => $tribe ? $tribe : $params->POST->tag, "TAG/size" => 8, "TAG/maxlength" => 8, "PASSWORD/fieldname" => "password", "PASSWORD/value" => $params->POST->password, "PASSWORD/size" => 8, "PASSWORD/maxlength" => 15, "BUTTON/caption" => "Beitreten");
        tmpl_set($template, "FORM", $form);
        // ------------------------------------------------------------------------
        // ----------- Create new tribe -------------------------------------------
        tmpl_iterate($template, "FORM");
        // only change the different values for creation
        $form["heading"] = "Einen neuen Clan gr&uuml;nden";
        $form["action_value"] = TRIBE_ACTION_CREATE;
        $form["BUTTON/caption"] = "Neu gr&uuml;nden";
        tmpl_set($template, "FORM", $form);
    } else {
        if (!($tribeData = tribe_getTribeByTag($tribe, $db))) {
            return "ERROR";
        }
        $template = @tmpl_open("./templates/" . $config->template_paths[$params->SESSION->user['template']] . "/tribeMember.ihtml");
        if ($messageID) {
            tmpl_set($template, "MESSAGE/message", $messageText[$messageID]);
        }
        if (tribe_isLeader($playerID, $tribe, $db)) {
            $adminData = array("modus_name" => "modus", "modus_value" => TRIBE_ADMIN, "TRIBEMESSAGEFORM" => array("message_name" => "messageText", "modus_name" => "modus", "modus_value" => TRIBE, "action_name" => "tribeAction", "action_value" => TRIBE_ACTION_MESSAGE));
            tmpl_set($template, "ADMIN", $adminData);
        }
        $data = array("tag" => $tribe, "name" => $tribeData['name'], "link_tribe" => "modus=" . TRIBE_DETAIL . "&tribe=" . urlencode(unhtmlentities($tribeData['tag'])), "MEMBERS/tag_name" => "tag", "MEMBERS/tag_value" => $tribe, "MEMBERS/modus_name" => "modus", "MEMBERS/modus_value" => TRIBE_PLAYER_LIST, "LEAVE/modus_name" => "modus", "LEAVE/modus_value" => TRIBE, "LEAVE/action_name" => "tribeAction", "LEAVE/action_value" => TRIBE_ACTION_LEAVE);
        if ($tribeData[leaderID]) {
            $leaderData = array("LEADER/name" => $tribeData[leaderName], "LEADER/leaderID_name" => "detailID", "LEADER/leaderID_value" => $tribeData[leaderID], "LEADER/modus_name" => "modus", "LEADER/modus_value" => PLAYER_DETAIL);
        } else {
            $leaderData = array("NOLEADER/message" => "Ihr Clan hat zur Zeit keinen Anf&uuml;hrer.");
        }
        $leaderDeterminationData = array("LEADERDETERMINATION/modus_name" => "modus", "LEADERDETERMINATION/modus_value" => TRIBE_LEADER_DETERMINATION);
        $governementData = array("GOVERNMENT/name" => $governmentList[$governmentData[governmentID]]);
        if ($messages = tribe_getTribeMessages($tribe, $db)) {
            foreach ($messages as $messageID => $messageData) {
                $message = array("time" => $messageData[date], "subject" => $messageData[messageSubject], "message" => $messageData[messageText]);
                tmpl_iterate($template, "NORMAL/TRIBEMESSAGE");
                tmpl_set($template, "NORMAL/TRIBEMESSAGE", $message);
            }
        }
        $data = array_merge($data, $leaderData, $leaderDeterminationData, $governmentData);
        tmpl_set($template, "NORMAL", $data);
    }
    return tmpl_parse($template);
}
Esempio n. 8
0
function tribe_deleteTribe($tag, $db, $FORCE = 0)
{
    if (!$FORCE && !relation_leaveTribeAllowed($tag, $db)) {
        return 0;
    }
    if (!($tribe = tribe_getTribeByTag($tag, $db))) {
        return 0;
    }
    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;
        }
        messages_sendSystemMessage($playerID, 8, "Aufl&ouml;sung des Clans", "Ihr Clan {$tag} wurde soeben aufgel&ouml;st. " . "Sollten Sie Probleme mit dem " . "Clanmen&uuml; haben, loggen Sie sich " . "bitte neu ein.", $db);
    }
    $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;
    }
    return 1;
}
Esempio n. 9
0
function tribe_processJoin($playerID, $tag, $password)
{
    global $db;
    if (!tribe_changeTribeAllowedForPlayerID($playerID)) {
        return -10;
    }
    if (!relation_leaveTribeAllowed($tag)) {
        return -6;
    }
    $sql = $db->prepare("SELECT tag\n                       FROM " . TRIBE_TABLE . "\n                       WHERE tag LIKE :tag\n                         AND password = BINARY :password");
    $sql->bindValue('tag', $tag, PDO::PARAM_STR);
    $sql->bindValue('password', $password, PDO::PARAM_STR);
    if (!$sql->rowCountSelect()) {
        return -1;
    }
    if (!($player = getPlayerByID($playerID))) {
        return -3;
    }
    $tribeData = tribe_getTribeByTag($tag);
    if ((int) TRIBE_MAXIMUM_SIZE > 0) {
        $sql = $db->prepare("SELECT count(*) < " . (int) TRIBE_MAXIMUM_SIZE . " as IsOk \n                         FROM " . PLAYER_TABLE . "\n                         WHERE tribe LIKE :tag");
        $sql->bindValue('tag', $tribeData['tag'], PDO::PARAM_STR);
        if (!$sql->execute()) {
            return -7;
        }
        $row = $sql->fetch(PDO::FETCH_ASSOC);
        $sql->closeCursor();
        if (!$row['IsOk']) {
            return -7;
        }
    }
    if (!tribe_joinTribe($playerID, $tribeData['tag'])) {
        return -3;
    }
    tribe_setBlockingPeriodPlayerID($playerID);
    Player::addHistoryEntry($playerID, sprintf(_("tritt dem Stamm '%s' bei"), $tribeData['tag']));
    tribe_sendTribeMessage($tribeData['tag'], TRIBE_MESSAGE_MEMBER, "Spielerbeitritt", "Der Spieler {$player['name']} ist soeben dem Stamm beigetreten.");
    return 1;
}