bibcite-8.x-1.x-dev/modules/bibcite_ris/bibcite_ris.install

modules/bibcite_ris/bibcite_ris.install
<?php

/**
 * @file
 * Module installation hooks implementation.
 */

use Symfony\Component\Yaml\Yaml;

/**
 * Implements hook_requirements().
 */
function bibcite_ris_requirements($phase) {
  $requirements = [];

  switch ($phase) {
    case 'runtime':
    case 'install':
      if (!class_exists('\LibRIS\RISReader')) {
        $requirements['bibcite_ris_dependencies'] = [
          'title' => t('RIS dependencies'),
          'description' => t("Bibliography &amp; Citation - RIS requires the researchgate/libris library. See the module's README.md file for more information."),
          'severity' => REQUIREMENT_ERROR,
        ];
      }
  }

  return $requirements;
}

/**
 * Implements hook_uninstall().
 */
function bibcite_ris_uninstall() {
  Drupal::configFactory()->getEditable('bibcite_entity.mapping.ris')->delete();
}

/**
 * Add new fields to RIS format.
 */
function bibcite_ris_update_8001() {
  $config_factory = \Drupal::configFactory();
  $config_name = 'bibcite_entity.mapping.ris';
  $install_path = __DIR__ . '/config/install/';
  $file_path = $install_path . $config_name . '.yml';
  if (file_exists($file_path)) {
    $config = $config_factory->getEditable($config_name);
    $content = file_get_contents($file_path);
    $yaml = Yaml::parse($content);
    $fields = $yaml['fields'];

    $config->set('fields', $fields);
    $config->save(TRUE);
  }
}

/**
 * Update mapping of RIS fields and types.
 */
function bibcite_ris_update_8002() {
  $config_factory = \Drupal::configFactory();
  $config = $config_factory->getEditable('bibcite_entity.mapping.ris');
  // Array format: 'TYPE' => ['old_value', 'new_value'].
  $types_mapping = [
    'ABST' => ['miscellaneous', 'journal_article'],
    'AGGR' => ['', 'database'],
    'ANCIENT' => ['', 'miscellaneous'],
    'BLOG' => ['', 'miscellaneous'],
    'CHART' => ['', 'chart'],
    'CLSWK' => ['', 'classical'],
    'CONF' => ['conference_paper', 'conference_proceedings'],
    'CPAPER' => ['', 'conference_paper'],
    'DATA' => ['database', 'software'],
    'DBASE' => ['', 'database'],
    'DICT' => ['', 'book'],
    'EBOOK' => ['', 'book'],
    'ECHAP' => ['', 'book_chapter'],
    'EDBOOK' => ['', 'book'],
    'EJOUR' => ['', 'journal_article'],
    'ELEC' => ['miscellaneous', 'web_project_page'],
    'ENCYC' => ['', 'book'],
    'EQUA' => ['', 'miscellaneous'],
    'FIGURE' => ['', 'miscellaneous'],
    'GOVDOC' => ['', 'government_report'],
    'GRANT' => ['', 'miscellaneous'],
    'INPR' => ['miscellaneous', 'journal_article'],
    'JFULL' => ['miscellaneous', 'journal'],
    'LEGAL' => ['', 'legal_ruling'],
    'MULTI' => ['', 'audiovisual'],
    'SLIDE' => ['miscellaneous', 'presentation'],
    'STAND' => ['', 'miscellaneous'],
    'STAT' => ['database', 'statute'],
    'VIDEO' => ['miscellaneous', 'film'],
  ];
  $fields_mapping = [
    'AN' => 'bibcite_accession_number',
    'BT' => 'bibcite_secondary_title',
    'CN' => 'bibcite_call_number',
    'DA' => 'bibcite_date',
    'DB' => 'bibcite_remote_db_name',
    'DO' => 'bibcite_doi',
    'DP' => 'bibcite_remote_db_provider',
    'ET' => 'bibcite_edition',
    'J2' => 'bibcite_alternate_title',
    'LB' => 'bibcite_label',
    'OP' => 'bibcite_original_publication',
    'PP' => 'bibcite_place_published',
    'RP' => 'bibcite_reprint_edition',
    'Y2' => 'bibcite_access_date',
  ];
  foreach ($types_mapping as $key => $value) {
    $config_key = 'types.' . $key;
    // Update values if mapping wasn't changed from default.
    if ($config->get($config_key) === $value[0]) {
      $config->set($config_key, $value[1]);
    }
  }
  foreach ($fields_mapping as $key => $value) {
    $config_key = 'fields.' . $key;
    // Update values if mapping wasn't changed from default.
    if ($config->get($config_key) === '') {
      $config->set($config_key, $value);
    }
  }
  $config->save(TRUE);
}

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

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