function tribeRelationList_getContent($tribe) { global $db, $no_resource_flag, $config, $params, $relationList; $no_resource_flag = 1; $template = tmpl_open($params->SESSION->player->getTemplatePath() . 'tribeRelationList.ihtml'); tmpl_set($template, 'tribe', $tribe); $relations = relation_getRelationsForTribe($tribe, $db); if (!$relations) { page_dberror(); } foreach ($relations['own'] as $target => $relationData) { tmpl_iterate($template, 'ROWS'); $data = array("tribe" => $relationData['tribe_target'], "relationTo" => $relationList[$relationData['relationType']]['name'], "relationFrom" => $relations['other'][$target] ? $relationList[$relations['other'][$target]['relationType']]['name'] : $relationList[0]['name'], "link" => "main.php?modus=" . TRIBE_DETAIL . "&tribe=" . $relationData['tribe_target']); $relations['other'][$target] = 0; // mark this relation if ($i++ % 2) { tmpl_set($template, 'ROWS/ROW_ALTERNATE', $data); } else { tmpl_set($template, 'ROWS/ROW', $data); } } foreach ($relations['other'] as $target => $relationData) { if (!$relationData) { // already printed out this relation continue; } tmpl_iterate($template, 'ROWS'); $data = array("tribe" => $relationData['tribe'], "relationFrom" => $relationList[$relationData['relationType']]['name'], "relationTo" => $relationList[0]['name'], "link" => "main.php?modus=" . TRIBE_DETAIL . "&tribe=" . $relationData['tribe']); if ($i++ % 2) { tmpl_set($template, 'ROWS/ROW_ALTERNATE', $data); } else { tmpl_set($template, 'ROWS/ROW', $data); } } return tmpl_parse($template); }
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); }
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; }
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ändert, weil der ausgewählte " . "Beziehungstyp bereits eingestellt ist.", -12 => "Eure Untergebenen weigern sich, " . "diese Beziehung gegenü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ältnis Eurer Rankingpunkte zu " . "denen des Gegners muss sich seit Kriegsbeginn verdoppelt haben.", -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 aufhehmen!", -6 => "Den Clan gibt es nicht!", -5 => "Von der derzeititgen Beziehung kann nicht dirket 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 Clananfü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->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' => "Ä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' => "Ä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' => "Ä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ösen'); tmpl_set($template, 'DELETE/text', 'Den gesamten Clan auflösen. Alle Mitglieder sind danach Clanlos.'); tmpl_set($template, 'DELETE/caption', "{$tribe} auflösen"); return tmpl_parse($template); }
function cave_giveUpCave($caveID, $playerID, $tribe) { global $db; $sql = $db->prepare("UPDATE " . CAVE_TABLE . "\n SET playerID = 0,\n takeoverable = 2,\n protection_end = NOW()+0,\n secureCave = 0\n WHERE playerID = :playerID\n AND caveID = :caveID\n AND starting_position = 0"); $sql->bindValue('playerID', $playerID, PDO::PARAM_INT); $sql->bindValue('caveID', $caveID, PDO::PARAM_INT); if (!$sql->execute() || $sql->rowCount() == 0) { return false; } $sql = $db->prepare("UPDATE " . CAVE_TABLE . " c\n SET name = (SELECT name FROM " . CAVE_ORGINAL_NAME_TABLE . " co WHERE co.caveID = :caveID)\n WHERE c.caveID = :caveID"); $sql->bindValue('caveID', $caveID, PDO::PARAM_INT); $sql->execute(); @unlink("/var/www/speed/images/temp/{$caveID}.png"); // delete all scheduled Events // Event_movement - will only be deleted, when a new player gets that cave // Event_artefact - can't be deleted, as it would result in serious errors // Event_wonder - FIX ME: don't know $db->query("DELETE FROM " . EVENT_DEFENSE_SYSTEM_TABLE . " WHERE caveID = '{$caveID}'"); $db->query("DELETE FROM " . EVENT_EXPANSION_TABLE . " WHERE caveID = '{$caveID}'"); $db->query("DELETE FROM " . EVENT_SCIENCE_TABLE . " WHERE caveID = '{$caveID}'"); $db->query("DELETE FROM " . EVENT_UNIT_TABLE . " WHERE caveID = '{$caveID}'"); $db->query("DELETE FROM " . EVENT_HERO_TABLE . " WHERE caveID = '{$caveID}'"); if ($tribe != '') { $ownRelations = relation_getRelationsForTribe($tribe); foreach ($ownRelations['own'] as $actRelation) { $ownType = $actRelation['relationType']; if ($GLOBALS['relationList'][$ownType]['isPrepareForWar'] || $GLOBALS['relationList'][$ownType]['isWar']) { $newfame = $actRelation['fame'] - NONSECURE_CAVE_VAlUE * NONSECURE_CAVE_GIVEUP_FAKTOR; $sql = $db->prepare("UPDATE " . RELATION_TABLE . "\n SET fame = :newfame\n WHERE tribe = :actTribeRelation\n AND tribe_target = :actTargetRelation"); $sql->bindValue('newfame', $newfame, PDO::PARAM_INT); $sql->bindValue('actTribeRelation', $actRelation['tribe'], PDO::PARAM_INT); $sql->bindValue('actTargetRelation', $actRelation['tribe_target'], PDO::PARAM_INT); $sql->execute(); } } } // delete hero hero_killHero($playerID); return 1; }
function tribe_deleteTribe($tag, $db, $FORCE = 0) { global $relationList; if (!$FORCE && !relation_leaveTribeAllowed($tag, $db)) { return 0; } if (!($tribe = tribe_getTribeByTag($tag, $db))) { return 0; } //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// // get relations if (!($tribeRelations = relation_getRelationsForTribe($tag, $db))) { return 0; } // end others relations foreach ($tribeRelations['other'] as $otherTag => $relation) { $relationType = $relationList[$relation['relationType']]; $oDST = $relationType['onDeletionSwitchTo']; if ($oDST >= 0) { // die raltion umschalten und zielrelation temporär eintragen; sie wird // am ende dieser funktion ohne weiteres umschalten geloescht. Das // temporaere umschalten ist aber noetig, um zum beispiel die // ruhmberechnung im siegfall oder aehnliche effekte, die an // relation_setRelation haengen abzuarbeiten. if (!relation_setRelation($otherTag, $tag, $oDST, 0, $db, 0, $relation['tribe_rankingPoints'], $relation['target_rankingPoints'])) { return 0; } // insert history if ($message = $relationList[$oDST]['historyMessage']) { relation_insertIntoHistory($otherTag, relation_prepareHistoryMessage($tag, $otherTag, $message), $db); } // insert tribe message $relationName = $relationList[$oDST]['name']; tribe_sendTribeMessage($otherTag, TRIBE_MESSAGE_RELATION, "Haltung gegenüber {$tag} geändert", "Die Haltung Ihres Stammes gegenüber dem Stamm {$tag} wurde " . "automatisch auf {$relationName} geändert."); } } //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// if ($tribe['leaderID'] && !tribe_unmakeLeader($tribe['leaderID'], $tag, $db)) { return 0; } if (($members = tribe_getAllMembers($tag, $db)) < 0) { return 0; } foreach ($members as $playerID => $playerData) { if (!tribe_leaveTribe($playerID, $tag, $db)) { return 0; } if (!tribe_setBlockingPeriodPlayerID($playerID, $db)) { return 0; } messages_sendSystemMessage($playerID, 8, "Auflösung des Stammes", "Ihr Stamm {$tag} wurde soeben aufgelöst. " . "Sollten Sie Probleme mit dem " . "Stammesmenü haben, loggen Sie sich " . "bitte neu ein.", $db); Player::addHistoryEntry($db, $playerID, sprintf(_('verläßt den Stamm \'%s\''), $tag)); } $query = "DELETE FROM Tribe " . "WHERE tag LIKE '{$tag}'"; if (!$db->query($query)) { return 0; } $query = "DELETE FROM Relation " . "WHERE tribe LIKE '{$tag}' " . "OR tribe_target LIKE '{$tag}'"; if (!$db->query($query)) { return 0; } $query = "DELETE FROM TribeMessage " . "WHERE tag LIKE '{$tag}'"; if (!$db->query($query)) { return 0; } $query = "DELETE FROM TribeHistory " . "WHERE tribe LIKE '{$tag}'"; if (!$db->query($query)) { return 0; } $query = "DELETE FROM Election " . "WHERE tribe LIKE '{$tag}'"; if (!$db->query($query)) { return 0; } $query = "SELECT rank " . "FROM RankingTribe " . "WHERE tribe LIKE '{$tag}'"; if (!($result = $db->query($query))) { return 0; } if (!($row = $result->nextRow())) { return 0; } $rank = $row['rank']; $query = "DELETE FROM RankingTribe " . "WHERE tribe LIKE '{$tag}'"; if (!$db->query($query)) { return 0; } $query = "UPDATE RankingTribe SET rank = rank - 1 " . "WHERE rank > '{$rank}'"; if (!$db->query($query)) { return 0; } Player::addHistoryEntry($db, $tribe['leaderID'], sprintf(_('löst den Stamm \'%s\' auf'), $tag)); return 1; }
function tribe_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)); }
function relation_leaveTribeAllowed($tag, $db) { global $relationList; if (!($tribeRelations = relation_getRelationsForTribe($tag, $db))) { return 0; } foreach ($relationList as $relationTypeID => $relationType) { if ($relationType[dontLeaveTribe]) { foreach ($tribeRelations[own] as $target => $relation) { if ($relation[relationType] == $relationTypeID) { return 0; } } } } return 1; }
function cave_giveUpCave($caveID, $playerID, $tribe) { global $db, $relationList; $query = "UPDATE Cave SET playerID = 0, takeoverable = 2, " . "protection_end = NOW()+0, secureCave = 0 " . "WHERE playerID = '{$playerID}' AND " . "caveID = '{$caveID}' AND " . "starting_position = 0"; if (!$db->query($query)) { return 0; } if (!$db->affected_rows()) { return 0; } $query = "UPDATE `Cave` c SET name = (SELECT name FROM `Cave_Orginalname` co WHERE co.caveID = '{$caveID}' ) WHERE c.caveID='{$caveID}'"; @$db->query($query); @unlink("/var/www/speed/images/temp/{$caveID}.png"); // delete all scheduled Events // Event_movement - will only be deleted, when a new player gets that cave // Event_artefact - can't be deleted, as it would result in serious errors // Event_wonder - FIX ME: don't know $db->query("DELETE FROM Event_defenseSystem WHERE caveID = '{$caveID}'"); $db->query("DELETE FROM Event_expansion WHERE caveID = '{$caveID}'"); $db->query("DELETE FROM Event_science WHERE caveID = '{$caveID}'"); $db->query("DELETE FROM Event_unit WHERE caveID = '{$caveID}'"); if ($tribe != '') { $ownRelations = relation_getRelationsForTribe($tribe, $db); foreach ($ownRelations['own'] as $actRelation) { $ownType = $actRelation['relationType']; if ($relationList[$ownType]['isPrepareForWar'] || $relationList[$ownType]['isWar']) { $newfame = $actRelation['fame'] - NONSECURE_CAVE_VAlUE * NONSECURE_CAVE_GIVEUP_FAKTOR; $query = "UPDATE Relation SET fame = '" . $newfame . "' " . "WHERE tribe = '" . $actRelation['tribe'] . "' AND " . "tribe_target = '" . $actRelation['tribe_target'] . "'"; $db->query($query); } } } return 1; }
function tribe_deleteTribe($tag, $FORCE = 0) { global $db; if (!$FORCE && !relation_leaveTribeAllowed($tag)) { return 0; } if (!($tribe = tribe_getTribeByTag($tag))) { return 0; } //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// // get relations if (!($tribeRelations = relation_getRelationsForTribe($tag))) { return 0; } // end others relations foreach ($tribeRelations['other'] as $otherTag => $relation) { $relationType = $GLOBALS['relationList'][$relation['relationType']]; $oDST = $relationType['onDeletionSwitchTo']; if ($oDST >= 0) { // die relation umschalten und zielrelation temporaer eintragen; sie wird // am ende dieser funktion ohne weiteres umschalten geloescht. Das // temporaere umschalten ist aber noetig, um zum beispiel die // ruhmberechnung im siegfall oder aehnliche effekte, die an // relation_setRelation haengen abzuarbeiten. if (!relation_setRelation($otherTag, $tag, $oDST, 0, 0, $relation['tribe_rankingPoints'], $relation['target_rankingPoints'])) { return 0; } // insert history if (isset($GLOBALS['relationList'][$oDST]['historyMessage'])) { relation_insertIntoHistory($otherTag, relation_prepareHistoryMessage($tag, $otherTag, $GLOBALS['relationList'][$oDST]['historyMessage'])); } // insert tribe message $relationName = $GLOBALS['relationList'][$oDST]['name']; tribe_sendTribeMessage($otherTag, TRIBE_MESSAGE_RELATION, "Haltung gegenüber {$tag} geändert", "Die Haltung Ihres Stammes gegenüber dem Stamm {$tag} wurde automatisch auf {$relationName} geändert."); } } //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// if ($tribe['leaderID'] && !tribe_unmakeLeader($tribe['leaderID'], $tag)) { return 0; } if (($members = tribe_getAllMembers($tag)) < 0) { return 0; } foreach ($members as $playerID => $playerData) { if (!tribe_leaveTribe($playerID, $tag)) { return 0; } if (!tribe_setBlockingPeriodPlayerID($playerID)) { return 0; } $messagesClass = new Messages(); $messagesClass->sendSystemMessage($playerID, 8, "Auflösung des Stammes", "Ihr Stamm {$tag} wurde soeben aufgelöst. " . "Sollten Sie Probleme mit dem " . "Stammesmenü haben, loggen Sie sich " . "bitte neu ein."); Player::addHistoryEntry($playerID, sprintf(_("verlässt den Stamm '%s'"), $tag)); } $sql = $db->prepare("DELETE FROM " . TRIBE_TABLE . " WHERE tag LIKE :tag"); $sql->bindValue('tag', $tag, PDO::PARAM_STR); if (!$sql->execute()) { return 0; } $sql = $db->prepare("DELETE FROM " . RELATION_TABLE . "\n WHERE tribe LIKE :tag\n OR tribe_target LIKE :tag"); $sql->bindValue('tag', $tag, PDO::PARAM_STR); if (!$sql->execute()) { return 0; } $sql = $db->prepare("DELETE FROM " . TRIBE_MESSAGE_TABLE . " WHERE tag LIKE :tag"); $sql->bindValue('tag', $tag, PDO::PARAM_STR); if (!$sql->execute()) { return 0; } $sql = $db->prepare("DELETE FROM " . TRIBE_HISTORY_TABLE . " WHERE tribe LIKE :tag"); $sql->bindValue('tag', $tag, PDO::PARAM_STR); if (!$sql->execute()) { return 0; } $sql = $db->prepare("DELETE FROM " . ELECTION_TABLE . " WHERE tribe LIKE :tag"); $sql->bindValue('tag', $tag, PDO::PARAM_STR); if (!$sql->execute()) { return 0; } $sql = $db->prepare("SELECT rank FROM " . RANKING_TRIBE_TABLE . " WHERE tribe LIKE :tag"); $sql->bindValue('tag', $tag, PDO::PARAM_STR); if (!$sql->execute()) { return 0; } if (!($row = $sql->fetch())) { return 0; } $rank = $row['rank']; $sql = $db->prepare("DELETE FROM " . RANKING_TRIBE_TABLE . " WHERE tribe LIKE :tag"); $sql->bindValue('tag', $tag, PDO::PARAM_STR); if (!$sql->execute()) { return 0; } $sql = $db->prepare("UPDATE " . RANKING_TRIBE_TABLE . " SET rank = rank - 1 " . "WHERE rank > :rank"); $sql->bindValue('rank', $rank, PDO::PARAM_STR); if (!$sql->execute()) { return 0; } Player::addHistoryEntry($tribe['leaderID'], sprintf(_("löst den Stamm '%s' auf"), $tag)); return 1; }
function tribe_getContent($caveID, $tag) { global $db, $template; if (!$tag) { $template->throwError('Es wurde kein Stamm ausgewählt.'); return; } // open template $template->setFile('tribeDetail.tmpl'); $template->setShowRresource(false); $sql = $db->prepare("SELECT t.*, p.playerID, p.name AS leader_name\n FROM " . TRIBE_TABLE . " t\n LEFT JOIN " . PLAYER_TABLE . " p\n ON p.playerID = t.leaderID\n WHERE t.tag LIKE :tag"); $sql->bindValue('tag', $tag, PDO::PARAM_STR); if (!$sql->execute()) { $template->throwError('Fehler in der Datenbank.'); return; } if (!($row = $sql->fetch(PDO::FETCH_ASSOC))) { $template->throwError('Es konnte kein Stamm mit dem Namen gefunden werden.'); return; } $sql->closeCursor(); $JuniorAdmin = $targetPlayer = new Player(getPlayerByID($row['juniorLeaderID'])); if (!empty($row['awards'])) { $tmp = explode('|', $row['awards']); $awards = array(); foreach ($tmp as $tag1) { $awards[] = array('award_tag' => $tag1, 'award_modus' => AWARD_DETAIL); } $row['award'] = $awards; } if ($row['avatar']) { $row['avatar'] = @unserialize($row['avatar']); $row['avatar_path'] = $row['avatar']['path']; $row['avatar_width'] = $row['avatar']['width']; $row['avatar_height'] = $row['avatar']['height']; } foreach ($row as $k => $v) { if (!$v && $k != 'avatar') { $row[$k] = "k.A."; } } $row['rank_offset'] = rankingTribe_checkOffset($tag); // parse tribe message $parser = new parser(); $row['description'] = $parser->p($row['description']); // get Tribe Rank $sql = $db->prepare("SELECT rank FROM " . RANKING_TRIBE_TABLE . " WHERE tribe = :tag"); $sql->bindValue('tag', $tag, PDO::PARAM_STR); if (!$sql->execute()) { $template->throwError('Fehler in der Datenbank.'); return; } if ($ranking = $sql->fetch(PDO::FETCH_ASSOC)) { $row['rank'] = $ranking['rank']; } else { $row['rank'] = ''; } $template->addVar('tribe_details', $row); // history $history = relation_getTribeHistory($tag); $template->addVar('tribe_history', $history); // player list $playerList = tribe_getPlayerList($tag, true, true); foreach ($playerList as $id => $playerData) { if (!empty($playerData['awards'])) { $playerData['awards'] = explode('|', $playerData['awards']); $awards = array(); foreach ($playerData['awards'] as $award) { $awards[] = array('tag' => $award, 'award_modus' => AWARD_DETAIL); } $playerData['award'] = $awards; } foreach ($playerData as $k => $v) { if ($k == 'awards' || $k == 'religion') { continue; } if (!$v) { $playerData[$k] = _('k.A.'); } } $playerList[$id] = $playerData; } $template->addVar('tribe_player_list', $playerList); // relations $relations = relation_getRelationsForTribe($tag); $relationsData = array(); if (isset($relations['own'])) { foreach ($relations['own'] as $target => $relationData) { $relationsData[$target] = array('tribe' => $relationData['tribe_target'], 'relation_to' => $GLOBALS['relationList'][$relationData['relationType']]['name'], 'relation_from' => isset($relations['other'][$target]) && $relations['other'][$target] ? $GLOBALS['relationList'][$relations['other'][$target]['relationType']]['name'] : $GLOBALS['relationList'][0]['name']); } } if (isset($relations['other'])) { foreach ($relations['other'] as $target => $relationData) { // already printed out this relation if (isset($relationsData[$target])) { continue; } $relationsData[$target] = array('tribe' => $relationData['tribe'], 'relation_to' => $GLOBALS['relationList'][0]['name'], 'relation_from' => $GLOBALS['relationList'][$relationData['relationType']]['name']); } } $template->addVar('relations_data', $relationsData); }