Skip to content

Commit a4d7407

Browse files
committed
Separate field search code so it is reusable
1 parent 4ff956a commit a4d7407

File tree

1 file changed

+41
-25
lines changed

1 file changed

+41
-25
lines changed

src/Form/EntityReferenceFieldSearch.php

Lines changed: 41 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -217,31 +217,6 @@ public function buildForm(array $form, FormStateInterface $form_state) {
217217
public function submitForm(array &$form, FormStateInterface $form_state) {
218218
$values = $form_state->getValues();
219219

220-
$field_map = $this->entityFieldManager()->getFieldMap();
221-
222-
$field_type = [
223-
"entity_reference",
224-
"entity_reference_revisions",
225-
"entity_reference_entity_modify",
226-
];
227-
228-
$fields = [];
229-
foreach ($field_map as $entity => $entity_field_data) {
230-
foreach ($entity_field_data as $field_id => $field_data) {
231-
if (in_array($field_data['type'], $field_type)) {
232-
233-
$field_storage_defs = $this->entityFieldManager()->getFieldStorageDefinitions($entity);
234-
235-
if (isset($field_storage_defs[$field_id])) {
236-
$field_storage_settings = $field_storage_defs[$field_id]->getSettings();
237-
if ($field_storage_settings['target_type'] == $values['entity_type']) {
238-
$fields[$field_data['type']][$entity][$field_id] = $field_data;
239-
}
240-
}
241-
}
242-
}
243-
}
244-
245220
$batch = [
246221
'title' => $this->t('Searching...'),
247222
'operations' => [
@@ -253,6 +228,8 @@ public function submitForm(array &$form, FormStateInterface $form_state) {
253228
'finished' => [$this, 'finishedCallback'],
254229
];
255230

231+
$fields = EntityReferenceFieldSearch::findFields($form_state);
232+
256233
foreach ($fields as $field_type => $field_data) {
257234
foreach ($field_data as $entity_type => $fields2) {
258235
foreach ($fields2 as $f => $fdata) {
@@ -286,6 +263,45 @@ public function submitForm(array &$form, FormStateInterface $form_state) {
286263
batch_set($batch);
287264
}
288265

266+
/**
267+
* Run the process, to look for viable fields to search.
268+
*
269+
* @param \Drupal\Core\Form\FormStateInterface $form_state
270+
* Drupal's forms tate obj.
271+
*
272+
* @return array
273+
*/
274+
public static function findFields(FormStateInterface $form_state): array {
275+
276+
$entity_field_manager = \Drupal::service('entity_field.manager'); // phpcs:ignore
277+
$field_map = $entity_field_manager->getFieldMap();
278+
279+
$field_type = [
280+
"entity_reference",
281+
"entity_reference_revisions",
282+
"entity_reference_entity_modify",
283+
];
284+
285+
$fields = [];
286+
foreach ($field_map as $entity => $entity_field_data) {
287+
foreach ($entity_field_data as $field_id => $field_data) {
288+
if (in_array($field_data['type'], $field_type)) {
289+
290+
$field_storage_defs = $entity_field_manager->getFieldStorageDefinitions($entity);
291+
292+
if (isset($field_storage_defs[$field_id])) {
293+
$field_storage_settings = $field_storage_defs[$field_id]->getSettings();
294+
if ($field_storage_settings['target_type'] == $values['entity_type']) {
295+
$fields[$field_data['type']][$entity][$field_id] = $field_data;
296+
}
297+
}
298+
}
299+
}
300+
}
301+
302+
return $fields;
303+
}
304+
289305
/**
290306
* Batch process to setup the $context array.
291307
*/

0 commit comments

Comments
 (0)