PHP code example of goldnead / statamic-teams

1. Go to this page and download the library: Download goldnead/statamic-teams library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

goldnead / statamic-teams example snippets


use Goldnead\Teams\Facades\Teams;

$choir = Teams::create('Kammerchor Köln', $conductor, ['join_method' => 'join_code']);
Teams::invite($choir, '[email protected]', 'member', ['voice_part' => 'alto'], actor: $conductor);

// in a controller behind `teams.current`
$team = Teams::current();
abort_unless(Teams::can($request->user(), $team, 'invite members'), 403);

use Goldnead\Teams\Facades\Teams;

// Teams
Teams::create(string $name, $owner = null, array $attributes = []): Team   // type, join_method, settings, billing, meta
Teams::update(Team $team, array $attributes, $actor = null): Team          // name, join_method, settings (merged), billing (merged)
Teams::delete(Team $team, $actor = null): void
Teams::find(int|string $idOrUuid): ?Team
Teams::personalTeam($user): Team                                          // created on first use
Teams::regenerateJoinCode(Team $team, $actor = null): string
Teams::transferOwnership(Team $team, $to, $actor = null): Team            // old owner becomes admin

// Members
Teams::teamsOf($user): Collection
Teams::members(Team $team): Collection                                   // of Membership
Teams::addMember(Team $team, $user, ?string $role = null, array $meta = [], $actor = null): Membership
Teams::removeMember(Team $team, $user, $actor = null): void               // actor === user means leaving
Teams::leave(Team $team, $user): void
Teams::changeRole(Team $team, $user, string $role, $actor = null): Membership
Teams::updateMemberMeta(Team $team, $user, array $meta, $actor = null): Membership  // null removes a key

// Current team
Teams::current($user = null): ?Team        // the middleware's team, else the user's current one
Teams::currentOrFail($user = null): Team   // or TeamsException team_ions = [], ?Team $team = null, $actor = null): array
Teams::updateRole(string $handle, array $attributes, ?Team $team = null, $actor = null): array   // label, permissions
Teams::deleteRole(string $handle, ?Team $team = null, ?string $reassignTo = null, $actor = null): int  // members moved
Teams::resetRole(string $handle): array               // a global role back to teams.roles
Teams::roleUsage(string $handle, ?Team $team = null): array   // members, invitations

// Entitlements and payments
Teams::entitlementSubject(Team $team)                 // SubjectReference('team', id)
Teams::entitlementSubjectsFor($user): array           // one per team of the user
Teams::allows($user, string $product, $personalSubject = null): bool
Teams::checkoutBuyer(Team $team, $payer = null): array
Teams::checkoutDetails(Team $team, $payer = null): array
Teams::checkout(Team $team, string|array $products, $payer = null, ?string $returnUrl = null): ?object

// Import
Teams::import(array $data): Team

// GET    /teams/{team}/roles                 Teams::roles($team) + Teams::permissions()
// POST   /teams/{team}/roles                 Teams::createRole($handle, $label, $permissions, $team, $user)
// PATCH  /teams/{team}/roles/{role}          Teams::updateRole($role, $request->only('label', 'permissions'), $team, $user)
// DELETE /teams/{team}/roles/{role}?reassign_to=member
//                                            Teams::deleteRole($role, $team, $reassignTo, $user)

Route::middleware(['auth', 'teams.current'])->group(...);            // named team, else the user's current one
Route::middleware(['auth', 'teams.current:

// config/teams.php
'current' => [
    'header' => 'X-Tenant-ID',
    'parameter' => 'tenant_id',
    'route_parameters' => ['tenant', 'tenant_id'],
    'fallback_to_current' => false,   // like currentTenantId(): no workspace named, 422
],
'meta_labels' => ['voice_part' => 'Voice part'],

Entitlements::grant(Teams::entitlementSubject($team), 'choir-plan', 'manual');

Teams::allows($user, 'choir-plan');                                          // through any of the user's teams
Teams::allows($user, 'lifetime', new SubjectReference('user', $user->id())); // personally or through a team

Entitlements::allows($user, 'choir-plan');           // true while the user is in a team holding it
Entitlements::consume($user, 'analyses');            // booked at the team: the holder of the limit
Entitlements::remaining(Teams::entitlementSubject($team), 'analyses');

$result = Teams::checkout($team, 'choir-plan-yearly', auth()->user(), url('/thanks'));
return redirect($result->checkoutUrl);