PluginProbe
Fluent Booking – The Ultimate Appointments Scheduling, Events Booking, Events Calendar Solution / 2.5.0
Fluent Booking – The Ultimate Appointments Scheduling, Events Booking, Events Calendar Solution v2.5.0
2.5.0 2.4.0 2.3.0 2.2.5 2.2.0 2.1.2 2.1.1 trunk 1.10.0 1.10.01 1.10.02 1.5.0 1.5.01 1.5.02 1.5.1 1.5.10 1.5.20 1.5.21 1.5.22 1.5.23 1.5.24 1.5.25 1.6.0 1.7.0 1.7.1 All 34 releases
← All changes | app/Models/Calendar.php +28 -2 2.2.5 → 2.5.0 View file →
@@ -4,8 +4,9 @@
4 4
5 5 use FluentBooking\App\Models\Model;
6 6 use FluentBooking\App\Services\Helper;
7 7 use FluentBooking\App\Services\LandingPage\LandingPageHelper;
8 +use FluentBooking\App\Services\PermissionManager;
8 9 use FluentBooking\Framework\Support\Arr;
9 10
10 11 class Calendar extends Model
11 12 {
@@ -67,8 +68,24 @@
67 68 {
68 69 return $this->hasMany(CalendarSlot::class, 'calendar_id');
69 70 }
70 71
72 + /**
73 + * The calendar owner plus every host its events already list.
74 + *
75 + * @return int[]
76 + */
77 + public function getMemberIds()
78 + {
79 + $memberIds = [(int) $this->user_id];
80 +
81 + foreach ($this->events()->get(['settings']) as $event) {
82 + $memberIds = array_merge($memberIds, array_map('intval', (array) Arr::get($event->settings, 'team_members', [])));
83 + }
84 +
85 + return array_values(array_unique($memberIds));
86 + }
87 +
71 88 public function user()
72 89 {
73 90 return $this->belongsTo(User::class, 'user_id');
74 91 }
@@ -265,14 +282,23 @@
265 282 ->get();
266 283
267 284 $deletedUser = __('Deleted User', 'fluent-booking');
268 285
269 - return $calendars->map(function ($calendar) use ($deletedUser) {
286 + // Every permitted user gets this list; only those who manage other hosts need their emails.
287 + $showEmail = PermissionManager::canManageOtherHosts();
288 +
289 + return $calendars->map(function ($calendar) use ($deletedUser, $showEmail) {
270 290 $user = $calendar->user;
291 +
292 + $label = $deletedUser;
293 + if ($user) {
294 + $label = $showEmail ? $user->display_name . ' (' . $user->user_email . ')' : $user->display_name;
295 + }
296 +
271 297 return [
272 298 'id' => $user ? $user->ID : (int)$calendar->user_id,
273 299 'name' => $user ? $user->full_name : $deletedUser,
274 - 'label' => $user ? $user->display_name . ' (' . $user->user_email . ')' : $deletedUser,
300 + 'label' => $label,
275 301 'avatar' => $calendar->getAuthorPhoto(),
276 302 'calendar_id' => $calendar->id,
277 303 'deleted_user' => $user ? false : true
278 304 ];