prepare( 'SELECT id FROM rooms WHERE code = :code' ); $stmnt->execute( array( 'code' => $room_code ) ); $result = $stmnt->fetch( PDO::FETCH_ASSOC ); if( $result === false || empty( $result ) ) { return false; } return $result['id']; } public function joinRoom($room_id) { $_SESSION['room'] = $room_id; header( 'Location: ?c=faq' ); return true; } public function createRoom(string $room_name) { $secret = $this->generateRandomStr( 15 ); $stmnt = Database::getConnection()->prepare( 'INSERT INTO rooms ( name, owner_sid, code ) VALUES ( :name, :owner_sid, :code )' ); $stmnt->execute( array( 'name' => $room_name, 'owner_sid' => $secret, 'code' => $this->generateRandomStr( CODE_LENGTH ) ) ); $id = Database::getConnection()->lastInsertId( ); setcookie( 'owner_room_' . $id, $secret, time()+60*60*24*365 ); if( empty( $id ) ) { return false; } return $id; } public function generateRandomStr( $length = 4 ) { $characters = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'; $charactersLength = strlen($characters); $randomString = ''; for ($i = 0; $i < $length; $i++) { $randomString .= $characters[rand(0, $charactersLength - 1)]; } return $randomString; } public function setSecret( $room_id, string $secret) { setcookie( 'owner_room_' . $room_id, $secret, time()+60*60*24*365 ); } }