/**
  *  For the current assessment, will populate the learning objectives, related assessments, and topics from the database
  *
  *  Stolen from assessment_form
  *
  *  @param int $mform Form that will be added to
  *  @param string $index Index that must be used to access form elements for the current assessment
  *  @param object $assessment The database tuple for the current assessment
  *
  */
 function setup_data_from_database_for_assessment($mform, $index, $assessment)
 {
     global $DB;
     // Load the learning objectives for the assessment
     // Template for this was found in \mod\glossary\edit.php
     if ($learningObjectivesArr = $DB->get_records_menu("assessmentobjectives", array('assessmentid' => $assessment->id), '', 'id, objectiveid')) {
         $learningObjectiveTypes = get_learning_objective_types();
         foreach ($learningObjectiveTypes as $learningObjectiveType) {
             $mform->setDefault('learning_objective_' . $learningObjectiveType . $index, array_values($learningObjectivesArr));
         }
     }
 }
 /**
  *  This function is used for deleting a session, and interacting with topics.
  *      Both displaying and editing the topic list
  *
  */
 function definition_after_data()
 {
     parent::definition_after_data();
     $mform = $this->_form;
     $numRepeated = $mform->getElementValue('sessions_list');
     // Go through each session, and delete elements for ones that should be deleted
     for ($key = 0; $key < $numRepeated; ++$key) {
         $index = '[' . $key . ']';
         $deleted = $mform->getSubmitValue('delete_session' . $index);
         // If a button is pressed, then doing $mform->getSubmitValue(buttonId) will return a non-null vaue
         // However, if other buttons are subsequently pressed, then $mform->getSubmitValue(buttonId) will return null
         // So use the element 'was_deleted' for that repeated element to store if has been deleted
         if ($deleted or $mform->getElementValue('was_deleted' . $index) == true) {
             // If deleted, just remove the visual elements
             // Will not save to the database until the user presses submit
             $mform->removeElement('sessionheader' . $index);
             $mform->removeElement('sessiontitle' . $index);
             $mform->removeElement('sessionteachingstrategy' . $index);
             $mform->removeElement('sessionguestteacher' . $index);
             $mform->removeElement('sessiontype' . $index);
             $mform->removeElement('sessionlength' . $index);
             $mform->removeElement('sessiondate' . $index);
             $learningObjectiveTypes = get_learning_objective_types();
             foreach ($learningObjectiveTypes as $learningObjectiveType) {
                 $mform->removeElement('learning_objective_' . $learningObjectiveType . $index);
             }
             $mform->removeElement('assessments' . $index);
             $mform->removeElement('manage_topics_group' . $index);
             $mform->removeElement('add_topic_group' . $index);
             $mform->removeElement('delete_session' . $index);
             $mform->getElement('was_deleted' . $index)->setValue(true);
         } else {
             $this->update_topics($mform, $index);
             // New element, so expand header by default
             if ($mform->getElement('coursesession_id' . $index)->getValue() == -1) {
                 $mform->setExpanded('sessionheader' . $index);
             }
         }
     }
     // navigate to the newest added element
     if (isset($_POST['sessions_list_add_element'])) {
         redirect_to_anchor('session', 'id_sessions_list_add_element', -700);
     }
 }