martin3r/platform-meetings
Composer 安装命令:
composer require martin3r/platform-meetings
包简介
README 文档
README
Modul für Meeting-Verwaltung mit Microsoft 365 Calendar Integration.
Features
- ✅ Meeting-Verwaltung (erstellen, bearbeiten, löschen)
- ✅ Teilnehmer-Verwaltung mit RSVP-Status
- ✅ Agenda mit Kanban Board (analog zum Planner)
- ✅ Serientermine (Recurring Meetings)
- ✅ Microsoft 365 Calendar Integration
- ✅ Bidirektionaler RSVP-Sync (Outlook ↔ App)
- ✅ Webhook-Support für automatische Updates
Installation
- Modul in
composer.jsondes Hauptprojekts registrieren:
{
"repositories": [
{
"type": "path",
"url": "./platform/modules/meetings"
}
],
"require": {
"martin3r/platform-meetings": "*"
}
}
-
composer updateausführen -
Migrationen ausführen:
php artisan migrate
- Commands in
app/Console/Kernel.phpregistrieren (für Scheduler):
protected function schedule(Schedule $schedule) { $schedule->command('meetings:generate-recurring')->daily(); $schedule->command('meetings:renew-subscriptions')->daily(); }
Microsoft 365 Integration
1. Scopes erweitern
In platform/core/resources/views/components/teams-sso-script.blade.php:
microsoftTeams.authentication.getAuthToken({ resources: [ 'https://graph.microsoft.com/User.Read', 'https://graph.microsoft.com/Calendars.ReadWrite', 'https://graph.microsoft.com/Calendars.ReadWrite.Shared', 'https://graph.microsoft.com/OnlineMeetings.ReadWrite' // Optional für Teams-Meetings ], silent: true })
2. Token-Speicherung
Der MicrosoftGraphCalendarService benötigt Access Tokens. Aktuell werden diese aus:
- Request Header
X-Microsoft-Access-Token - Session
microsoft_access_token_{user_id}
TODO: Token-Persistierung implementieren:
- Option 1:
user_oauth_tokensTabelle - Option 2: User-Model erweitern mit
microsoft_access_token(encrypted) - Option 3: Laravel Socialite Token-Speicherung nutzen
3. Webhook-Endpoint konfigurieren
Der Webhook-Endpoint ist: /meetings/webhook/microsoft-calendar
Stelle sicher, dass dieser Endpoint öffentlich erreichbar ist (für Microsoft Graph API).
Verwendung
Meeting erstellen
use Platform\Meetings\Models\Meeting; use Platform\Meetings\Models\MeetingParticipant; use Platform\Meetings\Services\MicrosoftGraphCalendarService; $meeting = Meeting::create([ 'title' => 'Team Meeting', 'start_date' => now()->addDay(), 'end_date' => now()->addDay()->addHour(), 'location' => 'Konferenzraum A', ]); // Teilnehmer hinzufügen MeetingParticipant::create([ 'meeting_id' => $meeting->id, 'user_id' => $userId, 'role' => 'attendee', ]); // Zu Microsoft Calendar syncen $calendarService = app(MicrosoftGraphCalendarService::class); $calendarService->createEvent($meeting);
Serientermin erstellen
use Platform\Meetings\Models\RecurringMeeting; $recurring = RecurringMeeting::create([ 'title' => 'Wöchentliches Team Meeting', 'start_time' => '10:00:00', 'end_time' => '11:00:00', 'recurrence_type' => 'weekly', 'recurrence_interval' => 1, 'next_meeting_date' => now()->next('Monday'), ]); // Meetings werden automatisch durch Command generiert
RSVP-Status synchronisieren
$calendarService = app(MicrosoftGraphCalendarService::class); $calendarService->syncParticipantResponses($meeting);
Commands
meetings:generate-recurring- Generiert Meetings aus Serienterminen (täglich ausführen)meetings:renew-subscriptions- Erneuert ablaufende Webhook-Subscriptions (täglich ausführen)
Models
Meeting- Haupt-Entity für MeetingsMeetingParticipant- Teilnehmer mit RSVP-StatusMeetingAgendaItem- Agenda-Items für Kanban BoardMeetingAgendaSlot- Spalten für Kanban BoardRecurringMeeting- SerientermineAppointment- User-spezifische Termine (für Kalender-Sync)MicrosoftCalendarSubscription- Webhook-Subscriptions
Policies
MeetingPolicy- Berechtigungen für MeetingsAppointmentPolicy- Berechtigungen für Appointments
TODO / Offene Punkte
- Token-Speicherung: Access Tokens persistent speichern
- Scope-Erweiterung: Scopes in Teams SSO Script erweitern
- Teams-Meetings: Online-Meeting-Erstellung implementieren
- UI-Verbesserungen:
- Agenda Item Bearbeitung
- Teilnehmer-Verwaltung UI
- Recurring Meeting UI
- Error Handling: Besseres Error Handling für Graph API Calls
- Testing: Unit Tests für Services
Struktur
meetings/
├── composer.json
├── config/
│ └── meetings.php
├── database/
│ └── migrations/
├── resources/
│ └── views/
│ └── livewire/
├── routes/
│ ├── web.php
│ └── guest.php
└── src/
├── Console/
│ └── Commands/
├── Http/
│ └── Controllers/
├── Livewire/
├── Models/
├── Policies/
├── Services/
└── MeetingsServiceProvider.php
martin3r/platform-meetings 适用场景与选型建议
martin3r/platform-meetings 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 108 次下载、GitHub Stars 达 0, 最近一次更新时间为 2025 年 11 月 15 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 martin3r/platform-meetings 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 martin3r/platform-meetings 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 108
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 11
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: Unknown
- 更新时间: 2025-11-15