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);