- Patch #329140 by catch, pwolanin: improve consistency of vocabulary API and term API.
parent
ad96ff71c1
commit
d31c77513b
|
@ -17,13 +17,13 @@ function forum_enable() {
|
|||
// vocabulary still exists. Keep all other node types intact there.
|
||||
$vocabulary = (array) $vocabulary;
|
||||
$vocabulary['nodes']['forum'] = 1;
|
||||
taxonomy_save_vocabulary($vocabulary);
|
||||
taxonomy_vocabulary_save($vocabulary);
|
||||
}
|
||||
else {
|
||||
// Create the forum vocabulary if it does not exist. Assign the vocabulary
|
||||
// a low weight so it will appear first in forum topic create and edit
|
||||
// forms.
|
||||
$vocabulary = array(
|
||||
$edit = array(
|
||||
'name' => t('Forums'),
|
||||
'multiple' => 0,
|
||||
'required' => 0,
|
||||
|
@ -33,9 +33,10 @@ function forum_enable() {
|
|||
'weight' => -10,
|
||||
'nodes' => array('forum' => 1),
|
||||
);
|
||||
taxonomy_save_vocabulary($vocabulary);
|
||||
$vocabulary = (object) $edit;
|
||||
taxonomy_vocabulary_save($vocabulary);
|
||||
|
||||
variable_set('forum_nav_vocabulary', $vocabulary['vid']);
|
||||
variable_set('forum_nav_vocabulary', $vocabulary->vid);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -47,8 +48,8 @@ function forum_uninstall() {
|
|||
drupal_load('module', 'taxonomy');
|
||||
|
||||
// Delete the vocabulary.
|
||||
$vid = variable_get('forum_nav_vocabulary', '');
|
||||
taxonomy_del_vocabulary($vid);
|
||||
$vid = variable_get('forum_nav_vocabulary', 0);
|
||||
taxonomy_vocabulary_delete($vid);
|
||||
|
||||
db_query('DROP TABLE {forum}');
|
||||
variable_del('forum_containers');
|
||||
|
|
|
@ -143,10 +143,9 @@ class ForumTestCase extends DrupalWebTestCase {
|
|||
$this->assertEqual($current_settings->description, $description, t('The description was updated'));
|
||||
|
||||
// Restore the original vocabulary.
|
||||
$original_settings = (array) $original_settings;
|
||||
taxonomy_save_vocabulary($original_settings);
|
||||
taxonomy_vocabulary_save($original_settings);
|
||||
$current_settings = taxonomy_vocabulary_load($vid, TRUE);
|
||||
$this->assertEqual($current_settings->name, $original_settings['name'], 'The original vocabulary settings were restored');
|
||||
$this->assertEqual($current_settings->name, $original_settings->name, 'The original vocabulary settings were restored');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -22,7 +22,7 @@ function taxonomy_overview_vocabularies() {
|
|||
$node_type = node_get_types('name', $type);
|
||||
$types[] = $node_type ? check_plain($node_type) : check_plain($type);
|
||||
}
|
||||
$form[$vocabulary->vid]['#vocabulary'] = (array)$vocabulary;
|
||||
$form[$vocabulary->vid]['#vocabulary'] = $vocabulary;
|
||||
$form[$vocabulary->vid]['name'] = array('#markup' => check_plain($vocabulary->name));
|
||||
$form[$vocabulary->vid]['types'] = array('#markup' => implode(', ', $types));
|
||||
$form[$vocabulary->vid]['weight'] = array('#type' => 'weight', '#delta' => 10, '#default_value' => $vocabulary->weight);
|
||||
|
@ -49,9 +49,9 @@ function taxonomy_overview_vocabularies() {
|
|||
*/
|
||||
function taxonomy_overview_vocabularies_submit($form, &$form_state) {
|
||||
foreach ($form_state['values'] as $vid => $vocabulary) {
|
||||
if (is_numeric($vid) && $form[$vid]['#vocabulary']['weight'] != $form_state['values'][$vid]['weight']) {
|
||||
$form[$vid]['#vocabulary']['weight'] = $form_state['values'][$vid]['weight'];
|
||||
taxonomy_save_vocabulary($form[$vid]['#vocabulary']);
|
||||
if (is_numeric($vid) && $form[$vid]['#vocabulary']->weight != $form_state['values'][$vid]['weight']) {
|
||||
$form[$vid]['#vocabulary']->weight = $form_state['values'][$vid]['weight'];
|
||||
taxonomy_vocabulary_save($form[$vid]['#vocabulary']);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -210,18 +210,19 @@ function taxonomy_form_vocabulary_submit($form, &$form_state) {
|
|||
}
|
||||
// Fix up the nodes array to remove unchecked nodes.
|
||||
$form_state['values']['nodes'] = array_filter($form_state['values']['nodes']);
|
||||
switch (taxonomy_save_vocabulary($form_state['values'])) {
|
||||
$vocabulary = (object) $form_state['values'];
|
||||
switch (taxonomy_vocabulary_save($vocabulary)) {
|
||||
case SAVED_NEW:
|
||||
drupal_set_message(t('Created new vocabulary %name.', array('%name' => $form_state['values']['name'])));
|
||||
watchdog('taxonomy', 'Created new vocabulary %name.', array('%name' => $form_state['values']['name']), WATCHDOG_NOTICE, l(t('edit'), 'admin/content/taxonomy/' . $form_state['values']['vid']));
|
||||
drupal_set_message(t('Created new vocabulary %name.', array('%name' => $vocabulary->name)));
|
||||
watchdog('taxonomy', 'Created new vocabulary %name.', array('%name' => $vocabulary->name), WATCHDOG_NOTICE, l(t('edit'), 'admin/content/taxonomy/' . $vocabulary->vid));
|
||||
break;
|
||||
case SAVED_UPDATED:
|
||||
drupal_set_message(t('Updated vocabulary %name.', array('%name' => $form_state['values']['name'])));
|
||||
watchdog('taxonomy', 'Updated vocabulary %name.', array('%name' => $form_state['values']['name']), WATCHDOG_NOTICE, l(t('edit'), 'admin/content/taxonomy/' . $form_state['values']['vid']));
|
||||
drupal_set_message(t('Updated vocabulary %name.', array('%name' => $vocabulary->name)));
|
||||
watchdog('taxonomy', 'Updated vocabulary %name.', array('%name' => $vocabulary->name), WATCHDOG_NOTICE, l(t('edit'), 'admin/content/taxonomy/' . $vocabulary->vid));
|
||||
break;
|
||||
}
|
||||
|
||||
$form_state['vid'] = $form_state['values']['vid'];
|
||||
$form_state['vid'] = $vocabulary->vid;
|
||||
$form_state['redirect'] = 'admin/content/taxonomy';
|
||||
return;
|
||||
}
|
||||
|
@ -245,7 +246,7 @@ function taxonomy_overview_terms(&$form_state, $vocabulary) {
|
|||
}
|
||||
|
||||
$form = array(
|
||||
'#vocabulary' => (array)$vocabulary,
|
||||
'#vocabulary' => $vocabulary,
|
||||
'#tree' => TRUE,
|
||||
'#parent_fields' => FALSE,
|
||||
);
|
||||
|
@ -452,7 +453,7 @@ function taxonomy_overview_terms_submit($form, &$form_state) {
|
|||
$hierarchy = 0; // Update the current hierarchy type as we go.
|
||||
|
||||
$changed_terms = array();
|
||||
$tree = taxonomy_get_tree($vocabulary['vid']);
|
||||
$tree = taxonomy_get_tree($vocabulary->vid);
|
||||
|
||||
if (empty($tree)) {
|
||||
return;
|
||||
|
@ -517,9 +518,9 @@ function taxonomy_overview_terms_submit($form, &$form_state) {
|
|||
}
|
||||
|
||||
// Update the vocabulary hierarchy to flat or single hierarchy.
|
||||
if ($vocabulary['hierarchy'] != $hierarchy) {
|
||||
$vocabulary['hierarchy'] = $hierarchy;
|
||||
taxonomy_save_vocabulary($vocabulary);
|
||||
if ($vocabulary->hierarchy != $hierarchy) {
|
||||
$vocabulary->hierarchy = $hierarchy;
|
||||
taxonomy_vocabulary_save($vocabulary);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -626,8 +627,8 @@ function taxonomy_form_term(&$form_state, $vocabulary, $edit = array()) {
|
|||
$parent = array_keys(taxonomy_get_parents($edit['tid']));
|
||||
$form['#term'] = $edit;
|
||||
$form['#term']['parent'] = $parent;
|
||||
$form['#vocabulary'] = (array)$vocabulary;
|
||||
$form['#vocabulary']['nodes'] = drupal_map_assoc($vocabulary->nodes);
|
||||
$form['#vocabulary'] = $vocabulary;
|
||||
$form['#vocabulary']->nodes = drupal_map_assoc($vocabulary->nodes);
|
||||
|
||||
// Check for confirmation forms.
|
||||
if (isset($form_state['confirm_delete'])) {
|
||||
|
@ -741,7 +742,7 @@ function taxonomy_form_term_submit($form, &$form_state) {
|
|||
return;
|
||||
}
|
||||
// Rebuild the form to confirm enabling multiple parents.
|
||||
elseif ($form_state['clicked_button']['#value'] == t('Save') && !$form['#vocabulary']['tags'] && count($form_state['values']['parent']) > 1 && $form['#vocabulary']['hierarchy'] < 2) {
|
||||
elseif ($form_state['clicked_button']['#value'] == t('Save') && !$form['#vocabulary']->tags && count($form_state['values']['parent']) > 1 && $form['#vocabulary']->hierarchy < 2) {
|
||||
$form_state['rebuild'] = TRUE;
|
||||
$form_state['confirm_parents'] = TRUE;
|
||||
return;
|
||||
|
@ -759,7 +760,7 @@ function taxonomy_form_term_submit($form, &$form_state) {
|
|||
break;
|
||||
}
|
||||
|
||||
if (!$form['#vocabulary']['tags']) {
|
||||
if (!$form['#vocabulary']->tags) {
|
||||
$current_parent_count = count($form_state['values']['parent']);
|
||||
$previous_parent_count = count($form['#term']['parent']);
|
||||
// Root doesn't count if it's the only parent.
|
||||
|
@ -775,9 +776,9 @@ function taxonomy_form_term_submit($form, &$form_state) {
|
|||
}
|
||||
// If we've increased the number of parents and this is a single or flat
|
||||
// hierarchy, update the vocabulary immediately.
|
||||
elseif ($current_parent_count > $previous_parent_count && $form['#vocabulary']['hierarchy'] < 2) {
|
||||
$form['#vocabulary']['hierarchy'] = $current_parent_count == 1 ? 1 : 2;
|
||||
taxonomy_save_vocabulary($form['#vocabulary']);
|
||||
elseif ($current_parent_count > $previous_parent_count && $form['#vocabulary']->hierarchy < 2) {
|
||||
$form['#vocabulary']->hierarchy = $current_parent_count == 1 ? 1 : 2;
|
||||
taxonomy_vocabulary_save($form['#vocabulary']);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -871,7 +872,7 @@ function taxonomy_vocabulary_confirm_delete(&$form_state, $vid) {
|
|||
* @see taxonomy_vocabulary_confirm_delete()
|
||||
*/
|
||||
function taxonomy_vocabulary_confirm_delete_submit($form, &$form_state) {
|
||||
$status = taxonomy_del_vocabulary($form_state['values']['vid']);
|
||||
$status = taxonomy_vocabulary_delete($form_state['values']['vid']);
|
||||
drupal_set_message(t('Deleted vocabulary %name.', array('%name' => $form_state['values']['name'])));
|
||||
watchdog('taxonomy', 'Deleted vocabulary %name.', array('%name' => $form_state['values']['name']), WATCHDOG_NOTICE);
|
||||
$form_state['redirect'] = 'admin/content/taxonomy';
|
||||
|
|
|
@ -209,34 +209,31 @@ function taxonomy_admin_vocabulary_title_callback($vocabulary) {
|
|||
}
|
||||
|
||||
/**
|
||||
* Save a vocabulary given form values or an equivalent array.
|
||||
* Save a vocabulary given a vocabulary object..
|
||||
*/
|
||||
function taxonomy_save_vocabulary(&$edit) {
|
||||
$edit['nodes'] = empty($edit['nodes']) ? array() : $edit['nodes'];
|
||||
|
||||
if (!isset($edit['module'])) {
|
||||
$edit['module'] = 'taxonomy';
|
||||
function taxonomy_vocabulary_save($vocabulary) {
|
||||
if (empty($vocabulary->nodes)) {
|
||||
$vocabulary->nodes = array();
|
||||
}
|
||||
|
||||
if (!empty($edit['vid']) && !empty($edit['name'])) {
|
||||
drupal_write_record('vocabulary', $edit, 'vid');
|
||||
db_query("DELETE FROM {vocabulary_node_types} WHERE vid = %d", $edit['vid']);
|
||||
foreach ($edit['nodes'] as $type => $selected) {
|
||||
db_query("INSERT INTO {vocabulary_node_types} (vid, type) VALUES (%d, '%s')", $edit['vid'], $type);
|
||||
}
|
||||
module_invoke_all('taxonomy', 'update', 'vocabulary', $edit);
|
||||
$status = SAVED_UPDATED;
|
||||
if (!isset($vocabulary->module)) {
|
||||
$vocabulary->module = 'taxonomy';
|
||||
}
|
||||
elseif (!empty($edit['vid'])) {
|
||||
$status = taxonomy_del_vocabulary($edit['vid']);
|
||||
}
|
||||
else {
|
||||
drupal_write_record('vocabulary', $edit);
|
||||
foreach ($edit['nodes'] as $type => $selected) {
|
||||
db_query("INSERT INTO {vocabulary_node_types} (vid, type) VALUES (%d, '%s')", $edit['vid'], $type);
|
||||
|
||||
if (!empty($vocabulary->vid) && !empty($vocabulary->name)) {
|
||||
$status = drupal_write_record('vocabulary', $vocabulary, 'vid');
|
||||
db_query("DELETE FROM {vocabulary_node_types} WHERE vid = %d", $vocabulary->vid);
|
||||
foreach ($vocabulary->nodes as $type => $selected) {
|
||||
db_query("INSERT INTO {vocabulary_node_types} (vid, type) VALUES (%d, '%s')", $vocabulary->vid, $type);
|
||||
}
|
||||
module_invoke_all('taxonomy', 'insert', 'vocabulary', $edit);
|
||||
$status = SAVED_NEW;
|
||||
module_invoke_all('taxonomy_vocabulary_update', $vocabulary);
|
||||
}
|
||||
elseif (empty($vocabulary->vid)) {
|
||||
$status = drupal_write_record('vocabulary', $vocabulary);
|
||||
foreach ($vocabulary->nodes as $type => $selected) {
|
||||
db_query("INSERT INTO {vocabulary_node_types} (vid, type) VALUES (%d, '%s')", $vocabulary->vid, $type);
|
||||
}
|
||||
module_invoke_all('taxonomy_vocabulary_insert', $vocabulary);
|
||||
}
|
||||
|
||||
cache_clear_all();
|
||||
|
@ -252,7 +249,7 @@ function taxonomy_save_vocabulary(&$edit) {
|
|||
* @return
|
||||
* Constant indicating items were deleted.
|
||||
*/
|
||||
function taxonomy_del_vocabulary($vid) {
|
||||
function taxonomy_vocabulary_delete($vid) {
|
||||
$vocabulary = (array) taxonomy_vocabulary_load($vid);
|
||||
|
||||
db_query('DELETE FROM {vocabulary} WHERE vid = %d', $vid);
|
||||
|
@ -280,12 +277,12 @@ function taxonomy_del_vocabulary($vid) {
|
|||
* hieararchy of 2.
|
||||
*
|
||||
* @param $vocabulary
|
||||
* An array of the vocabulary structure.
|
||||
* A vocabulary object.
|
||||
* @param $changed_term
|
||||
* An array of the term structure that was updated.
|
||||
*/
|
||||
function taxonomy_check_vocabulary_hierarchy($vocabulary, $changed_term) {
|
||||
$tree = taxonomy_get_tree($vocabulary['vid']);
|
||||
$tree = taxonomy_get_tree($vocabulary->vid);
|
||||
$hierarchy = 0;
|
||||
foreach ($tree as $term) {
|
||||
// Update the changed term with the new parent value before comparision.
|
||||
|
@ -302,9 +299,9 @@ function taxonomy_check_vocabulary_hierarchy($vocabulary, $changed_term) {
|
|||
$hierarchy = 1;
|
||||
}
|
||||
}
|
||||
if ($hierarchy != $vocabulary['hierarchy']) {
|
||||
$vocabulary['hierarchy'] = $hierarchy;
|
||||
taxonomy_save_vocabulary($vocabulary);
|
||||
if ($hierarchy != $vocabulary->hierarchy) {
|
||||
$vocabulary->hierarchy = $hierarchy;
|
||||
taxonomy_vocabulary_save($vocabulary);
|
||||
}
|
||||
|
||||
return $hierarchy;
|
||||
|
|
|
@ -56,18 +56,18 @@ class TaxonomyVocabularyLoadTestCase extends DrupalWebTestCase {
|
|||
function testTaxonomyVocabularyLoadStaticReset() {
|
||||
// Load the first available vocabulary.
|
||||
$original_vocabulary = taxonomy_vocabulary_load(1);
|
||||
$this->assertTrue(is_object($original_vocabulary));
|
||||
|
||||
// Change the name and description.
|
||||
$edit = (array) $original_vocabulary;
|
||||
$edit['name'] = $this->randomName();
|
||||
$edit['description'] = $this->randomName();
|
||||
$this->assertNotEqual($edit['name'], $original_vocabulary->name);
|
||||
taxonomy_save_vocabulary($edit);
|
||||
$vocabulary = $original_vocabulary;
|
||||
$vocabulary->name = $this->randomName();
|
||||
$vocabulary->description = $this->randomName();
|
||||
taxonomy_vocabulary_save($vocabulary);
|
||||
|
||||
// Load the vocabulary with $reset TRUE.
|
||||
$new_vocabulary = taxonomy_vocabulary_load($original_vocabulary->vid, TRUE);
|
||||
$this->assertEqual($new_vocabulary->name, $edit['name']);
|
||||
$this->assertEqual($new_vocabulary->name, $edit['name']);
|
||||
$this->assertEqual($new_vocabulary->name, $vocabulary->name);
|
||||
$this->assertEqual($new_vocabulary->name, $vocabulary->name);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -120,7 +120,8 @@ class TaxonomyVocabularyFunctionsTestCase extends DrupalWebTestCase {
|
|||
$edit[$key] = $$key;
|
||||
|
||||
// Exec save function.
|
||||
taxonomy_save_vocabulary($edit);
|
||||
$vocabulary = (object) $edit;
|
||||
taxonomy_vocabulary_save($vocabulary);
|
||||
// After save we use $nodesBak.
|
||||
ksort($nodesBak);
|
||||
$edit['nodes'] = $nodesBak;
|
||||
|
@ -138,13 +139,8 @@ class TaxonomyVocabularyFunctionsTestCase extends DrupalWebTestCase {
|
|||
$this->assertEqual($value, $edit[$key], t('Checking value of @key.', array('@key' => $key)));
|
||||
}
|
||||
|
||||
// Delete vocabulary to avoid exception messages we create array with empty fields.
|
||||
$deleteArray = array();
|
||||
foreach($getEdit as $key => $v) {
|
||||
$deleteArray[$key] = 0;
|
||||
}
|
||||
$deleteArray['vid'] = $vid;
|
||||
taxonomy_save_vocabulary($deleteArray);
|
||||
// Delete vocabulary.
|
||||
taxonomy_vocabulary_delete($vid);
|
||||
// Checking if we deleted voc.
|
||||
$vocabularies = taxonomy_get_vocabularies();
|
||||
$vid = 0;
|
||||
|
@ -184,7 +180,9 @@ class TaxonomyTermFunctionsTestCase extends DrupalWebTestCase {
|
|||
$name = $this->randomName(20);
|
||||
$relation = 1;
|
||||
$edit['name'] = $name;
|
||||
taxonomy_save_vocabulary($edit);
|
||||
$vocabulary = (object) $edit;
|
||||
taxonomy_vocabulary_save($vocabulary);
|
||||
$edit['vid'] = $vocabulary->vid;
|
||||
|
||||
// Create term.
|
||||
$termname = $this->randomName(20);
|
||||
|
@ -234,8 +232,7 @@ class TaxonomyTermFunctionsTestCase extends DrupalWebTestCase {
|
|||
}
|
||||
|
||||
// Delete vocabulary.
|
||||
$edit['name'] = 0;
|
||||
taxonomy_save_vocabulary($edit);
|
||||
taxonomy_vocabulary_delete($edit['vid']);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -268,7 +265,9 @@ class TaxonomyTermSingleTestCase extends DrupalWebTestCase {
|
|||
$name = $this->randomName(20);
|
||||
$edit['hierarchy'] = 1;
|
||||
$edit['name'] = $name;
|
||||
taxonomy_save_vocabulary($edit);
|
||||
$vocabulary = (object) $edit;
|
||||
taxonomy_vocabulary_save($vocabulary);
|
||||
$edit['vid'] = $vocabulary->vid;
|
||||
|
||||
// Create 1st term.
|
||||
$termname = $this->randomName(20);
|
||||
|
@ -291,8 +290,7 @@ class TaxonomyTermSingleTestCase extends DrupalWebTestCase {
|
|||
$this->assertEqual($children,$getChildren[$children->tid], t('Checking children.'));
|
||||
|
||||
// Delete vocabulary.
|
||||
$edit['name'] = 0;
|
||||
taxonomy_save_vocabulary($edit);
|
||||
taxonomy_vocabulary_delete($edit['vid']);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -323,7 +321,9 @@ class TaxonomyTermMultipleTestCase extends DrupalWebTestCase {
|
|||
$name = $this->randomName(20);
|
||||
$edit['hierarchy'] = 1;
|
||||
$edit['name'] = $name;
|
||||
taxonomy_save_vocabulary($edit);
|
||||
$vocabulary = (object) $edit;
|
||||
taxonomy_vocabulary_save($vocabulary);
|
||||
$edit['vid'] = $vocabulary->vid;
|
||||
|
||||
// Create 1st term.
|
||||
$parent = array();
|
||||
|
@ -354,8 +354,7 @@ class TaxonomyTermMultipleTestCase extends DrupalWebTestCase {
|
|||
}
|
||||
|
||||
// Delete vocabulary.
|
||||
$edit['name'] = 0;
|
||||
taxonomy_save_vocabulary($edit);
|
||||
taxonomy_vocabulary_delete($edit['vid']);
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -423,12 +422,13 @@ class TaxonomyTestNodeApiTestCase extends DrupalWebTestCase {
|
|||
}
|
||||
|
||||
$name = $this->randomName(20);
|
||||
$edit['hierarchy'] = 1;
|
||||
$edit['multiple'] = 1;
|
||||
$edit['name'] = $name;
|
||||
$edit['nodes'] = array('article' => 'article');
|
||||
taxonomy_save_vocabulary($edit);
|
||||
$vid = $edit['vid']; // We need to persist vid after $edit is unset().
|
||||
$vocabulary->hierarchy = 1;
|
||||
$vocabulary->multiple = 1;
|
||||
$vocabulary->name = $name;
|
||||
$vocabulary->nodes = array('article' => 'article');
|
||||
taxonomy_vocabulary_save($vocabulary);
|
||||
$vid = $vocabulary->vid;
|
||||
|
||||
|
||||
$parent = array();
|
||||
$patternArray = array();
|
||||
|
@ -524,14 +524,8 @@ class TaxonomyTestNodeApiTestCase extends DrupalWebTestCase {
|
|||
$num_rows = db_result(db_query('SELECT COUNT(*) FROM {term_node} WHERE nid = %d', $node->nid));
|
||||
$this->assertEqual($num_rows, 0, t('Checking database field after deletion'));
|
||||
|
||||
// Delete vocabulary to avoid exception messages create array with empty fields.
|
||||
$edit = array();
|
||||
foreach($_t as $key ) {
|
||||
$edit[$key] = 0;
|
||||
}
|
||||
$edit['name'] = 0;
|
||||
$edit['vid'] = $vid;
|
||||
taxonomy_save_vocabulary($edit);
|
||||
// Delete vocabulary.
|
||||
taxonomy_vocabulary_delete($vid);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue