function taxonomy_csv_vocabulary_field_add in Taxonomy CSV import/export 7.4
Add a field to a vocabulary.
Parameters
$vocabulary_machine_name: Vocabulary machine_name.
$field: Field array to add.
Return value
TRUE if success, FALSE else.
2 calls to taxonomy_csv_vocabulary_field_add()
- taxonomy_csv_thesaurus_create in ./
taxonomy_csv.vocabulary.api.inc - Prepare a regular thesaurus (Drupal 6 vocabulary) from a basic D7 vocabulary.
- taxonomy_csv_vocabulary_duplicate in ./
taxonomy_csv.vocabulary.api.inc - Duplicates a vocabulary object. If not exist, creates an empty vocabulary.
File
- ./
taxonomy_csv.vocabulary.api.inc, line 300 - Prepare and manage vocabularies.
Code
function taxonomy_csv_vocabulary_field_add($vocabulary_machine_name, $field) {
// Check if vocabulary exist.
$vocabulary = taxonomy_vocabulary_machine_name_load($vocabulary_machine_name);
if ($vocabulary) {
// Check if field exists already and create or update it if not exist.
// No other check is made.
$prior_field = field_info_field($field['field_name']);
// Create field.
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 exists 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' => $field['label'],
'description' => $field['description'],
));
}
return TRUE;
}
return FALSE;
}