varbase_core-8.x-8.18/modules/varbase_update_helper/varbase_update_helper.module

modules/varbase_update_helper/varbase_update_helper.module
<?php

/**
 * @file
 * Contains varbase_update_helper.module.
 */

use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\Core\Form\FormStateInterface;
use Drupal\Core\Render\Element;
use Drupal\update_helper_checklist\Entity\Update;

/**
 * Implements hook_form_alter().
 */
function varbase_update_helper_form_alter(&$form, FormStateInterface $form_state, $form_id) {
  if ($form_id == "checklistapi_checklist_form") {
    if (!isset($form['actions']['save']['#submit'])) {
      $form['actions']['save']['#submit'] = [];
    }

    $form['actions']['save']['#submit'][] = 'varbase_update_helper_checklistapi_form_submit';
    $checklist = $form['#checklist'];
    $groups = $checklist->items;

    // Prevent the user from Clearing checklist progress.
    unset($form['actions']['clear']);

    foreach (Element::children($groups) as $group_key) {
      $group = &$groups[$group_key];

      foreach (Element::children($group) as $item_key) {
        $update_key = str_replace('.', '_', $item_key);
        $entity = Update::load($update_key);

        $entityStatus = ($entity && $entity->wasSuccessfulByHook()) ? TRUE : FALSE;
        if ($entityStatus) {
          $form[$group_key][$item_key]['#disabled'] = TRUE;
        }
      }
    }
  }
}

/**
 * Implements hook_checklistapti_form_submit().
 */
function varbase_update_helper_checklistapi_form_submit(array $form, FormStateInterface $form_state) {
  $messenger = \Drupal::messenger();

  $checklistapi = $form_state->getValue('checklistapi');
  foreach ($checklistapi as $key => $updateset) {
    if ($key == "checklistapi__active_tab") {
      continue;
    }

    if (is_array($updateset) && !empty($updateset)) {
      foreach ($updateset as $update => $status) {
        $update_key = str_replace('.', '_', $update);
        $entity = Update::load($update_key);

        $entityStatus = ($entity && $entity->wasSuccessfulByHook()) ? TRUE : FALSE;
        if ($entityStatus) {
          continue;
        }
        if ($status) {
          $update_data = explode(":", $update);
          module_load_install($update_data[0]);
          if (function_exists($update_data[1])) {
            call_user_func($update_data[1], FALSE);
          }
          else {
            $checklistapi[$key][$update] = 0;
            $messenger->addWarning(t("Couldn't find an update hook: %update_hook. Please verify the update hook name.", ["%update_hook" => $update_data[1]]));
          }
        }
      }
    }
  }

  $checklist = $form['#checklist'];

  // Save progress.
  $checklist->saveProgress($checklistapi);

  // Preserve the active tab after submission.
  $form_state->setRedirect($checklist->getRouteName(), [], [
    'fragment' => $checklistapi['checklistapi__active_tab'],
  ]);
}

/**
 * Implements hook_help().
 */
function varbase_update_helper_help($route_name, RouteMatchInterface $route_match) {
  switch ($route_name) {
    // Main module help for the varbase_update_helper module.
    case 'help.page.varbase_update_helper':
      $output = '';
      $output .= '<h3>' . t('About') . '</h3>';
      $output .= '<p>' . t('Varbase update helper') . '</p>';
      return $output;

    default:
  }
}

/**
 * Implements hook_checklistapi_checklist_info_alter().
 */
function varbase_update_helper_checklistapi_checklist_info_alter(array &$definitions) {
  if (isset($definitions['update_helper_checklist']['#title'])) {
    $definitions['update_helper_checklist']['#title'] = t('Varbase update instructions');
  }
}

/**
 * Implements hook_form_FORM_ID_alter().
 */
function varbase_update_helper_form_checklistapi_checklist_form_alter(&$form, &$form_state) {
  $form['#attached']['library'][] = 'varbase_update_helper/varbase_update_helper';
}

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

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