public function get($planet_id, $nocache = false) { if ($nocache == true) { $this->instance = array(); } $needToSave = false; if (isset($this->instance[$planet_id])) { return $this->instance[$planet_id]; } $res = $this->redis->hgetall("ressource_" . $planet_id); if (count($res) > 0) { $json = $res['json']; } else { $req = $this->db->query('SELECT r.`id`, r.`user_id`, r.`planet_id`, r.`last_date`, r.`energie`, r.`metaux`, r.`cristaux`, r.`population`, r.`tetranium`, r.`metaux_grow`, r.`cristaux_grow`, r.`population_grow`, r.`tetranium_grow`, r.`metaux_productivity`, r.`cristaux_productivity`, r.`tetranium_productivity`, r.`limit_cristaux`, r.`limit_population`, r.`limit_metaux`, r.`limit_tetranium`, r.`debris_cristal`, r.`debris_tetranium`, r.`debris_metal`, t.`race` FROM `ressources` r LEFT JOIN user t ON t.user_id = r.user_id WHERE r.`planet_id` = "' . $planet_id . '"'); $race = $req->row['race']; unset($req->row['race']); $json = json_encode($req->row); if ($this->users->isLogged() && $_SESSION['user']['planet_id'] == $planet_id) { $needToSave = true; } $terrains = $this->db->query('SELECT pt.* FROM `planete_type_link` ptl LEFT JOIN `planete_type` pt ON pt.`id` = ptl.`id_planet_type` WHERE ptl.`id_planet` = "' . $planet_id . '"'); $metaux = 0; $cristaux = 0; $tetranium = 0; if ($terrains->count > 0) { foreach ($terrains->rows as $t) { $metaux += $t['metal']; $cristaux += $t['cristal']; $tetranium += $t['tetranium']; } } $terrains = array('metaux' => $metaux, 'cristaux' => $cristaux, 'tetranium' => $tetranium); } $r = new ressource($json); if (isset($race) && $race == "mineur") { $r->bonusRaideur(); } if (isset($terrains)) { $r->growTerrains($terrains); } $this->instance[$planet_id] = $r; if ($needToSave) { self::saveRedis($this->instance[$planet_id]->getDatas()); } return $this->instance[$planet_id]; }