From d665230ad5c7ceaae3c11e525351054b1ea1612b Mon Sep 17 00:00:00 2001 From: marko Date: Fri, 19 Jan 2024 05:12:42 +0100 Subject: [PATCH] wip: pmelo --- homepage/participo/lib/participoLib/user.php | 25 +---- homepage/participo/pmelo.inc.php | 97 ++++++++++++++++++-- homepage/participo/pmelo.php | 69 +++++++++++--- 3 files changed, 146 insertions(+), 45 deletions(-) diff --git a/homepage/participo/lib/participoLib/user.php b/homepage/participo/lib/participoLib/user.php index fc0f19c..9f62943 100644 --- a/homepage/participo/lib/participoLib/user.php +++ b/homepage/participo/lib/participoLib/user.php @@ -248,7 +248,7 @@ SQL; public function getConfig() { - return $this->$config; + return $this->config; } // static functions @@ -325,27 +325,4 @@ SQL; } return User::fromDbArray($response[0]); } - - public static function loadFromDbByAttribute(int $attributeId){ - $query = - "SELECT DISTINCT" . - " `wkParticipo_Users`.* " . - " FROM `wkParticipo_Users`" . - " JOIN `wkParticipo_user<=>userAttributes`" . - " ON `wkParticipo_user<=>userAttributes`.`userId` = `wkParticipo_Users`.`id`" . - " WHERE `wkParticipo_user<=>userAttributes`.`attributeId` = 4". - " ORDER BY `wkParticipo_Users`.`id` ASC;"; - - $response = dbConnector::query($query); - - // Postprocessing - // - convert the comma separated list into an array - foreach ($response as &$user) { - $user["eMail"] = explode(",", $user["eMail"]); - foreach ($user["eMail"] as &$email) { - $email = trim($email); - } - } - return $response; - } } diff --git a/homepage/participo/pmelo.inc.php b/homepage/participo/pmelo.inc.php index 281ab08..7f83ea7 100644 --- a/homepage/participo/pmelo.inc.php +++ b/homepage/participo/pmelo.inc.php @@ -1,16 +1,99 @@ +class PmElo{ + function __construct() + { + // starting/continuing a session + session_start(); + + // create 'pmelo' section in the sessions data + if(!array_key_exists('pmelo', $_SESSION)){ + $_SESSION['pmelo'] = []; + } + // - data storage for id-s of chosen fighters + if(!array_key_exists('fighterIds', $_SESSION)){ + $_SESSION['pmelo']['fighterIds'] = null; + } + + // check for action in post data + if(array_key_exists('pmelo', $_POST)){ + if(array_key_exists('fighterIds', $_POST['pmelo'])){ + $this->fighters = array_map('User::loadFromDb', $_POST['pmelo']['fighterIds']); + } + } + + if(!is_file("pmeloRanking.json")){ + $this->log['info'][] = "Couldn't find `pmeloRanking.json`. Create a new one!"; + file_put_contents("pmeloRanking.json", json_encode([])); + } + + // init members + $this->trainees = self::getTrainees(); + $this->rankings = self::createRankings(); + + } + + public static function getTrainees(){ + $traineeList = array_map('User::fromDbArray', User::dbSelectWithAttribute(4)); + $traineeAssocArray = []; + foreach($traineeList as $trainee){ + $traineeAssocArray[$trainee->getId()] = $trainee; + } + return $traineeAssocArray; + } + public static function loadRankings(){ + return json_decode(file_get_contents("pmeloRanking.json")); + } + public static function saveRankings(array $rankings){ + file_put_contents("pmeloRankings.json", json_encode($rankings)); + } + + public function createRankings(){ + // load the last state of the ranking + $loadedRanking = self::loadRankings(); + + // check if the ranked trainees still are in training + $cleanRanking = []; + $toBeInsertedTrainees = []; + foreach($loadedRanking as $rank=>$id){ + if(array_key_exists($id, $this->trainees)){ + $cleanRanking[] = $id; + continue; + } + // id of the not in the ranking, we have to insert + $toBeInsertedTrainees[$id] = $this->trainees[$id]; + } + + usort($toBeInsertedTrainees, function($lhs, $rhs){return $lhs < $rhs ? -1 : 1;}); + var_dump($toBeInsertedTrainees); + + // insert new trainees in the ranking + // foreach($this->trainees as $trainee){ + // if(empty($this->rankings)){ + + // } + // } + } + + public $log = ['error'=>[], 'warning'=>[], 'info'=>[]]; + public $fighters = null; + public $trainees = null; + // list of id-s in the order of the current ranking + public $rankings = null; +} \ No newline at end of file diff --git a/homepage/participo/pmelo.php b/homepage/participo/pmelo.php index faf1ccf..f7157ec 100644 --- a/homepage/participo/pmelo.php +++ b/homepage/participo/pmelo.php @@ -37,21 +37,62 @@
-

pmElo

- -
-
- - - -
-
+

pmElo

+
+
+ + + +
+
+ + + + + + + fighters)) foreach($pmelo->fighters as $fighter){ + echo("".PHP_EOL); + } + ?> + +
PlatzNameAufstieg
#".$fighter->getFirstname()." ".$fighter->getName()."^
+ +