-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsite_press_centre.install
75 lines (66 loc) · 2.12 KB
/
site_press_centre.install
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
<?php
/**
* @file
* Install file for the site_press_centre.module.
*/
use Drupal\taxonomy\Entity\Term;
use Drupal\field\Entity\FieldStorageConfig;
use Drupal\field\Entity\FieldConfig;
/**
* Implements hook_install().
*/
function site_press_centre_install() {
// Создает термин НОВОСТИ.
$term = Term::create([
'name' => 'Новости',
'vid' => 'site_press_centre',
]);
$term->save();
// Создает термин СТАТЬИ.
$term = Term::create(array(
'parent' => array(),
'name' => 'Статьи',
'vid' => 'site_press_centre',
));
$term->save();
}
/**
* Update database structure.
*/
function site_press_centre_update_8101(&$sandbox) {
// Записывает значения в конфигурацию.
$config = \Drupal::service('config.factory')->getEditable('site_press_centre.settings');
$config->set('url', 'press-centr');
$config->save();
return t('Update successfully.');
}
/**
* Update database structure.
*/
function site_press_centre_update_8102(&$sandbox) {
// Изменяем имя словаря для хранения категорий.
$vid = 'site_press_centre';
$name = 'Новости и статьи';
$vocabularies = \Drupal\taxonomy\Entity\Vocabulary::loadMultiple();
if (!isset($vocabularies[$vid])) {
$vocabulary = \Drupal\taxonomy\Entity\Vocabulary::create(array(
'vid' => $vid,
'name' => $name,
));
$vocabulary->save();
}
// Обновляем название словаря в текущих терминах.
$query = \Drupal::entityQuery('taxonomy_term');
$query->condition('vid', 'press_centre');
$tids = $query->execute();
foreach ($tids as $tid) {
$term = \Drupal\taxonomy\Entity\Term::load($tid);
if (!empty($term)) {
$term->vid = $vid;
$term->save();
}
}
// Удаляем старый словарь.
$vocabulary = \Drupal::entityTypeManager()->getStorage('taxonomy_vocabulary')->load('press_centre')->delete();
return t('Update successfully.');
}