mirror of
https://github.com/Shadowss/TravianZ.git
synced 2026-06-28 00:24:23 +00:00
Code requirements for vacation
Code requirements for vacation Vacation function is fully functional
This commit is contained in:
+1
-18
@@ -81,7 +81,6 @@ class Account {
|
||||
else if(User::exists($database,$_POST['name'])) {
|
||||
$form->addError("name",USRNM_TAKEN);
|
||||
}
|
||||
|
||||
}
|
||||
if(!isset($_POST['pw']) || trim($_POST['pw']) == "") {
|
||||
$form->addError("pw",PW_EMPTY);
|
||||
@@ -116,8 +115,6 @@ class Account {
|
||||
$form->addError("invt",$_POST['invited']);
|
||||
$_SESSION['errorarray'] = $form->getErrors();
|
||||
$_SESSION['valuearray'] = $_POST;
|
||||
|
||||
|
||||
header("Location: anmelden.php");
|
||||
exit;
|
||||
}
|
||||
@@ -144,7 +141,6 @@ class Account {
|
||||
["", $_POST['invited']],
|
||||
1
|
||||
);
|
||||
|
||||
$this->generateBase($_POST['kid'], $uid, $_POST['name']);
|
||||
header("Location: login.php");
|
||||
exit;
|
||||
@@ -155,7 +151,6 @@ class Account {
|
||||
|
||||
private function Activate() {
|
||||
global $database;
|
||||
|
||||
if(START_DATE < date('d.m.Y') or START_DATE == date('d.m.Y') && START_TIME <= date('H:i'))
|
||||
{
|
||||
$q = "SELECT act, username, password, email, tribe, location FROM ".TB_PREFIX."activate where act = '".$database->escape($_POST['id'])."'";
|
||||
@@ -185,7 +180,6 @@ class Account {
|
||||
|
||||
private function Unreg() {
|
||||
global $database;
|
||||
|
||||
$q = "SELECT password, username FROM ".TB_PREFIX."activate where id = ".(int) $_POST['id'];
|
||||
$result = mysqli_query($database->dblink,$q);
|
||||
$dbarray = mysqli_fetch_array($result);
|
||||
@@ -202,7 +196,6 @@ class Account {
|
||||
|
||||
private function Login() {
|
||||
global $database, $session, $form;
|
||||
|
||||
$user = $_POST['user'];
|
||||
if(!isset($_POST['user']) || empty($_POST['user'])){
|
||||
$form->addError("user", $user);
|
||||
@@ -222,15 +215,10 @@ class Account {
|
||||
}
|
||||
else $form->addError("pw", LOGIN_PW_ERROR);
|
||||
}
|
||||
|
||||
$userData = $database->getUserArray($_POST['user'], 0);
|
||||
|
||||
// Vacation mode by Shadow
|
||||
if($userData["vac_mode"] == 1 && $userData["vac_time"] > time()){
|
||||
$form->addError("vacation", "Vacation mode is still enabled");
|
||||
}
|
||||
|
||||
// Vacation mode by Shadow
|
||||
if($form->returnErrors() > 0){
|
||||
$_SESSION['errorarray'] = $form->getErrors();
|
||||
$_SESSION['valuearray'] = $_POST;
|
||||
@@ -238,9 +226,7 @@ class Account {
|
||||
header("Location: login.php");
|
||||
exit();
|
||||
}else{
|
||||
// Vacation mode by Shadow
|
||||
$database->removevacationmode($userData['id']);
|
||||
// Vacation mode by Shadow
|
||||
if($database->login($_POST['user'], $_POST['pw'])){
|
||||
$database->UpdateOnline("login", $_POST['user'], time(), $userData['id']);
|
||||
}else if($database->sitterLogin($_POST['user'], $_POST['pw'])){
|
||||
@@ -252,8 +238,7 @@ class Account {
|
||||
}
|
||||
|
||||
private function Logout() {
|
||||
global $session, $database;
|
||||
|
||||
global $session, $database;
|
||||
unset($_SESSION['wid']);
|
||||
$database->activeModify(addslashes($session->username),1);
|
||||
$database->UpdateOnline("logout") or die(mysqli_error($database->dblink));
|
||||
@@ -268,10 +253,8 @@ class Account {
|
||||
function generateBase($kid, $uid, $username) {
|
||||
global $database;
|
||||
$message = new Message();
|
||||
|
||||
if($kid == 0) $kid = rand(1,4);
|
||||
else $kid = $_POST['kid'];
|
||||
|
||||
$database->generateVillages([['wid' => 0, 'mode' => 0, 'type' => 3, 'kid' => $kid, 'capital' => 1, 'pop' => 2, 'name' => null, 'natar' => 0]], $uid, $username);
|
||||
$message->sendWelcome($uid, $username);
|
||||
}
|
||||
|
||||
@@ -47,7 +47,6 @@ class Alliance {
|
||||
|
||||
public function procAlliance($get) {
|
||||
global $session, $database;
|
||||
|
||||
if($session->alliance > 0) {
|
||||
$this->allianceArray = $database->getAlliance($session->alliance);
|
||||
// Permissions Array
|
||||
@@ -57,7 +56,6 @@ class Alliance {
|
||||
$this->inviteArray = $database->getInvitation($session->uid);
|
||||
$this->gotInvite = count($this->inviteArray) > 0;
|
||||
}
|
||||
|
||||
if(isset($get['a'])) {
|
||||
switch($get['a']) {
|
||||
case 2:
|
||||
@@ -86,7 +84,6 @@ class Alliance {
|
||||
|
||||
public function isForumAccessible($forumID){
|
||||
global $session;
|
||||
|
||||
//Loop through the shared forums and try to find the passed one
|
||||
foreach($session->sharedForums as $forums){
|
||||
foreach($forums as $forum){
|
||||
@@ -105,9 +102,7 @@ class Alliance {
|
||||
|
||||
public static function canAct($datas, $mode = 0){
|
||||
global $database, $session;
|
||||
|
||||
$hasSwitchedToAdmin = isset($datas['admin']) && !empty($datas['admin']) && $datas['admin'] == "switch_admin";
|
||||
|
||||
return (/*$database->CheckEditRes($datas['aid']) == 1 && */($datas['alliance'] > 0 && (($database->isAllianceOwner($session->uid) == $datas['alliance'] ||
|
||||
($datas['forum_perm'] == 1 && $session->alliance == $datas['alliance']))) ||
|
||||
($datas['owner'] == $session->uid && $session->access != ADMIN)) ||
|
||||
|
||||
+176
-1
@@ -8496,8 +8496,183 @@ References: User ID/Message ID, Mode
|
||||
return $dbarray2['vac_mode'] == 1;
|
||||
}
|
||||
}
|
||||
else return false;
|
||||
else
|
||||
return
|
||||
false;
|
||||
}
|
||||
|
||||
/*****************************************
|
||||
Function to vacation mode remake by Shadow
|
||||
References: Shadow
|
||||
*****************************************/
|
||||
|
||||
function checkVacationRequirements($uid){
|
||||
$uid = (int)$uid;
|
||||
$time = time();
|
||||
$errors = [];
|
||||
|
||||
// 1. Troops moving OUT
|
||||
$q = "SELECT COUNT(*) as num
|
||||
FROM ".TB_PREFIX."movement m
|
||||
JOIN ".TB_PREFIX."vdata v ON v.wref = m.from
|
||||
WHERE v.owner=$uid
|
||||
AND m.proc=0
|
||||
AND m.endtime > $time
|
||||
AND m.sort_type = 3";
|
||||
|
||||
$res = mysqli_query($this->dblink,$q);
|
||||
if(!$res){ die("SQL ERROR (TROOPS_MOVING): ".mysqli_error($this->dblink)); }
|
||||
|
||||
$row = mysqli_fetch_assoc($res);
|
||||
if((int)$row['num'] > 0) $errors[] = "TROOPS_MOVING";
|
||||
|
||||
|
||||
// 2. Incoming troops
|
||||
$q = "SELECT COUNT(*) as num
|
||||
FROM ".TB_PREFIX."movement m
|
||||
JOIN ".TB_PREFIX."vdata v ON v.wref = m.to
|
||||
WHERE v.owner=$uid
|
||||
AND m.proc=0
|
||||
AND m.endtime > $time
|
||||
AND (m.sort_type = 3 OR m.sort_type = 4)";
|
||||
|
||||
$res = mysqli_query($this->dblink,$q);
|
||||
if(!$res){ die("SQL ERROR (INCOMING): ".mysqli_error($this->dblink)); }
|
||||
|
||||
$row = mysqli_fetch_assoc($res);
|
||||
if((int)$row['num'] > 0) $errors[] = "INCOMING_TROOPS";
|
||||
|
||||
|
||||
// 3. Reinforcements
|
||||
$q = "SELECT COUNT(*) as num
|
||||
FROM ".TB_PREFIX."enforcement e
|
||||
JOIN ".TB_PREFIX."vdata v ON v.wref = e.vref
|
||||
WHERE v.owner = $uid
|
||||
AND e.from != e.vref";
|
||||
|
||||
$res = mysqli_query($this->dblink,$q);
|
||||
if(!$res){ die("SQL ERROR (REINFORCEMENTS): ".mysqli_error($this->dblink)); }
|
||||
|
||||
$row = mysqli_fetch_assoc($res);
|
||||
if((int)$row['num'] > 0) $errors[] = "REINFORCEMENTS";
|
||||
|
||||
|
||||
// 4. Wonder of the World
|
||||
$q = "SELECT COUNT(*) as num
|
||||
FROM ".TB_PREFIX."fdata f
|
||||
JOIN ".TB_PREFIX."vdata v ON v.wref=f.vref
|
||||
WHERE v.owner=$uid AND f.f99t=40";
|
||||
|
||||
$res = mysqli_query($this->dblink,$q);
|
||||
if(!$res){ die("SQL ERROR (WW): ".mysqli_error($this->dblink)); }
|
||||
|
||||
$row = mysqli_fetch_assoc($res);
|
||||
if((int)$row['num'] > 0) $errors[] = "WW";
|
||||
|
||||
|
||||
// 5. Artefacts
|
||||
$q = "SELECT COUNT(*) as num
|
||||
FROM ".TB_PREFIX."artefacts
|
||||
WHERE owner=$uid";
|
||||
|
||||
$res = mysqli_query($this->dblink,$q);
|
||||
if(!$res){ die("SQL ERROR (ARTEFACTS): ".mysqli_error($this->dblink)); }
|
||||
|
||||
$row = mysqli_fetch_assoc($res);
|
||||
if((int)$row['num'] > 0) $errors[] = "ARTEFACTS";
|
||||
|
||||
|
||||
// 6. Beginner protection (FIXAT)
|
||||
$q = "SELECT protect
|
||||
FROM ".TB_PREFIX."users
|
||||
WHERE id=$uid";
|
||||
|
||||
$res = mysqli_query($this->dblink,$q);
|
||||
if(!$res){ die("SQL ERROR (PROTECTION): ".mysqli_error($this->dblink)); }
|
||||
|
||||
$row = mysqli_fetch_assoc($res);
|
||||
|
||||
$protect = (int)$row['protect'];
|
||||
|
||||
if($protect > 0 && $protect > $time){
|
||||
$errors[] = "PROTECTION";
|
||||
}
|
||||
|
||||
|
||||
// =========================
|
||||
// 7. PRISONERS (FIX FINAL)
|
||||
// =========================
|
||||
|
||||
// 7.1 Enemy troops trapped in your villages
|
||||
$q = "SELECT COUNT(*) as num
|
||||
FROM ".TB_PREFIX."prisoners p
|
||||
JOIN ".TB_PREFIX."vdata v ON v.wref = p.wref
|
||||
WHERE v.owner = $uid";
|
||||
|
||||
$res = mysqli_query($this->dblink,$q);
|
||||
if(!$res){
|
||||
die("SQL ERROR (PRISONERS_IN): ".mysqli_error($this->dblink));
|
||||
}
|
||||
|
||||
$row = mysqli_fetch_assoc($res);
|
||||
$hasEnemyTrapped = (int)$row['num'];
|
||||
|
||||
|
||||
// 7.2 Your troops trapped in enemy villages
|
||||
$q = "SELECT COUNT(*) as num
|
||||
FROM ".TB_PREFIX."prisoners p
|
||||
JOIN ".TB_PREFIX."vdata v ON v.wref = p.from
|
||||
WHERE v.owner = $uid";
|
||||
|
||||
$res = mysqli_query($this->dblink,$q);
|
||||
if(!$res){
|
||||
die("SQL ERROR (PRISONERS_OUT): ".mysqli_error($this->dblink));
|
||||
}
|
||||
|
||||
$row = mysqli_fetch_assoc($res);
|
||||
$hasOwnCaptured = (int)$row['num'];
|
||||
|
||||
|
||||
// FINAL RULE
|
||||
if($hasEnemyTrapped > 0){
|
||||
$errors[] = "PRISONERS_IN";
|
||||
}
|
||||
|
||||
if($hasOwnCaptured > 0){
|
||||
$errors[] = "PRISONERS_OUT";
|
||||
}
|
||||
|
||||
// 8. Marketplace
|
||||
$q = "SELECT COUNT(*) as num
|
||||
FROM ".TB_PREFIX."movement m
|
||||
JOIN ".TB_PREFIX."vdata v ON v.wref = m.from
|
||||
WHERE v.owner = $uid
|
||||
AND m.proc = 0
|
||||
AND m.endtime > $time
|
||||
AND m.sort_type = 0";
|
||||
|
||||
$res = mysqli_query($this->dblink,$q);
|
||||
if(!$res){ die("SQL ERROR (MARKET): ".mysqli_error($this->dblink)); }
|
||||
|
||||
$row = mysqli_fetch_assoc($res);
|
||||
if((int)$row['num'] > 0) $errors[] = "MARKET";
|
||||
|
||||
// 9. Account deletion
|
||||
$q = "SELECT timestamp
|
||||
FROM ".TB_PREFIX."deleting
|
||||
WHERE uid = $uid";
|
||||
|
||||
$res = mysqli_query($this->dblink,$q);
|
||||
if(!$res){ die("SQL ERROR (DELETING): ".mysqli_error($this->dblink)); }
|
||||
|
||||
$row = mysqli_fetch_assoc($res);
|
||||
|
||||
if(!empty($row['timestamp']) && $row['timestamp'] > $time){
|
||||
$errors[] = "ACCOUNT_DELETION";
|
||||
}
|
||||
|
||||
return empty($errors) ? true : $errors;
|
||||
}
|
||||
|
||||
// no need to cache this method
|
||||
function getHeroDeadReviveOrInTraining($id) {
|
||||
|
||||
+48
-16
@@ -79,23 +79,55 @@ class Profile {
|
||||
*/
|
||||
|
||||
private function setvactionmode($post){
|
||||
global $database, $session, $form;
|
||||
global $database, $session;
|
||||
|
||||
if(isset($post['vac']) && $post['vac'] && isset($post['vac_days']) && $post['vac_days'] >= 2 && $post['vac_days'] <= 14){
|
||||
unset($_SESSION['wid']);
|
||||
$database->setvacmode($session->uid, $post['vac_days']);
|
||||
$database->activeModify(addslashes($session->username), 1);
|
||||
$database->UpdateOnline("logout");
|
||||
$session->Logout();
|
||||
header("Location: login.php");
|
||||
exit;
|
||||
}else{
|
||||
$form->add("vac", VAC_MODE_WRONG_DAYS);
|
||||
header("Location: spieler.php?s=".$session->uid);
|
||||
exit;
|
||||
}
|
||||
|
||||
}
|
||||
if(isset($post['vac']) && $post['vac'] && isset($post['vac_days']) && $post['vac_days'] >= 2 && $post['vac_days'] <= 14){
|
||||
|
||||
$check = $database->checkVacationRequirements($session->uid);
|
||||
|
||||
if($check !== true){
|
||||
|
||||
$messages = [
|
||||
"TROOPS_MOVING" => "There are no outgoing troops",
|
||||
"INCOMING_TROOPS" => "There are no incoming troops",
|
||||
"REINFORCEMENTS" => "You have reinforcements on your villages",
|
||||
"WW" => "You own a Wonder of the World",
|
||||
"ARTEFACTS" => "You own artefacts",
|
||||
"PROTECTION" => "You are still under beginner protection",
|
||||
"PRISONERS_IN" => "No units trapped in your traps",
|
||||
"PRISONERS_OUT" => "No units in enemy traps",
|
||||
"MARKET" => "Marketplace transport active",
|
||||
"ACCOUNT_DELETION" => "Account is scheduled for deletion"
|
||||
];
|
||||
|
||||
$output = "";
|
||||
|
||||
foreach($check as $err){
|
||||
$output .= ($messages[$err] ?? $err) . "<br>";
|
||||
}
|
||||
|
||||
$_SESSION['vac_error'] = $output;
|
||||
|
||||
header("Location: spieler.php?s=5");
|
||||
exit;
|
||||
}
|
||||
|
||||
// TOTUL OK → intră în vacanță
|
||||
unset($_SESSION['wid']);
|
||||
$database->setvacmode($session->uid, $post['vac_days']);
|
||||
$database->activeModify(addslashes($session->username), 1);
|
||||
$database->UpdateOnline("logout");
|
||||
$session->Logout();
|
||||
|
||||
header("Location: login.php");
|
||||
exit;
|
||||
|
||||
} else {
|
||||
$_SESSION['vac_error'] = "Vacation days must be between 2 and 14";
|
||||
header("Location: spieler.php?s=5");
|
||||
exit;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Function to vacation mode - by advocaite and Shadow
|
||||
|
||||
Reference in New Issue
Block a user