MembersPlugin.php in Opigno Learning path 3.x
File
src/Plugin/LearningPathMembers/MembersPlugin.php
View source
<?php
namespace Drupal\opigno_learning_path\Plugin\LearningPathMembers;
use Drupal\Core\Form\FormStateInterface;
use Drupal\opigno_learning_path\LearningPathMembersPluginBase;
use Drupal\user\Entity\User;
class MembersPlugin extends LearningPathMembersPluginBase {
public function getMembersForm(array &$form, FormStateInterface $form_state, User $current_user) {
$storage = $form_state
->getStorage();
$show_all = $current_user
->hasPermission('add any members to calendar event') ? TRUE : FALSE;
$storage['show_all'] = $show_all;
$form['members'] = [
'#type' => 'container',
'#weight' => 100,
];
$form['members']['title'] = [
'#type' => 'label',
'#title' => t('Members'),
];
$users = opigno_messaging_get_all_recipients($show_all);
$allowed_uids = [];
foreach ($users as $user) {
$allowed_uids[] = $user
->id();
}
if ($allowed_uids) {
$allowed_uids = array_unique($allowed_uids);
$storage['allowed_uids'] = $allowed_uids;
if ($options = $form["field_calendar_event_members"]["widget"]["#options"]) {
foreach ($options as $key => $option) {
if (!in_array($key, $allowed_uids)) {
unset($form["field_calendar_event_members"]["widget"]["#options"][$key]);
}
}
}
}
$form['members']['field_calendar_event_members'] = $form['field_calendar_event_members'];
unset($form['field_calendar_event_members']);
$members =& $form['members']['field_calendar_event_members'];
$members["widget"]['#type'] = 'entity_selector';
$members['#prefix'] = '<div id="members">';
$members['#suffix'] = '</div>';
unset($members['widget']['#title']);
$form_state
->setStorage($storage);
if (!$current_user
->hasPermission('add members to calendar event')) {
if (!empty($form["field_calendar_event_members"])) {
$form["field_calendar_event_members"]["#access"] = FALSE;
}
if (!empty($form['members'])) {
$form['members']['#access'] = FALSE;
}
}
}
}