function taxonomy_csv_vocabulary_field_attach in Taxonomy CSV import/export 7.5
Add or create a field to attach to a vocabulary.
Parameters
$vocabulary_machine_name: Vocabulary machine_name.
$field: Field array to attach.
Return value
TRUE if success, FALSE else.
1 call to taxonomy_csv_vocabulary_field_attach()
- _taxonomy_csv_import_vocabulary_prepare in import/
taxonomy_csv.import.api.inc - Prepare a vocabulary for import.
File
- ./
taxonomy_csv.vocabulary.api.inc, line 176 - Prepare and manage vocabularies.
Code
function taxonomy_csv_vocabulary_field_attach($vocabulary_machine_name, $field) {
// Check if vocabulary exist.
$vocabulary = taxonomy_vocabulary_machine_name_load($vocabulary_machine_name);
if ($vocabulary) {
// Check if field exists in order to create or to update it.
// No other check is made.
$prior_field = field_info_field($field['field_name']);
// The field doesn't exist, so creates it.
if (empty($prior_field)) {
$field = field_create_field($field);
}
elseif ($field['type'] == 'taxonomy_term_reference') {
$flag = FALSE;
foreach ($prior_field['settings']['allowed_values'] as $allowed_values) {
// Don't add new allowed values if they exist already.
if ($allowed_values == $field['settings']['allowed_values'][0]) {
$flag = TRUE;
break;
}
}
if (!$flag) {
$prior_field['settings']['allowed_values'][] = $field['settings']['allowed_values'][0];
$result = field_update_field($prior_field);
}
$field = field_info_field($field['field_name']);
}
else {
$field = $prior_field;
}
// Check if field is already instanced to vocabulary so attach it if needed.
$prior_instance = field_info_instance('taxonomy_term', $field['field_name'], $vocabulary->machine_name);
if (empty($prior_instance)) {
$result = field_create_instance(array(
'field_name' => $field['field_name'],
'entity_type' => 'taxonomy_term',
'bundle' => $vocabulary->machine_name,
'label' => isset($field['label']) ? $field['label'] : $field['field_name'],
'description' => isset($field['description']) ? $field['description'] : '',
));
}
return TRUE;
}
return FALSE;
}