forked from apigee/apigee-api-catalog-drupal
-
Notifications
You must be signed in to change notification settings - Fork 0
/
apigee_api_catalog.install
157 lines (135 loc) · 5.23 KB
/
apigee_api_catalog.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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
<?php
/**
* @file
* Copyright 2019 Google Inc.
*
* This program is free software; you can redistribute it and/or modify it under
* the terms of the GNU General Public License version 2 as published by the
* Free Software Foundation.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
* License for more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, write to the Free Software Foundation, Inc., 51
* Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
/**
* @file
* Install file for Apigee API Catalog.
*/
/**
* Implements hook_requirements().
*/
function apigee_api_catalog_requirements($phase) {
// Prevent installation alongside of the `apigee_edge_apidocs` module.
if ($phase === 'install' && \Drupal::moduleHandler()->moduleExists('apigee_edge_apidocs')) {
return [
'apigee_api_catalog_module_conflict' => [
'title' => t('Apigee API Catalog'),
'description' => t('The "Apigee Edge API Docs" module is currently installed. It is deprecated and should be uninstalled before installing the Apigee API Catalog module.'),
'severity' => REQUIREMENT_ERROR,
],
];
}
return [];
}
/**
* Update the length of the name field.
*/
function apigee_api_catalog_update_8701() {
$entity_type_id = 'apidoc';
$field_name = 'name';
$field_length = 255;
$definition_update_manager = \Drupal::entityDefinitionUpdateManager();
$last_installed_schema_repository = \Drupal::service('entity.last_installed_schema.repository');
$entity_type = $definition_update_manager->getEntityType($entity_type_id);
// Update the field storage definition.
/** @var \Drupal\Core\Field\FieldStorageDefinitionInterface[] $field_storage_definitions */
$field_storage_definitions = $last_installed_schema_repository->getLastInstalledFieldStorageDefinitions($entity_type_id);
$field_storage_definitions[$field_name]->setSetting('max_length', $field_length);
$definition_update_manager->updateFieldableEntityType($entity_type, $field_storage_definitions, $sandbox);
$definition = \Drupal::entityTypeManager()->getDefinition($entity_type_id);
$data_table = $definition->getDataTable();
$revision_data_table = $definition->getRevisionDataTable();
$entity_storage_schema_sql = \Drupal::keyValue('entity.storage_schema.sql');
$schema_key = "$entity_type_id.field_schema_data.$field_name";
if ($field_schema_data = $entity_storage_schema_sql->get($schema_key)) {
// Update storage schema for data table.
$field_schema_data[$data_table]['fields'][$field_name]['length'] = $field_length;
// Update storage schema for the revision table.
if ($revision_data_table) {
$field_schema_data[$revision_data_table]['fields'][$field_name]['length'] = $field_length;
}
$entity_storage_schema_sql->set($schema_key, $field_schema_data);
// Update the base database field.
$schema = \Drupal::database()->schema();
$schema->changeField($data_table, $field_name, $field_name, $field_schema_data[$data_table]['fields'][$field_name]);
// Update schema for the revision table.
if ($revision_data_table) {
$schema->changeField($revision_data_table, $field_name, $field_name, $field_schema_data[$revision_data_table]['fields'][$field_name]);
}
}
}
/**
* Set module schema to 8801.
*/
function apigee_api_catalog_update_8801() {
// Empty - only needed to set the 2.x module schema number.
}
/**
* Create API Doc node type and fields if updating from 1.x.
*/
function apigee_api_catalog_update_8802() {
return \Drupal::service('apigee_api_catalog.updates')->update8802();
}
/**
* Recreate other fields added to the API Doc entity onto the API Doc node type if updating from 1.x.
*/
function apigee_api_catalog_update_8803() {
return \Drupal::service('apigee_api_catalog.updates')->update8803();
}
/**
* Convert API Doc entities to nodes (migrating data) if updating from 1.x.
*/
function apigee_api_catalog_update_8804(&$sandbox) {
return \Drupal::service('apigee_api_catalog.updates')->update8804($sandbox);
}
/**
* Deprecated step.
*/
function apigee_api_catalog_update_8805() {
// return \Drupal::service('apigee_api_catalog.updates')->update8805();
}
/**
* Re-install if needed deprecated API Doc entity definition.
*/
function apigee_api_catalog_update_8806() {
return \Drupal::service('apigee_api_catalog.updates')->update8806();
}
/**
* Removed required atttribute for field_apidoc_spec_file_source.
*/
function apigee_api_catalog_update_8807() {
return \Drupal::service('apigee_api_catalog.updates')->update8807();
}
/**
* Add API Product field.
*/
function apigee_api_catalog_update_8808() {
return \Drupal::service('apigee_api_catalog.updates')->update8808();
}
/**
* Rename API Doc content type as OpenAPI Doc.
*/
function apigee_api_catalog_update_8809() {
return \Drupal::service('apigee_api_catalog.updates')->update8809();
}
/**
* Removed yml extension from field_apidoc_file_link and field_apidoc_spec allowed values.
*/
function apigee_api_catalog_update_8810() {
return \Drupal::service('apigee_api_catalog.updates')->update8810();
}