social_lms_quiz-8.x-1.x-dev/social_lms_quiz.module

social_lms_quiz.module
<?php

/**
 * @file
 */

use Drupal\taxonomy\Entity\Term;
use Drupal\node\Entity\Node;
use Drupal\paragraphs\Entity\Paragraph;

/**
 * Hook_uninstall function.
 */
function social_lms_quiz_uninstall() {

  // Array of all configuration.
  $configuration = [
    'core.entity_form_display.node.quiz.default',
    'core.entity_view_display.node.quiz.default',
    'core.entity_view_display.node.quiz.teaser',
    'field.field.node.quiz.body',
    'field.field.node.quiz.field_quiz_board_field',
    'field.field.node.quiz.field_quiz_chapter_field',
    'field.field.node.quiz.field_quiz_class_field',
    'field.field.node.quiz.field_quiz_cognitive_table_field',
    'field.field.node.quiz.field_quiz_concept_field',
    'field.field.node.quiz.field_quiz_duration',
    'field.field.node.quiz.field_quiz_instruction',
    'field.field.node.quiz.field_quiz_learning_objective',
    'field.field.node.quiz.field_quiz_quiz_type',
    'field.field.node.quiz.field_quiz_subject',
    'field.field.node.quiz.field_quiz_text_book',
    'field.storage.node.field_quiz_board_field',
    'field.storage.node.field_quiz_chapter_field',
    'field.storage.node.field_quiz_class_field',
    'field.storage.node.field_quiz_cognitive_table_field',
    'field.storage.node.field_quiz_concept_field',
    'field.storage.node.field_quiz_duration',
    'field.storage.node.field_quiz_instruction',
    'field.storage.node.field_quiz_learning_objective',
    'field.storage.node.field_quiz_quiz_type',
    'field.storage.node.field_quiz_subject',
    'field.storage.node.field_quiz_text_book',
    'node.type.quiz',
    'taxonomy.vocabulary.board_field',
    'taxonomy.vocabulary.chapter_field',
    'taxonomy.vocabulary.class_field',
    'taxonomy.vocabulary.cognitive_table_field',
    'taxonomy.vocabulary.concept_field',
    'taxonomy.vocabulary.learning_objective',
    'taxonomy.vocabulary.quiz_type',
    'taxonomy.vocabulary.subject',
    'taxonomy.vocabulary.text_book',
    'field.storage.node.field_quiz_question',
    'node.type.question',
    'field.field.node.quiz.field_quiz_question',
    'field.field.node.question.body',
    'core.entity_form_display.node.question.default',
    'core.entity_view_display.node.question.teaser',
    'core.entity_view_display.node.question.default',
    'core.entity_form_display.node.quiz.default',
    'core.entity_view_display.node.quiz.default',
    'field.storage.paragraph.field_question',
    'core.entity_view_mode.paragraph.preview',
    'paragraphs.paragraphs_type.quiz_question_para',
    'field.field.paragraph.quiz_question_para.field_question',
    'core.entity_view_display.paragraph.quiz_question_para.default',
    'core.entity_form_display.paragraph.quiz_question_para.default',
    'paragraphs.settings',
    'field.storage.node.field_quiz_question_paragraph',
    'field.field.node.quiz.field_quiz_question_paragraph',
    'field.storage.node.field_question_options',
    'field.field.node.question.field_question_options',
    'field.storage.paragraph.field_ld_description',
    'field.storage.paragraph.field_correct',
    'paragraphs.paragraphs_type.quiz_question_options',
    'field.field.paragraph.quiz_question_options.field_ld_description',
    'field.field.paragraph.quiz_question_options.field_correct',
    'field.storage.paragraph.field_o_learning_deficiency',
    'taxonomy.vocabulary.learning_deficiency',
    'field.field.paragraph.quiz_question_options.field_o_learning_deficiency',
    'field.storage.paragraph.field_remedial_measure',
    'field.storage.paragraph.field_option_value',
    'field.field.paragraph.quiz_question_options.field_remedial_measure',
    'field.field.paragraph.quiz_question_options.field_option_value',
    'core.entity_view_display.paragraph.quiz_question_options.default',
    'core.entity_form_display.paragraph.quiz_question_options.default',
    'field.storage.node.field_quiz_assignment_quiz',
    'node.type.quiz_assignment',
    'field.field.node.quiz_assignment.field_quiz_assignment_quiz',
    'field.storage.paragraph.field_start_date',
    'field.storage.paragraph.field_report_visibility',
    'field.storage.paragraph.field_end_date',
    'field.storage.node.field_quiz_assignment_section_de',
    'paragraphs.paragraphs_type.section_details',
    'field.field.paragraph.section_details.field_start_date',
    'field.field.paragraph.section_details.field_report_visibility',
    'field.field.paragraph.section_details.field_end_date',
    'field.field.node.quiz_assignment.field_quiz_assignment_section_de',
    'field.storage.paragraph.field_quiz_section',
    'field.storage.node.field_quiz_assignment_subject',
    'field.storage.node.field_quiz_assignment_school',
    'field.storage.node.field_quiz_assignment_quiz_type',
    'field.storage.node.field_quiz_assignment_class',
    'field.storage.node.field_quiz_assignment_chapter',
    'field.field.node.quiz_assignment.field_quiz_assignment_chapter',
    'field.field.node.quiz_assignment.field_quiz_assignment_class',
    'field.field.node.quiz_assignment.field_quiz_assignment_quiz_type',
    'taxonomy.vocabulary.school',
    'field.field.node.quiz_assignment.field_quiz_assignment_school',
    'taxonomy.vocabulary.section',
    'field.field.paragraph.section_details.field_quiz_section',
    'core.entity_view_display.paragraph.section_details.default',
    'core.entity_form_display.paragraph.section_details.default',
    'field.field.node.quiz_assignment.field_quiz_assignment_subject',
    'field.field.node.quiz_assignment.body',
    'core.entity_form_display.node.quiz_assignment.default',
    'core.entity_view_display.node.quiz_assignment.teaser',
    'core.entity_view_display.node.quiz_assignment.default'

  ];
  $call = \Drupal::configFactory();

  foreach ($configuration as $config) {
    // Deletes configuration.
    $call->getEditable($config)->delete();
  }
  
  //Deletes Vocabularies
  $vocabulary = ['board_field', 'chapter_field', 'class_field', 'cognitive_table_field',
    'concept_field', 'learning_objective', 'quiz_type', 'subject', 'text_book',
    'section',
  ];
  foreach ($vocabulary as $value) {
    $result = \Drupal::entityQuery('taxonomy_term')
      ->condition('vid', $value)
      ->execute();
    entity_delete_multiple('taxonomy_term', $result);

  }

  // Deletes node of content type of question.
  $nodes = \Drupal::entityTypeManager()
    ->getStorage('node')
    ->loadByProperties(['type' => 'question']);

  foreach ($nodes as $node) {
    $node->delete();
  }

  // Deletes node of content type of quiz.
  $quiz_nodes = \Drupal::entityTypeManager()
    ->getStorage('node')
    ->loadByProperties(['type' => 'quiz']);

  foreach ($quiz_nodes as $node) {
    $node->delete();
  }

}// end of quiz_uninstall() function

