data = $data; } /** * Łączy... * * */ public function connect() { $this->db = DataBase::initialize($this->data, $this->data['name']); if($this->db && $this->db->query("SELECT * FROM `{$this->data['prefix']}_amxadmins`")) { return true; } return false; } /** * Zwraca ilość serwerów w danym połączeniu amxbans * * @return array */ public function serverList() { return $this->db->query("SELECT * FROM `{$this->data['prefix']}_serverinfo`")->fetchAll(); } /** * Zwraca dane konkretnego serwera * * @param integer * @return array */ public function server($id) { $stmt = $this->db->prepare("SELECT * FROM `{$this->data['prefix']}_serverinfo` where `id`=? LIMIT 1"); $stmt->execute(array($id)); return $stmt->fetch(); } /** * Pobiera wybranego użytkownika.. * * @param integer * @return array * @access public */ public function uzytkownik($id) { $stmt = $this->db->prepare("SELECT * FROM `{$this->data['prefix']}_amxadmins` where `id` = ? LIMIT 1"); $stmt -> execute(array($id)); return $stmt->fetch(); } /** * Dodaje flagi * * $sid - server id * $flags - flagi np. de * $upraw - uprawnienia np. abcdefg * $dane - wymagane dane, zalezne od typu * * add(4, 'de', 'abcdefg', array('nickname' => 'byCZEK', 'na_co' => 'STEAM_0:0:12676239', 'dni' => 30)); * * daje admina na 30 dni z flagami abcdefg na steamid STEAM_0:0:12676239, nick gracza byCZEK, serwer id 4 */ public function add($sid, $flags, $upraw, $dane) { $user = ($flags == 'a') ? $dane['nick'] : $dane['steam']; $pass = ($flags == 'a') ? md5($dane['password']) : ''; $dni = $dane['dni']; if($user == '') { return array(0, 'Nie podałeś '.($flags == 'a' ? 'nicku' : 'steama' ).' na serwerze.'); } if($flags == 'ce' && !$this->SprawdzDane('steamid', $user)) { return array(0, 'Podany steam id nie jest poprawny'); } // Pobierzmy dane $flagi = $this->SprawdzDostepnosc($sid, $user); // Jeśli wynik nie istnieje if(!$flagi[1]) { $dat = time(); $exp = $dat + (Date::DAY * $dni); $stmt = $this->db->prepare("INSERT INTO `{$this->data['prefix']}_amxadmins` VALUES ( NULL, ?, ?, ?, ?, ?, ?, 0, 0, ?, ?, ?)"); $stmt->execute(array($user, $pass, $upraw, $flags, $user, $user, $dat, $exp, $dni)); $user_id = $this->db->lastInsertId(); $stmt = $this->db->prepare("INSERT INTO `{$this->data['prefix']}_admins_servers` VALUES (?, ?, '', 'no')"); $stmt->execute(array($user_id, $sid)); } // Jeśli wynik istnieje else { $nowe = $this->wyznaczFlagi($upraw, $flagi[0]); // Zapobiega powtarzaniu się flag $this->ZmienFlagi($nowe, $flagi[1]); $user_id = $flagi[1]; if($flags == 'a') { return array(1, 'Flagi zostały dodane, lecz hasło nie uległo zmianie dla bezpieczeństwa. Zaloguj się na serwerze podając stare hasło', $flagi[1]); } } return array(1, 'Flagi zostały dodane, wejdź na serwer i ciesz się zakupem !', $user_id); } /** * Nawet nie wiem co ta metoda robi, to już wymysł byCZKA * * * @param string * @param string * @return array */ private function SprawdzDostepnosc($sid, $dane) { $stmt = $this->db->prepare("SELECT a.`id`, a.`access`FROM `{$this->data['prefix']}_amxadmins` a, `{$this->data['prefix']}_admins_servers` b WHERE a.`steamid` = ? AND a.`id` = b.`admin_id` AND b.`server_id` = ?"); $stmt->execute(array($dane, $sid)); $stmt = $stmt->fetch(); return array($stmt['access'], $stmt['id']); } /** * * * */ public function extend($amxbans_member_id, $time, $flags) { $stmt = $this->db->prepare("SELECT `access`, `flags` FROM `{$this->data['prefix']}_amxadmins` WHERE `id` = ?"); $stmt -> execute(array($amxbans_member_id)); $stmt = $stmt->fetch(); $flags = $this->wyznaczFlagi($flags, $stmt['access']); $stmt = $this->db->prepare("UPDATE `{$this->data['prefix']}_amxadmins` SET `expired` = ?, `access` = ? where `id` = ?"); $stmt->execute(array($time, $flags, $amxbans_member_id)); } /** * Usuwa flagi... * * * @param integer * @param string * * @access public */ public function usunFlagi($amxbans_member_id, $flagi) { $stmt = $this->db->prepare("SELECT `id`, `access` FROM `{$this->data['prefix']}_amxadmins` where `id` = ?"); $stmt->execute(array($amxbans_member_id)); $stmt = $stmt->fetch(); $access = $stmt['access']; $flagi = str_split($flagi); for($i=0; $iZmienFlagi($access, $amxbans_member_id); } /** * Wyznacza flagi w taki sposób aby nie było problemu z dublowaniem... * * * @param string * @param integer * @return string */ function wyznaczFlagi($nowe, $aktualne) { $flagi = $nowe.$aktualne; $flagi = str_split($flagi); sort($flagi); $c=count($flagi); $flagi[$c] = ''; $ret = ''; for($i = 0; $i < $c ; $i++) { if($flagi[$i] == $flagi[$i+1]) { continue; } $ret .= $flagi[$i]; } return $ret; } /** * Updatuje flagi... * * @param string * @param integer * @return bool */ function ZmienFlagi($nowe, $aid) { $stmt = $this->db->prepare("UPDATE `{$this->data['prefix']}_amxadmins` SET `access` = ? WHERE `id` = ?"); return $stmt->execute(array($nowe, $aid)); } /** * Sprwadza poprawność danych... * * @param string * @param string * @return bool */ public function SprawdzDane($type, $value) { $regexp = ''; switch(mb_strtolower($type)) { case 'steamid': $regex = '/^STEAM_0:(0|1):[0-9]{1,10}$/'; break; case 'ip': $regex = '/^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$/'; break; } return preg_match($regex, $value) ? true : false; } } ?>