function player_getContent($caveID, $playerID) { global $db, $no_resource_flag, $config, $params; $no_resource_flag = 1; if (!($r = $db->query("SELECT * FROM Player WHERE playerID = '{$playerID}'"))) { page_dberror(); } if (!($row = $r->nextRow(MYSQL_ASSOC))) { page_dberror(); } $template = tmpl_open($params->SESSION->player->getTemplatePath() . 'playerDetail.ihtml'); if ($row['avatar']) { // FIXME: should be configurable tmpl_set($template, 'DETAILS/AVATAR_IMG/avatar', $row['avatar']); tmpl_set($template, 'DETAILS/AVATAR_IMG/width', 120); tmpl_set($template, 'DETAILS/AVATAR_IMG/height', 120); } if (!empty($row['awards'])) { $tmp = explode('|', $row['awards']); $awards = array(); foreach ($tmp as $tag) { $awards[] = array('tag' => $tag, 'award_modus' => AWARD_DETAIL); } $row['award'] = $awards; } unset($row['awards']); foreach ($row as $k => $v) { if (!$v) { $row[$k] = _('k.A.'); } } $row['mail_modus'] = NEW_MESSAGE; $row['mail_receiver'] = urlencode($row['name']); $row['caveID'] = $caveID; $timediff = getUgaAggaTimeDiff(time_fromDatetime($row['created']), time()); $row['age'] = 18 + $timediff['year']; tmpl_set($template, 'DETAILS', $row); // ADDED by chris--- for rank_history $row['playerID'] = $playerID; // show player's caves $caves = getCaves($playerID); if ($caves) { tmpl_set($template, '/DETAILS/CAVES', $caves); } //show bodycount // Keinen Bodycount fuers erste.... Nebrot //$body_count = $row['body_count']; //tmpl_set($template, '/DETAILS/BODYCOUNT/body_count', $body_count); // show player's history $history = Player::getHistory($db, $playerID); if (sizeof($history)) { tmpl_set($template, '/DETAILS/HISTORY/ENTRY', $history); } else { tmpl_set($template, '/DETAILS/HISTORY/NOENTRIES/iterate', ''); } return tmpl_parse($template); }
function reverseMovementEvent($caveID, $eventID) { global $db; // get movements $ua_movements = Movement::getMovements(); // get current time $now = time(); // get movement $sql = $db->prepare("SELECT * FROM " . EVENT_MOVEMENT_TABLE . " \n WHERE event_movementID = :eventID"); $sql->bindValue('eventID', $eventID, PDO::PARAM_INT); if ($sql->rowCountSelect() == 0) { return 1; } if (!$sql->execute()) { return 1; } $move = $sql->fetch(PDO::FETCH_ASSOC); // check movement // blocked if ($move['blocked']) { return 1; } // not reversable if ($ua_movements[$move['movementID']]->returnID == -1) { return 1; } // not own movement if ($caveID != $move['caveID']) { return 1; } // expired if (time_fromDatetime($move['end']) < $now) { return 1; } // build query $start = time_fromDatetime($move['start']); $end = time_fromDatetime($move['end']); $diff = $now - $start; $sql = $db->prepare("UPDATE " . EVENT_MOVEMENT_TABLE . " SET source_caveID = target_caveID, " . "target_caveID = caveID, " . "movementID = :returnID, end = :endTime, start = :startTime " . "WHERE blocked = 0 AND caveID = source_caveID AND " . "caveID = :caveID AND event_movementID = :movementID"); $sql->bindValue('returnID', $ua_movements[$move['movementID']]->returnID, PDO::PARAM_INT); $sql->bindValue('endTime', time_toDatetime($now + $diff), PDO::PARAM_STR); $sql->bindValue('startTime', time_toDatetime($now), PDO::PARAM_STR); $sql->bindValue('caveID', $caveID, PDO::PARAM_STR); $sql->bindValue('movementID', $eventID, PDO::PARAM_STR); $sql->execute(); return intval($sql->rowCount() != 1); }
function merchant_getMechantDetail($playerID, $caveID, &$details) { global $db, $template; // open template $template->setFile('merchant.tmpl'); @(include_once 'rules/rndMessages.php'); // messages $messageText = array(-3 => array('type' => 'info', 'message' => "Der Händler schaut dich entgeistert an. \"Was willst du von mir?\""), -2 => array('type' => 'info', 'message' => "Der Händler schaut dich entgeistert an. \"Du warst doch gerade erst hier. Komm später nochmal wieder\""), -1 => array('type' => 'error', 'message' => "Es ist ein Fehler bei der Verarbeitung Ihrer Anfrage aufgetreten. Bitte wenden Sie sich an die Administratoren."), 0 => array('type' => 'info', 'message' => "Der Händler schüttelt mit dem Kopf. \"Meine Ware hat ihren Preis und sie ist jeden Rohstoff wert! Der nächste Häuptling ist bestimmt bereit meinen Preis zu zahlen!\""), 1 => array('type' => 'success', 'message' => "Erfreut nimmt der Händler deine Bezahlung entgegen. \"Ich hoffe dir gefällt meine Ware. Empfehle mich bitte weiter!\"")); $action = Request::getVar('action', ''); switch ($action) { /**************************************************************************************************** * * Holen wir mal das zeugs * ****************************************************************************************************/ case 'order': $tradeID = Request::getVar('tradeID', -1); if (!isset($GLOBALS['tradeTypeList'][$tradeID])) { $messageID = -3; break; } $messageID = merchant_processOrder($tradeID, $caveID, $details); $details = getCaveSecure($caveID, $_SESSION['player']->playerID); break; } /**************************************************************************************************** * * Anzeigen der kaufbaren Sachen * ****************************************************************************************************/ foreach ($GLOBALS['tradeCategoriesTypeList'] as $j => $cat) { $trades[$j] = array('id' => $j, 'name' => $GLOBALS['tradeCategoriesTypeList'][$j]->name); $lockedCat = array(); $sql = $db->prepare("SELECT LockTill < :LockTill as allowed, LockTill, cat\n FROM " . TRADELOCK_TABLE . "\n WHERE PlayerID = :playerID"); $sql->bindValue('LockTill', date("Y-m-d H:i:s", time()), PDO::PARAM_STR); $sql->bindValue('playerID', $playerID, PDO::PARAM_INT); if (!$sql->execute()) { $locktill = array(); } while ($row = $sql->fetch(PDO::FETCH_ASSOC)) { if ($row['allowed'] == 0) { $lockedCat[$row['cat']] = time_fromDatetime($row['LockTill']); } } $sql->closeCursor(); $count = 0; foreach ($GLOBALS['tradeTypeList'] as $id => $trade) { if ($trade->nodocumentation) { continue; } if ($trade->category != $GLOBALS['tradeCategoriesTypeList'][$j]->id) { continue; } $less = false; $canbuy = true; $locktill = ''; if (isset($lockedCat[$cat->id])) { $canbuy = false; $locktill = $lockedCat[$cat->id]; } $trades[$j]['data'][$id] = array('bgID' => $count++ % 2 + 1, 'name' => $trade->name, 'trade_id' => $id, 'description' => $trade->description, 'dbFieldName' => $trade->tradeID, 'locktill' => !$canbuy ? sprintf(_('Wieder im Angebot ab %s'), gmdate("d.m.Y H:i:s", $locktill)) : ''); $trades[$j]['data'][$id] = array_merge($trades[$j]['data'][$id], parseCost($trade, $details)); // show the building link ?! if (!$canbuy) { $trades[$j]['data'][$id]['no_build_msg'] = sprintf(_('Wieder im Angebot ab %s'), gmdate("d.m.Y H:i:s", $locktill)); } else { if ($trades[$j]['data'][$id]['notenough']) { $trades[$j]['data'][$id]['no_build_msg'] = _('Zu wenig Rohstoffe'); } else { $trades[$j]['data'][$id]['build_link'] = true; } } } } if (isset($GLOBALS['rndMerchantMessageText'])) { if (!isset($_SESSION['merchant_text_id']) || !isset($_SESSION['merchant_text_time']) || $_SESSION['merchant_text_time'] < time()) { $_SESSION['merchant_text_id'] = array_rand($GLOBALS['rndMerchantMessageText'], 1); $_SESSION['merchant_text_time'] = time() + 900; } $template->addVar('rndMessage', $GLOBALS['rndMerchantMessageText'][$_SESSION['merchant_text_id']]); } /**************************************************************************************************** * * Übergeben ans Template * ****************************************************************************************************/ $template->addVars(array('cave_id' => $caveID, 'status_msg' => isset($messageID) ? $messageText[$messageID] : '', 'trades' => $trades)); }
function time_formatDatetime($timestamp) { $timecorrection = $_SESSION['player']->getTimeCorrection(); return gmdate("d.m.Y H:i:s", time_fromDatetime($timestamp) + $timecorrection); }
function player_getContent($caveID, $playerID) { global $db, $template; // open template $template->setFile('playerDetail.tmpl'); $template->setShowResource(false); // workaround, if no playerID is submitted! TODO if ($playerID == 0) { $playerID = $_SESSION['player']->playerID; } $playerDetails = Player::getPlayer($playerID, true); if (!$playerDetails) { $template->throwError('Da wollte irgendwie was nicht aus der Datenbank ausgelesen werden :('); return; } if ($playerDetails['avatar']) { $playerDetails['avatar'] = @unserialize($playerDetails['avatar']); $template->addVars(array('player_avatar' => $playerDetails['avatar']['path'], 'player_avatar_width' => $playerDetails['avatar']['width'], 'player_avatar_height' => $playerDetails['avatar']['height'])); } if (!empty($playerDetails['awards'])) { $tmp = explode('|', $playerDetails['awards']); $awards = array(); foreach ($tmp as $tag) { $awards[] = $tag; } $playerDetails['award'] = $awards; } unset($playerDetails['awards']); foreach ($playerDetails as $k => $v) { if (!$v) { $playerDetails[$k] = _('k.A.'); } } $playerDetails['mail_receiver'] = urlencode($playerDetails['name']); $playerDetails['caveID'] = $caveID; $playerTribe = $playerDetails['tribe']; $timediff = getUgaAggaTimeDiff(time_fromDatetime($playerDetails['created']), time()); $playerDetails['age'] = 18 + $timediff['year']; // init messages class $parser = new parser(); $playerDetails['description'] = $parser->p($playerDetails['description']); // show player's caves $caves = getCaves($playerID); if ($caves) { $template->addVar('player_caves', $caves); } // show player's history $history = Player::getHistory($playerID); if (sizeof($history)) { $template->addVar('player_history', $history); } //get player rank $sql = $db->prepare("SELECT rank FROM " . RANKING_TABLE . " WHERE playerID = :playerID"); $sql->bindValue('playerID', $playerID, pDo::PARAM_INT); if (!$sql->execute()) { page_dberror(); } if ($row = $sql->fetch()) { $playerDetails['rank'] = $row['rank']; } else { $playerDetails['rank'] = ''; } $template->addVars(array('player_details' => $playerDetails)); }
function time_formatDatetime($timestamp) { global $params; $timecorrection = $params->SESSION->player->getTimeCorrection(); return gmdate("d.m.Y H:i:s", time_fromDatetime($timestamp) + $timecorrection); }
function digest_getAppointments($ownCaves) { global $db; $caveIDs = implode(', ', array_keys($ownCaves)); // unit building events $result = array(); $sql = $db->prepare("SELECT *\n FROM " . EVENT_UNIT_TABLE . "\n WHERE caveID IN (" . $caveIDs . ")\n ORDER BY end ASC, event_unitID ASC"); if ($sql->execute()) { while ($row = $sql->fetch(PDO::FETCH_ASSOC)) { $result[] = array('event_name' => $row['quantity'] . "x " . $GLOBALS['unitTypeList'][$row['unitID']]->name, 'cave_name' => $ownCaves[$row['caveID']]['name'], 'cave_id' => $row['caveID'], 'category' => 'unit', 'modus' => UNIT_BUILDER, 'event_id' => $row['event_unitID'], 'event_start' => time_fromDatetime($row['start']), 'event_end' => time_fromDatetime($row['end']), 'event_end_date' => time_formatDatetime($row['end']), 'seconds_before_end' => time_fromDatetime($row['end']) - time()); } } $sql->closeCursor(); // improvement events $sql = $db->prepare("SELECT *\n FROM " . EVENT_EXPANSION_TABLE . "\n WHERE caveID IN (" . $caveIDs . ")\n ORDER BY end ASC, event_expansionID ASC"); $sql->bindValue('caveIDs', $caveIDs); if ($sql->execute()) { while ($row = $sql->fetch(PDO::FETCH_ASSOC)) { $nextLevel = $ownCaves[$row['caveID']][$GLOBALS['buildingTypeList'][$row['expansionID']]->dbFieldName] + 1; $result[] = array('event_name' => $GLOBALS['buildingTypeList'][$row['expansionID']]->name . " Stufe " . $nextLevel, 'cave_name' => $ownCaves[$row['caveID']]['name'], 'cave_id' => $row['caveID'], 'category' => 'building', 'modus' => IMPROVEMENT_BUILDER, 'event_id' => $row['event_expansionID'], 'event_start' => time_fromDatetime($row['start']), 'event_end' => time_fromDatetime($row['end']), 'event_end_date' => time_formatDatetime($row['end']), 'seconds_before_end' => time_fromDatetime($row['end']) - time()); } } $sql->closeCursor(); // defense systms events $sql = $db->prepare("SELECT *\n FROM " . EVENT_DEFENSE_SYSTEM_TABLE . "\n WHERE caveID IN (" . $caveIDs . ")\n ORDER BY end ASC, event_defenseSystemID ASC"); if ($sql->execute()) { while ($row = $sql->fetch(PDO::FETCH_ASSOC)) { $nextLevel = $ownCaves[$row['caveID']][$GLOBALS['defenseSystemTypeList'][$row['defenseSystemID']]->dbFieldName] + 1; $result[] = array('event_name' => $GLOBALS['defenseSystemTypeList'][$row['defenseSystemID']]->name . " Stufe " . $nextLevel, 'cave_name' => $ownCaves[$row['caveID']]['name'], 'cave_id' => $row['caveID'], 'category' => 'defense', 'modus' => DEFENSE_BUILDER, 'event_id' => $row['event_defenseSystemID'], 'event_start' => time_fromDatetime($row['start']), 'event_end' => time_fromDatetime($row['end']), 'event_end_date' => time_formatDatetime($row['end']), 'seconds_before_end' => time_fromDatetime($row['end']) - time()); } } $sql->closeCursor(); //science events $sql = $db->prepare("SELECT *\n FROM " . EVENT_SCIENCE_TABLE . "\n WHERE caveID IN (" . $caveIDs . ")\n ORDER BY end ASC, event_scienceID ASC"); if ($sql->execute()) { while ($row = $sql->fetch(PDO::FETCH_ASSOC)) { $nextLevel = $ownCaves[$row['caveID']][$GLOBALS['scienceTypeList'][$row['scienceID']]->dbFieldName] + 1; $result[] = array('event_name' => $GLOBALS['scienceTypeList'][$row['scienceID']]->name . " Stufe " . $nextLevel, 'cave_name' => $ownCaves[$row['caveID']]['name'], 'cave_id' => $row['caveID'], 'category' => 'science', 'modus' => SCIENCE_BUILDER, 'event_id' => $row['event_scienceID'], 'event_start' => time_fromDatetime($row['start']), 'event_end' => time_fromDatetime($row['end']), 'event_end_date' => time_formatDatetime($row['end']), 'seconds_before_end' => time_fromDatetime($row['end']) - time()); } } $sql->closeCursor(); // hero events $sql = $db->prepare("SELECT *\n FROM " . EVENT_HERO_TABLE . "\n WHERE caveID IN (" . $caveIDs . ")\n ORDER BY end ASC, event_heroID ASC"); if ($sql->execute()) { while ($row = $sql->fetch(PDO::FETCH_ASSOC)) { $result[] = array('event_name' => "Wiedererweckung des Helden", 'cave_name' => $ownCaves[$row['caveID']]['name'], 'cave_id' => $row['caveID'], 'category' => 'hero', 'modus' => HERO_DETAIL, 'event_id' => $row['event_heroID'], 'event_start' => time_fromDatetime($row['start']), 'event_end' => time_fromDatetime($row['end']), 'event_end_date' => time_formatDatetime($row['end']), 'seconds_before_end' => time_fromDatetime($row['end']) - time()); } } $sql->closeCursor(); usort($result, "datecmp"); return $result; }