| | |
| | | namespace JVBase\managers; |
| | | |
| | | use Exception; |
| | | use JVBase\inc\managers\ErrorHelper; |
| | | use JVBase\Instance; |
| | | use JVBase\managers\queue\executors\InvitationExecutor; |
| | | use JVBase\managers\queue\Queue; |
| | | use JVBase\managers\queue\TypeConfig; |
| | | use JVBase\registrar\Registrar; |
| | | use JVBase\base\Site; |
| | |
| | | |
| | | class InvitationsManager |
| | | { |
| | | use Instance; |
| | | use Instance, ErrorHelper; |
| | | protected array $inviteConfig; |
| | | protected CustomTable $table; |
| | | protected int $expiryDays = 14; |
| | |
| | | /** |
| | | * Build invite types from JVB constants |
| | | * Combines JVB_MEMBERSHIP['can_invite'] and invitable taxonomies |
| | | * TODO: Should be accessible via Site::getInstance()->membership()\ |
| | | * |
| | | */ |
| | | protected function buildInviteTypes(): array |
| | | { |
| | | $invitable = $this->cache->remember( |
| | | return $this->cache->remember( |
| | | 'invitableTypes', |
| | | function () { |
| | | $types = []; |
| | |
| | | return $types; |
| | | } |
| | | ); |
| | | return $invitable; |
| | | |
| | | } |
| | | |
| | |
| | | |
| | | } catch (Exception $e) { |
| | | $this->table->rollback(); |
| | | |
| | | JVB()->error()->log( |
| | | 'invitation_create', |
| | | 'Error processing invitations: ' . $e->getMessage(), |
| | | ['user_id' => $userID], |
| | | ); |
| | | $this->logError($e->getMessage(), 'processInvitations', ['user_id' => $userID]); |
| | | |
| | | return [ |
| | | 'success' => false, |
| | |
| | | |
| | | // Grant capabilities |
| | | $user = get_userdata($userID); |
| | | $user->add_cap('skip_moderation', true); |
| | | $user->add_cap('skip_moderation'); |
| | | |
| | | return true; |
| | | }); |