/**
 * Creates vocabulary terms.
 */
function vocabulary_term($categories_vocabulary, $categories) {
  foreach ($categories as $category) {
    $term = Term::create([
      'parent' => [],
      'name' => $category,
      'vid' => $categories_vocabulary,
    ])->save();
  }
}

/**
 * Creates question.
 */
function create_question($field_option_value, $pos, $quiz_title, $term_name, $question) {
  $p_id = [];
  $field_correct = ['true', 'false'];

  // Creates paragraph of type quiz_question_options.
  for ($i = 0; $i < 4; $i++) {
    if ($i == $pos) {
      $value = TRUE;
    }
    else {
      $value = FALSE;
    }
    // Creates of paragraph type quiz_question_options.
    $paragraph = Paragraph::create([
      'type' => 'quiz_question_options',
      'field_correct' => $value,
      'field_ld_description' => 'option',
      'field_option_value' => $field_option_value[$i],
    ]);
    $paragraph->save();
    $p_id[] = $paragraph->id();
  }

  // Creates content of type question.
  $node = Node::create([
    'type' => 'question',
    'title' => $question[0],
    'body' => $question[1],
    'field_question_options' => Paragraph::loadMultiple($p_id),

  ]);
  $node->save();

  // Getting term of vocabulary in entity reference field of Quiz.
  foreach ($term_name as $name) {
    $term[] = \Drupal::entityTypeManager()
      ->getStorage('taxonomy_term')
      ->loadByProperties(['name' => $name]);
  }

  // Creates content of type quiz.
  $quiz_node = Node::create([
    'type' => 'quiz',
    'title' => $quiz_title,
    'field_quiz_board_field' => $term[0],
    'field_quiz_chapter_field' => $term[1],
    'field_quiz_class_field' => $term[2],
    'field_quiz_duration' => 30,
    'field_quiz_subject' => $term[3],
    'field_quiz_question' => Node::load($node->id()),
  ]);
  $quiz_node->save();

  // Creates paragraph of type quiz_question_para.
  $paragraph = Paragraph::create([
    'type' => 'quiz_question_para',
    'field_question' => Node::load($node->id()),
  ]);
  $paragraph->save();
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc