You are here

public function CourseEnrollmentEditAction::buildConfigurationForm in Course 3.x

Same name and namespace in other branches
  1. 8.3 src/Plugin/Action/CourseEnrollmentEditAction.php \Drupal\course\Plugin\Action\CourseEnrollmentEditAction::buildConfigurationForm()
  2. 8.2 src/Plugin/Action/CourseEnrollmentEditAction.php \Drupal\course\Plugin\Action\CourseEnrollmentEditAction::buildConfigurationForm()

File

src/Plugin/Action/CourseEnrollmentEditAction.php, line 90

Class

CourseEnrollmentEditAction
Action description.

Namespace

Drupal\course\Plugin\Action

Code

public function buildConfigurationForm(array $form, FormStateInterface $form_state) {

  // Load the first enrollment.
  $selections = $form_state
    ->getStorage()['views_bulk_operations']['list'];
  $course_enrollment = CourseEnrollment::load(reset($selections)[0]);
  $course = $course_enrollment
    ->getCourse();

  // Check if this action is being performed on a single user, and set the
  // account accordingly.
  $account = NULL;
  if (count($form_state
    ->getStorage()['views_bulk_operations']['list']) === 1) {

    // Only one user and course, so let's prefill values.
    $account = $course_enrollment
      ->getUser();
  }

  // Get course objects, with or without a single user account information.
  $objects = $course
    ->getObjects();

  // Build a list of a single user's fulfillments.
  $fulfillments = NULL;
  if ($account) {
    $fulfillments = array();
    foreach ($objects as $courseObject) {
      $fulfillments[$courseObject
        ->id()] = $courseObject
        ->getFulfillment($account);
    }
  }
  $form['course_objects'] = array(
    '#title' => t('Set completion status'),
    '#description' => t('Set the status of a course object to be applied to selected users.'),
    '#type' => 'fieldset',
    '#collapsible' => TRUE,
    '#collapsed' => TRUE,
    '#tree' => TRUE,
    '#prefix' => '<span id="course-objects-wrapper">',
    '#suffix' => '</span>',
  );
  foreach ($objects as $courseObject) {
    $form['course_objects'][$courseObject
      ->id()] = array(
      '#type' => 'select',
      '#title' => $courseObject
        ->getTitle(),
      '#options' => array(
        '' => '- no change - ',
        1 => t('Complete'),
        -1 => t('Incomplete'),
        0 => t('Failed'),
      ),
      '#default_value' => $fulfillments ? $fulfillments[$courseObject
        ->id()]
        ->isComplete() : NULL,
    );
  }
  return $form;
}