| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364 |
- <?php
-
- class MinecraftPayAPI
- {
- /**
- * @API-Callback
- * @Path servers
- *
- * @Request-Method GET
- *
- * @return MinecraftServer[]
- */
- public function GetAllServers()
- {
- return MinecraftServer::GetAll()->toArray();
- }
-
- /**
- * @API-Callback
- * @Path servers/:id
- * @Require-Login
- * @Require-Permission Minecraft-Pay-Settings
- *
- * @Request-Method PATCH
- *
- * @Parameterized
- *
- * @param MinecraftServer $server server to edit
- *
- * @paramget id path id required int
- * @paramget server post server required MinecraftServer
- *
- * @return APIResult< MinecraftServer >
- */
- public static function UpdateServer( int $id, MinecraftServer $server )
- {
- $o = MinecraftServer::GetByID( $id );
- if ( $o == null ) {
- $results[] = new APIResult( 'Missing ID', false, $server );
- }
-
- if ( $server->GetName() != null ) $o->SetName( $server->GetName() );
- if ( $server->GetDomain() != null ) $o->SetDomain( $server->GetDomain() );
- if ( $server->GetPort() != null ) $o->SetPort( $server->GetPort() );
- if ( $server->GetPassword() != null ) $o->SetPassword( $server->GetPassword() );
- if ( $server->GetServerPath() != null ) $o->SetServerPath( $server->GetServerPath() );
- if ( $server->GetPerMonthPrice() != null ) $o->SetPerMonthPrice( $server->GetPerMonthPrice() );
- if ( $server->GetMaxPerMonthPrice() != null ) $o->SetMaxPerMonthPrice( $server->GetMaxPerMonthPrice() );
-
- $r = $o->Save();
- return new APIResult( $r ? 'Saved successfully' : 'Saving failed', $r, $r ? $o : MinecraftServer::GetByID( $id ) );
- }
-
- /**
- * @API-Callback
- * @Path servers/:id
- * @Require-Login
- * @Require-Permission Minecraft-Pay-Settings
- *
- * @Request-Method DELETE
- *
- * @Parameterized
- *
- * @paramget id path id required int
- *
- * @return APIResult< MinecraftServer >
- */
- public static function DeleteServer( int $id )
- {
- if ( !is_numeric( $id ) ) return new APIResult( 'Invalid ID', false, null );
- $server = MinecraftServer::GetByID( $id );
- $result = null;
- if ( !$server ) {
- $result = new APIResult( 'Server does not exist', false, null );
- } else if ( $server->DELETE() ) {
- $result = new APIResult( 'Deleted server successfully', true, null );
- } else {
- $result = new APIResult( 'Deleting server failed', false, $server );
- }
- return $result;
- }
-
- /**
- * @API-Callback
- * @Path servers
- * @Require-Login
- * @Require-Permission Minecraft-Pay-Settings
- *
- * @Request-Method POST
- *
- * @Parameterized
- *
- * @param MinecraftServer $server to add
- *
- * @paramget server post server required MinecraftServer
- *
- * @return APIResult< MinecraftServer >
- */
- public static function AddServer( MinecraftServer $server )
- {
- $o = new MinecraftServer();
-
- $o->SetName( $server->GetName() );
-
- $s = $o->Save();
-
- return new APIResult( $s ? 'Created server successfully' : 'The server could not be created', $s, $s ? $o : null );
- }
-
- /**
- * @API-Callback
- * @Path users
- * @Require-Login
- * @Require-Permission Minecraft-Possess-User
- *
- * @Request-Method GET
- *
- * @return MinecraftUser[]
- */
- public function GetAllUsers()
- {
- return MinecraftUser::GetAll( [ 'OwnerID' => API::$User->GetID() ] )->toArray();
- }
-
- /**
- * @API-Callback
- * @Path users/:id/subscription-states
- * @Require-Login
- * @Require-Permission Minecraft-Possess-User
- *
- * @Request-Method GET
- *
- * @Parameterized
- *
- * @paramget id path id required int
- *
- * @return Map< int, boolean >
- * @noinspection PhpDocSignatureInspection
- * @noinspection PhpUndefinedClassInspection
- */
- public function GetAllSubscriptionStates( int $id )
- {
- $user = MinecraftUser::GetByID( $id );
- $data = [];
- foreach ( MinecraftServer::GetAll() as $server ) {
- $data[] = [ $server->GetID(), $server->IsUnlocked( $user ) ];
- }
- return $data;
- }
-
- /**
- * @API-Callback
- * @Path users/:id/subscribe-server/:serverId
- * @Require-Login
- * @Require-Permission Minecraft-Possess-User
- *
- * @Request-Method GET
- *
- * @Parameterized
- *
- * @paramget id path id required int
- * @paramget serverId path serverId required int
- *
- * @return APIResult< boolean >
- */
- public function SubscribeServer( int $id, int $serverId )
- {
- $u = MinecraftUser::GetByID( $id );
- $s = MinecraftServer::GetByID( $serverId );
- $result = new APIResult( '', false, false );
-
- if ( is_null( $s ) ) {
- $result->Message( 'Unknown server' );
- } else if ( is_null( $u ) ) {
- $result->Message( 'Unknown user' );
- } else {
- if ( $s->Unlock( $u ) ) {
- if ( !$u->HasSubscripted( $s ) ) {
- $ms = new MinecraftServerSubscription();
- $ms->SetConcerningServer( $s );
- $ms->SetUnlockedUser( $u );
- $result->Success( $ms->Save() );
- $result->Message( $result->Success() ? 'Unlock successful' : 'Unlock failed' )->Obj( $result->Success() );
- if ( !$result->Success() ) $s->Lock( $u );
- } else {
- $result->Message( 'Unlock successful' )->Success( true )->Obj( true );
- }
- } else {
- $result->Message( 'Unlock failed' )->Success( false );
- }
- }
-
- return $result;
- }
-
- // /**
- // * @API-Callback
- // * @Path users/:id
- // * @Require-Login
- // * @Require-Permission Minecraft-Possess-User
- // *
- // * @Request-Method PATCH
- // *
- // * @Parameterized
- // *
- // * @param MinecraftUser $user user to edit
- // *
- // * @paramget id path id required int
- // * @paramget user post user required MinecraftUser
- // *
- // * @return APIResult< MinecraftUser >
- // */
- // public static function UpdateUser( int $id, MinecraftUser $user ) {
- // $o = MinecraftUser::GetByID( $id );
- // if ( $o == null ) {
- // $results[] = new APIResult( 'Missing ID', false, $user );
- // }
-
- // if ( $user->GetUsername() != null ) $o->SetUsername( $user->GetUsername() );
- // if ( API::$User->GetID() != $user->GetOwner()->GetID() ) {
- // return new APIResult( 'This minecraft user does not belong to you', false, null );
- // }
-
- // $r = $o->Save();
- // return new APIResult( $r ? 'Saved successfully' : 'Saving failed', $r, $r ? $o : MinecraftUser::GetByID( $id ) );
- // }
-
- /**
- * @API-Callback
- * @Path users/:id
- * @Require-Login
- * @Require-Permission Minecraft-Possess-User
- *
- * @Request-Method DELETE
- *
- * @Parameterized
- *
- * @paramget id path id required int
- *
- * @return APIResult< MinecraftUser >
- */
- public static function DeleteUser( int $id )
- {
- if ( !is_numeric( $id ) ) return new APIResult( 'Invalid ID', false, null );
- $user = MinecraftUser::GetByID( $id );
- $result = null;
- if ( !$user ) {
- $result = new APIResult( 'User does not exist', false, null );
- } else if ( $user->DELETE() ) {
- $result = new APIResult( 'Deleted user successfully', true, null );
- } else {
- $result = new APIResult( 'Deleting user failed', false, $user );
- }
- return $result;
- }
-
- /**
- * @API-Callback
- * @Path users
- * @Require-Login
- * @Require-Permission Minecraft-Possess-User
- *
- * @Request-Method POST
- *
- * @Parameterized
- *
- * @param MinecraftUser $user to add
- *
- * @paramget user post user required MinecraftUser
- *
- * @return APIResult< MinecraftUser >
- */
- public static function AddUser( MinecraftUser $user )
- {
- $o = new MinecraftUser();
-
- $o->SetUsername( $user->GetUsername() );
- $o->SetOwner( API::$User );
-
- $s = $o->Save();
-
- return new APIResult( $s ? 'Created user successfully' : 'The user could not be created', $s, $s ? $o : null );
- }
-
- /**
- * @API-Callback
- * @Path charges
- * @Require-Login
- * @Require-Permission Minecraft-Possess-User
- *
- * @Request-Method GET
- *
- * @return MinecraftUserAccount[]
- */
- public function GetAllCharges()
- {
- return MinecraftUserAccount::GetAll( [ 'DebtorID' => API::$User->GetID() ] )->toArray();
- }
-
- /**
- * @API-Callback
- * @Path users/:id/grant-user-right
- * @Require-Login
- * @Require-Permission Minecraft-Pay-Settings
- *
- * @Request-Method POST
- *
- * @Parameterized
- *
- * @paramget id path id required int
- *
- * @return APIResult< boolean >
- */
- public function GrantUserRight( int $id )
- {
- $u = User::GetByID( $id );
- $r = new APIResult( '', false, false );
-
- $s = false;
- if ( !is_null( $u ) ) {
- $p = Permission::SEARCH( 'Minecraft-Possess-User' );
- $s = $p->grant_user( $u->GetID(), true );
-
- $r->Message( 'Right granted successfully' )->Success( true )->Obj( true );
- } else $r->Message( 'Could not find user' );
-
- return $r;
- }
-
- /**
- * @API-Callback
- * @Path users/:id/acredit
- * @Require-Login
- * @Require-Permission Minecraft-Pay-Settings
- *
- * @Request-Method POST
- *
- * @Parameterized
- *
- * @paramget id path id required int
- * @paramget credit post credit required MinecraftUserAccount
- *
- * @return APIResult< MinecraftUserAccount >
- */
- public function Acredit( int $id, MinecraftUserAccount $credit )
- {
- $r = new APIResult( '', false, null );
- $ac = new MinecraftUserAccount();
- $u = User::GetByID( $id );
- if ( is_null( $u ) ) {
- $r->Message( 'Missing user' );
- } else {
- $ac->SetMod( $credit->GetMod() );
- $ac->SetComment( $credit->GetComment() );
- $ac->SetDebtor( $u );
-
- $r->Success( ! !$ac->Save() );
- $r->Message( $r->Success() ? 'Credit successful' : 'Credit failed' );
- if ( $r->Success() ) $r->Obj( $ac );
- }
-
- return $r;
- }
- }
|