- Patch #1533022 by duellj, aspilicious: convert taxonomy.module entity classes to PSR-0.
parent
99243487d7
commit
98858def41
|
@ -208,8 +208,8 @@ class EntityController implements EntityControllerInterface {
|
|||
* being loaded needs to be augmented with additional data from another
|
||||
* table, such as loading node type into comments or vocabulary machine name
|
||||
* into terms, however it can also support $conditions on different tables.
|
||||
* See CommentController::buildQuery() or TaxonomyTermController::buildQuery()
|
||||
* for examples.
|
||||
* See Drupal\comment\CommentStorageController::buildQuery() or
|
||||
* Drupal\taxonomy\TermStorageController::buildQuery() for examples.
|
||||
*
|
||||
* @param $ids
|
||||
* An array of entity IDs, or FALSE to load all entities.
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
*/
|
||||
|
||||
use Drupal\node\Node;
|
||||
use Drupal\taxonomy\Term;
|
||||
|
||||
/**
|
||||
* Implements hook_help().
|
||||
|
@ -470,7 +471,7 @@ function forum_permission() {
|
|||
/**
|
||||
* Implements hook_taxonomy_term_delete().
|
||||
*/
|
||||
function forum_taxonomy_term_delete(TaxonomyTerm $term) {
|
||||
function forum_taxonomy_term_delete(Term $term) {
|
||||
// For containers, remove the tid from the forum_containers variable.
|
||||
$containers = variable_get('forum_containers', array());
|
||||
$key = array_search($term->tid, $containers);
|
||||
|
|
|
@ -6,6 +6,7 @@
|
|||
*/
|
||||
|
||||
use Drupal\node\Node;
|
||||
use Drupal\taxonomy\Term;
|
||||
|
||||
/**
|
||||
* Implements hook_help().
|
||||
|
@ -268,7 +269,7 @@ function path_form_taxonomy_form_term_alter(&$form, $form_state) {
|
|||
/**
|
||||
* Implements hook_taxonomy_term_insert().
|
||||
*/
|
||||
function path_taxonomy_term_insert(TaxonomyTerm $term) {
|
||||
function path_taxonomy_term_insert(Term $term) {
|
||||
if (isset($term->path)) {
|
||||
$path = $term->path;
|
||||
$path['alias'] = trim($path['alias']);
|
||||
|
@ -285,7 +286,7 @@ function path_taxonomy_term_insert(TaxonomyTerm $term) {
|
|||
/**
|
||||
* Implements hook_taxonomy_term_update().
|
||||
*/
|
||||
function path_taxonomy_term_update(TaxonomyTerm $term) {
|
||||
function path_taxonomy_term_update(Term $term) {
|
||||
if (isset($term->path)) {
|
||||
$path = $term->path;
|
||||
$path['alias'] = trim($path['alias']);
|
||||
|
@ -306,7 +307,7 @@ function path_taxonomy_term_update(TaxonomyTerm $term) {
|
|||
/**
|
||||
* Implements hook_taxonomy_term_delete().
|
||||
*/
|
||||
function path_taxonomy_term_delete(TaxonomyTerm $term) {
|
||||
function path_taxonomy_term_delete(Term $term) {
|
||||
// Delete all aliases associated with this term.
|
||||
path_delete(array('source' => 'taxonomy/term/' . $term->tid));
|
||||
}
|
||||
|
|
|
@ -5,6 +5,8 @@
|
|||
* Test module for Taxonomy hooks and functions not used in core.
|
||||
*/
|
||||
|
||||
use Drupal\taxonomy\Term;
|
||||
|
||||
/**
|
||||
* Implements hook_taxonomy_term_load().
|
||||
*/
|
||||
|
@ -20,7 +22,7 @@ function taxonomy_test_taxonomy_term_load(array $terms) {
|
|||
/**
|
||||
* Implements hook_taxonomy_term_insert().
|
||||
*/
|
||||
function taxonomy_test_taxonomy_term_insert(TaxonomyTerm $term) {
|
||||
function taxonomy_test_taxonomy_term_insert(Term $term) {
|
||||
if (!empty($term->antonym)) {
|
||||
db_insert('taxonomy_term_antonym')
|
||||
->fields(array(
|
||||
|
@ -34,7 +36,7 @@ function taxonomy_test_taxonomy_term_insert(TaxonomyTerm $term) {
|
|||
/**
|
||||
* Implements hook_taxonomy_term_update().
|
||||
*/
|
||||
function taxonomy_test_taxonomy_term_update(TaxonomyTerm $term) {
|
||||
function taxonomy_test_taxonomy_term_update(Term $term) {
|
||||
if (!empty($term->antonym)) {
|
||||
db_merge('taxonomy_term_antonym')
|
||||
->key(array('tid' => $term->tid))
|
||||
|
@ -48,7 +50,7 @@ function taxonomy_test_taxonomy_term_update(TaxonomyTerm $term) {
|
|||
/**
|
||||
* Implements hook_taxonomy_term_delete().
|
||||
*/
|
||||
function taxonomy_test_taxonomy_term_delete(TaxonomyTerm $term) {
|
||||
function taxonomy_test_taxonomy_term_delete(Term $term) {
|
||||
db_delete('taxonomy_term_antonym')
|
||||
->condition('tid', $term->tid)
|
||||
->execute();
|
||||
|
|
|
@ -0,0 +1,99 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Definition of Term.
|
||||
*/
|
||||
|
||||
namespace Drupal\taxonomy;
|
||||
|
||||
use Drupal\entity\Entity;
|
||||
|
||||
/**
|
||||
* Defines the taxonomy term entity.
|
||||
*/
|
||||
class Term extends Entity {
|
||||
|
||||
/**
|
||||
* The taxonomy term ID.
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
public $tid;
|
||||
|
||||
/**
|
||||
* The taxonomy vocabulary ID this term belongs to.
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
public $vid;
|
||||
|
||||
/**
|
||||
* Name of the term.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $name;
|
||||
|
||||
/**
|
||||
* Description of the term.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $description;
|
||||
|
||||
/**
|
||||
* The text format name for the term's description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $format;
|
||||
|
||||
/**
|
||||
* The weight of this term.
|
||||
*
|
||||
* This property stores the weight of this term in relation to other terms of
|
||||
* the same vocabulary.
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
public $weight = 0;
|
||||
|
||||
/**
|
||||
* The parent term(s) for this term.
|
||||
*
|
||||
* This property is not loaded, but may be used to modify the term parents via
|
||||
* Term::save().
|
||||
*
|
||||
* The property can be set to an array of term IDs. An entry of 0 means this
|
||||
* term does not have any parents. When omitting this variable during an
|
||||
* update, the existing hierarchy for the term remains unchanged.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $parent;
|
||||
|
||||
/**
|
||||
* The machine name of the vocabulary the term is assigned to.
|
||||
*
|
||||
* If not given, this value will be set automatically by loading the
|
||||
* vocabulary based on the $entity->vid property.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $vocabulary_machine_name;
|
||||
|
||||
/**
|
||||
* Implements Drupal\entity\EntityInterface::id().
|
||||
*/
|
||||
public function id() {
|
||||
return $this->tid;
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements Drupal\entity\EntityInterface::bundle().
|
||||
*/
|
||||
public function bundle() {
|
||||
return $this->vocabulary_machine_name;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,146 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Definition of TermStorageController.
|
||||
*/
|
||||
|
||||
namespace Drupal\taxonomy;
|
||||
|
||||
use Drupal\entity\EntityInterface;
|
||||
use Drupal\entity\EntityDatabaseStorageController;
|
||||
|
||||
/**
|
||||
* Defines a Controller class for taxonomy terms.
|
||||
*/
|
||||
class TermStorageController extends EntityDatabaseStorageController {
|
||||
|
||||
/**
|
||||
* Overrides Drupal\entity\EntityDatabaseStorageController::create().
|
||||
*
|
||||
* @param array $values
|
||||
* An array of values to set, keyed by property name. A value for the
|
||||
* vocabulary ID ('vid') is required.
|
||||
*/
|
||||
public function create(array $values) {
|
||||
$entity = parent::create($values);
|
||||
// Ensure the vocabulary machine name is initialized as it is used as the
|
||||
// bundle key.
|
||||
// @todo Move to Term::bundle() once field API has been converted
|
||||
// to make use of it.
|
||||
if (!isset($entity->vocabulary_machine_name)) {
|
||||
$vocabulary = taxonomy_vocabulary_load($entity->vid);
|
||||
$entity->vocabulary_machine_name = $vocabulary->machine_name;
|
||||
}
|
||||
// Save new terms with no parents by default.
|
||||
if (!isset($entity->parent)) {
|
||||
$entity->parent = array(0);
|
||||
}
|
||||
return $entity;
|
||||
}
|
||||
|
||||
/**
|
||||
* Overrides Drupal\entity\EntityDatabaseStorageController::buildQuery().
|
||||
*/
|
||||
protected function buildQuery($ids, $conditions = array(), $revision_id = FALSE) {
|
||||
$query = parent::buildQuery($ids, $conditions, $revision_id);
|
||||
$query->addTag('translatable');
|
||||
$query->addTag('term_access');
|
||||
// When name is passed as a condition use LIKE.
|
||||
if (isset($conditions['name'])) {
|
||||
$query_conditions = &$query->conditions();
|
||||
foreach ($query_conditions as $key => $condition) {
|
||||
if ($condition['field'] == 'base.name') {
|
||||
$query_conditions[$key]['operator'] = 'LIKE';
|
||||
$query_conditions[$key]['value'] = db_like($query_conditions[$key]['value']);
|
||||
}
|
||||
}
|
||||
}
|
||||
// Add the machine name field from the {taxonomy_vocabulary} table.
|
||||
$query->innerJoin('taxonomy_vocabulary', 'v', 'base.vid = v.vid');
|
||||
$query->addField('v', 'machine_name', 'vocabulary_machine_name');
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* Overrides Drupal\entity\EntityDatabaseStorageController::cacheGet().
|
||||
*/
|
||||
protected function cacheGet($ids, $conditions = array()) {
|
||||
$terms = parent::cacheGet($ids, $conditions);
|
||||
// Name matching is case insensitive, note that with some collations
|
||||
// LOWER() and drupal_strtolower() may return different results.
|
||||
foreach ($terms as $term) {
|
||||
if (isset($conditions['name']) && drupal_strtolower($conditions['name'] != drupal_strtolower($term->name))) {
|
||||
unset($terms[$term->tid]);
|
||||
}
|
||||
}
|
||||
return $terms;
|
||||
}
|
||||
|
||||
/**
|
||||
* Overrides Drupal\entity\EntityDatabaseStorageController::postDelete().
|
||||
*/
|
||||
protected function postDelete($entities) {
|
||||
// See if any of the term's children are about to be become orphans.
|
||||
$orphans = array();
|
||||
foreach (array_keys($entities) as $tid) {
|
||||
if ($children = taxonomy_term_load_children($tid)) {
|
||||
foreach ($children as $child) {
|
||||
// If the term has multiple parents, we don't delete it.
|
||||
$parents = taxonomy_term_load_parents($child->tid);
|
||||
// Because the parent has already been deleted, the parent count might
|
||||
// be 0.
|
||||
if (count($parents) <= 1) {
|
||||
$orphans[] = $child->tid;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Delete term hierarchy information after looking up orphans but before
|
||||
// deleting them so that their children/parent information is consistent.
|
||||
db_delete('taxonomy_term_hierarchy')
|
||||
->condition('tid', array_keys($entities))
|
||||
->execute();
|
||||
|
||||
if (!empty($orphans)) {
|
||||
taxonomy_term_delete_multiple($orphans);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Overrides Drupal\entity\EntityDatabaseStorageController::postSave().
|
||||
*/
|
||||
protected function postSave(EntityInterface $entity, $update) {
|
||||
if (isset($entity->parent)) {
|
||||
db_delete('taxonomy_term_hierarchy')
|
||||
->condition('tid', $entity->tid)
|
||||
->execute();
|
||||
|
||||
$query = db_insert('taxonomy_term_hierarchy')
|
||||
->fields(array('tid', 'parent'));
|
||||
|
||||
foreach ($entity->parent as $parent) {
|
||||
$query->values(array(
|
||||
'tid' => $entity->tid,
|
||||
'parent' => $parent
|
||||
));
|
||||
}
|
||||
$query->execute();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements Drupal\entity\EntityControllerInterface::resetCache().
|
||||
*/
|
||||
public function resetCache(array $ids = NULL) {
|
||||
drupal_static_reset('taxonomy_term_count_nodes');
|
||||
drupal_static_reset('taxonomy_get_tree');
|
||||
drupal_static_reset('taxonomy_get_tree:parents');
|
||||
drupal_static_reset('taxonomy_get_tree:terms');
|
||||
drupal_static_reset('taxonomy_term_load_parents');
|
||||
drupal_static_reset('taxonomy_term_load_parents_all');
|
||||
drupal_static_reset('taxonomy_term_load_children');
|
||||
parent::resetCache($ids);
|
||||
}
|
||||
}
|
|
@ -0,0 +1,70 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Definition of Vocabulary.
|
||||
*/
|
||||
|
||||
namespace Drupal\taxonomy;
|
||||
|
||||
use Drupal\entity\Entity;
|
||||
|
||||
/**
|
||||
* Defines the taxonomy vocabulary entity.
|
||||
*/
|
||||
class Vocabulary extends Entity {
|
||||
|
||||
/**
|
||||
* The taxonomy vocabulary ID.
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
public $vid;
|
||||
|
||||
/**
|
||||
* Name of the vocabulary.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $name;
|
||||
|
||||
/**
|
||||
* The vocabulary machine name.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $machine_name;
|
||||
|
||||
/**
|
||||
* Description of the vocabulary.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $description;
|
||||
|
||||
/**
|
||||
* The type of hierarchy allowed within the vocabulary.
|
||||
*
|
||||
* Possible values:
|
||||
* - TAXONOMY_HIERARCHY_DISABLED: No parents.
|
||||
* - TAXONOMY_HIERARCHY_SINGLE: Single parent.
|
||||
* - TAXONOMY_HIERARCHY_MULTIPLE: Multiple parents.
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
public $hierarchy = TAXONOMY_HIERARCHY_DISABLED;
|
||||
|
||||
/**
|
||||
* The weight of this vocabulary in relation to other vocabularies.
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
public $weight = 0;
|
||||
|
||||
/**
|
||||
* Implements Drupal\entity\EntityInterface::id().
|
||||
*/
|
||||
public function id() {
|
||||
return $this->vid;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,89 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Definition of VocabularyStorageController.
|
||||
*/
|
||||
|
||||
namespace Drupal\taxonomy;
|
||||
|
||||
use Drupal\entity\EntityInterface;
|
||||
use Drupal\entity\EntityDatabaseStorageController;
|
||||
|
||||
/**
|
||||
* Defines a controller class for taxonomy vocabularies.
|
||||
*/
|
||||
class VocabularyStorageController extends EntityDatabaseStorageController {
|
||||
|
||||
/**
|
||||
* Overrides Drupal\entity\EntityDatabaseStorageController::buildQuery().
|
||||
*/
|
||||
protected function buildQuery($ids, $conditions = array(), $revision_id = FALSE) {
|
||||
$query = parent::buildQuery($ids, $conditions, $revision_id);
|
||||
$query->addTag('translatable');
|
||||
$query->orderBy('base.weight');
|
||||
$query->orderBy('base.name');
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* Overrides Drupal\entity\EntityDatabaseStorageController::postSave().
|
||||
*/
|
||||
protected function postSave(EntityInterface $entity, $update) {
|
||||
if (!$update) {
|
||||
field_attach_create_bundle('taxonomy_term', $entity->machine_name);
|
||||
}
|
||||
elseif ($entity->original->machine_name != $entity->machine_name) {
|
||||
field_attach_rename_bundle('taxonomy_term', $entity->original->machine_name, $entity->machine_name);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Overrides Drupal\entity\EntityDatabaseStorageController::preDelete().
|
||||
*/
|
||||
protected function preDelete($entities) {
|
||||
// Only load terms without a parent, child terms will get deleted too.
|
||||
$tids = db_query('SELECT t.tid FROM {taxonomy_term_data} t INNER JOIN {taxonomy_term_hierarchy} th ON th.tid = t.tid WHERE t.vid IN (:vids) AND th.parent = 0', array(':vids' => array_keys($entities)))->fetchCol();
|
||||
taxonomy_term_delete_multiple($tids);
|
||||
}
|
||||
|
||||
/**
|
||||
* Overrides Drupal\entity\EntityDatabaseStorageController::postDelete().
|
||||
*/
|
||||
protected function postDelete($entities) {
|
||||
// Load all Taxonomy module fields and delete those which use only this
|
||||
// vocabulary.
|
||||
$taxonomy_fields = field_read_fields(array('module' => 'taxonomy'));
|
||||
foreach ($taxonomy_fields as $field_name => $taxonomy_field) {
|
||||
$modified_field = FALSE;
|
||||
// Term reference fields may reference terms from more than one
|
||||
// vocabulary.
|
||||
foreach ($taxonomy_field['settings']['allowed_values'] as $key => $allowed_value) {
|
||||
foreach ($entities as $vocabulary) {
|
||||
if ($allowed_value['vocabulary'] == $vocabulary->machine_name) {
|
||||
unset($taxonomy_field['settings']['allowed_values'][$key]);
|
||||
$modified_field = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($modified_field) {
|
||||
if (empty($taxonomy_field['settings']['allowed_values'])) {
|
||||
field_delete_field($field_name);
|
||||
}
|
||||
else {
|
||||
// Update the field definition with the new allowed values.
|
||||
field_update_field($taxonomy_field);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements Drupal\entity\DrupalEntityControllerInterface::resetCache().
|
||||
*/
|
||||
public function resetCache(array $ids = NULL) {
|
||||
drupal_static_reset('taxonomy_vocabulary_get_names');
|
||||
parent::resetCache($ids);
|
||||
cache_clear_all();
|
||||
}
|
||||
}
|
|
@ -5,6 +5,9 @@
|
|||
* Administrative page callbacks for the taxonomy module.
|
||||
*/
|
||||
|
||||
use Drupal\taxonomy\Term;
|
||||
use Drupal\taxonomy\Vocabulary;
|
||||
|
||||
/**
|
||||
* Form builder to list and manage vocabularies.
|
||||
*
|
||||
|
@ -101,7 +104,7 @@ function theme_taxonomy_overview_vocabularies($variables) {
|
|||
/**
|
||||
* Form builder for the vocabulary editing form.
|
||||
*
|
||||
* @param TaxonomyVocabulary|null $vocabulary
|
||||
* @param Drupal\taxonomy\Vocabulary|null $vocabulary
|
||||
* (optional) The taxonomy vocabulary entity to edit. If NULL or omitted, the
|
||||
* form creates a new vocabulary.
|
||||
*
|
||||
|
@ -109,12 +112,12 @@ function theme_taxonomy_overview_vocabularies($variables) {
|
|||
* @see taxonomy_form_vocabulary_submit()
|
||||
* @see taxonomy_form_vocabulary_validate()
|
||||
*/
|
||||
function taxonomy_form_vocabulary($form, &$form_state, TaxonomyVocabulary $vocabulary = NULL) {
|
||||
function taxonomy_form_vocabulary($form, &$form_state, Vocabulary $vocabulary = NULL) {
|
||||
// During initial form build, add the entity to the form state for use
|
||||
// during form building and processing. During a rebuild, use what is in the
|
||||
// form state.
|
||||
if (!isset($form_state['vocabulary'])) {
|
||||
// Create a new TaxonomyVocabulary entity for the add form.
|
||||
// Create a new Vocabulary entity for the add form.
|
||||
if (!isset($vocabulary)) {
|
||||
$vocabulary = entity_create('taxonomy_vocabulary', array(
|
||||
// Default the new vocabulary to the site's default language. This is
|
||||
|
@ -241,14 +244,14 @@ function taxonomy_form_vocabulary_submit($form, &$form_state) {
|
|||
* Display a tree of all the terms in a vocabulary, with options to edit
|
||||
* each one. The form is made drag and drop by the theme function.
|
||||
*
|
||||
* @param TaxonomyVocabulary $vocabulary
|
||||
* @param Drupal\taxonomy\Vocabulary $vocabulary
|
||||
* The taxonomy vocabulary entity to list terms for.
|
||||
*
|
||||
* @ingroup forms
|
||||
* @see taxonomy_overview_terms_submit()
|
||||
* @see theme_taxonomy_overview_terms()
|
||||
*/
|
||||
function taxonomy_overview_terms($form, &$form_state, TaxonomyVocabulary $vocabulary) {
|
||||
function taxonomy_overview_terms($form, &$form_state, Vocabulary $vocabulary) {
|
||||
global $pager_page_array, $pager_total, $pager_total_items;
|
||||
|
||||
// Check for confirmation forms.
|
||||
|
@ -642,10 +645,10 @@ function theme_taxonomy_overview_terms($variables) {
|
|||
/**
|
||||
* Form function for the term edit form.
|
||||
*
|
||||
* @param TaxonomyTerm|null $term
|
||||
* @param Drupal\taxonomy\Term|null $term
|
||||
* (optional) The taxonomy term entity to edit. If NULL or omitted, the form
|
||||
* creates a new term.
|
||||
* @param TaxonomyVocabulary|null $vocabulary
|
||||
* @param Drupal\taxonomy\Vocabulary|null $vocabulary
|
||||
* (optional) A taxonomy vocabulary entity to create the term in. Required if
|
||||
* the term is omitted.
|
||||
*
|
||||
|
@ -653,12 +656,12 @@ function theme_taxonomy_overview_terms($variables) {
|
|||
* @see taxonomy_form_term_validate()
|
||||
* @see taxonomy_form_term_submit()
|
||||
*/
|
||||
function taxonomy_form_term($form, &$form_state, TaxonomyTerm $term = NULL, TaxonomyVocabulary $vocabulary = NULL) {
|
||||
function taxonomy_form_term($form, &$form_state, Term $term = NULL, Vocabulary $vocabulary = NULL) {
|
||||
// During initial form build, add the term entity to the form state for use
|
||||
// during form building and processing. During a rebuild, use what is in the
|
||||
// form state.
|
||||
if (!isset($form_state['term'])) {
|
||||
// Create a new TaxonomyTerm entity for the add form.
|
||||
// Create a new Term entity for the add form.
|
||||
if (!isset($term)) {
|
||||
$term = entity_create('taxonomy_term', array(
|
||||
'vid' => $vocabulary->vid,
|
||||
|
|
|
@ -32,10 +32,10 @@ function hook_taxonomy_vocabulary_load(array $vocabularies) {
|
|||
* Modules implementing this hook can act on the vocabulary object before it is
|
||||
* inserted or updated.
|
||||
*
|
||||
* @param TaxonomyVocabulary $vocabulary
|
||||
* @param Drupal\taxonomy\Vocabulary $vocabulary
|
||||
* A taxonomy vocabulary entity.
|
||||
*/
|
||||
function hook_taxonomy_vocabulary_presave(TaxonomyVocabulary $vocabulary) {
|
||||
function hook_taxonomy_vocabulary_presave(Drupal\taxonomy\Vocabulary $vocabulary) {
|
||||
$vocabulary->foo = 'bar';
|
||||
}
|
||||
|
||||
|
@ -45,10 +45,10 @@ function hook_taxonomy_vocabulary_presave(TaxonomyVocabulary $vocabulary) {
|
|||
* Modules implementing this hook can act on the vocabulary object when saved
|
||||
* to the database.
|
||||
*
|
||||
* @param TaxonomyVocabulary $vocabulary
|
||||
* @param Drupal\taxonomy\Vocabulary $vocabulary
|
||||
* A taxonomy vocabulary entity.
|
||||
*/
|
||||
function hook_taxonomy_vocabulary_insert(TaxonomyVocabulary $vocabulary) {
|
||||
function hook_taxonomy_vocabulary_insert(Drupal\taxonomy\Vocabulary $vocabulary) {
|
||||
if ($vocabulary->synonyms) {
|
||||
variable_set('taxonomy_' . $vocabulary->vid . '_synonyms', TRUE);
|
||||
}
|
||||
|
@ -59,10 +59,10 @@ function hook_taxonomy_vocabulary_insert(TaxonomyVocabulary $vocabulary) {
|
|||
*
|
||||
* Modules implementing this hook can act on the vocabulary object when updated.
|
||||
*
|
||||
* @param TaxonomyVocabulary $vocabulary
|
||||
* @param Drupal\taxonomy\Vocabulary $vocabulary
|
||||
* A taxonomy vocabulary entity.
|
||||
*/
|
||||
function hook_taxonomy_vocabulary_update(TaxonomyVocabulary $vocabulary) {
|
||||
function hook_taxonomy_vocabulary_update(Drupal\taxonomy\Vocabulary $vocabulary) {
|
||||
$status = $vocabulary->synonyms ? TRUE : FALSE;
|
||||
if ($vocabulary->synonyms) {
|
||||
variable_set('taxonomy_' . $vocabulary->vid . '_synonyms', $status);
|
||||
|
@ -76,13 +76,13 @@ function hook_taxonomy_vocabulary_update(TaxonomyVocabulary $vocabulary) {
|
|||
* field_attach_delete_bundle() is called and before the vocabulary is actually
|
||||
* removed from the database.
|
||||
*
|
||||
* @param TaxonomyVocabulary $vocabulary
|
||||
* @param Drupal\taxonomy\Vocabulary $vocabulary
|
||||
* The taxonomy vocabulary entity that is about to be deleted.
|
||||
*
|
||||
* @see hook_taxonomy_vocabulary_delete()
|
||||
* @see taxonomy_vocabulary_delete()
|
||||
*/
|
||||
function hook_taxonomy_vocabulary_predelete(TaxonomyVocabulary $vocabulary) {
|
||||
function hook_taxonomy_vocabulary_predelete(Drupal\taxonomy\Vocabulary $vocabulary) {
|
||||
if (variable_get('taxonomy_' . $vocabulary->vid . '_synonyms', FALSE)) {
|
||||
variable_del('taxonomy_' . $vocabulary->vid . '_synonyms');
|
||||
}
|
||||
|
@ -95,13 +95,13 @@ function hook_taxonomy_vocabulary_predelete(TaxonomyVocabulary $vocabulary) {
|
|||
* field_attach_delete_bundle() has been called and after the vocabulary has
|
||||
* been removed from the database.
|
||||
*
|
||||
* @param TaxonomyVocabulary $vocabulary
|
||||
* @param Drupal\taxonomy\Vocabulary $vocabulary
|
||||
* The taxonomy vocabulary entity that has been deleted.
|
||||
*
|
||||
* @see hook_taxonomy_vocabulary_predelete()
|
||||
* @see taxonomy_vocabulary_delete()
|
||||
*/
|
||||
function hook_taxonomy_vocabulary_delete(TaxonomyVocabulary $vocabulary) {
|
||||
function hook_taxonomy_vocabulary_delete(Drupal\taxonomy\Vocabulary $vocabulary) {
|
||||
if (variable_get('taxonomy_' . $vocabulary->vid . '_synonyms', FALSE)) {
|
||||
variable_del('taxonomy_' . $vocabulary->vid . '_synonyms');
|
||||
}
|
||||
|
@ -136,10 +136,10 @@ function hook_taxonomy_term_load(array $terms) {
|
|||
* Modules implementing this hook can act on the term object before it is
|
||||
* inserted or updated.
|
||||
*
|
||||
* @param TaxonomyTerm $term
|
||||
* @param Drupal\taxonomy\Term $term
|
||||
* A taxonomy term entity.
|
||||
*/
|
||||
function hook_taxonomy_term_presave(TaxonomyTerm $term) {
|
||||
function hook_taxonomy_term_presave(Drupal\taxonomy\Term $term) {
|
||||
$term->foo = 'bar';
|
||||
}
|
||||
|
||||
|
@ -149,10 +149,10 @@ function hook_taxonomy_term_presave(TaxonomyTerm $term) {
|
|||
* Modules implementing this hook can act on the term object when saved to
|
||||
* the database.
|
||||
*
|
||||
* @param TaxonomyTerm $term
|
||||
* @param Drupal\taxonomy\Term $term
|
||||
* A taxonomy term entity.
|
||||
*/
|
||||
function hook_taxonomy_term_insert(TaxonomyTerm $term) {
|
||||
function hook_taxonomy_term_insert(Drupal\taxonomy\Term $term) {
|
||||
if (!empty($term->synonyms)) {
|
||||
foreach (explode ("\n", str_replace("\r", '', $term->synonyms)) as $synonym) {
|
||||
if ($synonym) {
|
||||
|
@ -172,10 +172,10 @@ function hook_taxonomy_term_insert(TaxonomyTerm $term) {
|
|||
*
|
||||
* Modules implementing this hook can act on the term object when updated.
|
||||
*
|
||||
* @param TaxonomyTerm $term
|
||||
* @param Drupal\taxonomy\Term $term
|
||||
* A taxonomy term entity.
|
||||
*/
|
||||
function hook_taxonomy_term_update(TaxonomyTerm $term) {
|
||||
function hook_taxonomy_term_update(Drupal\taxonomy\Term $term) {
|
||||
hook_taxonomy_term_delete($term);
|
||||
if (!empty($term->synonyms)) {
|
||||
foreach (explode ("\n", str_replace("\r", '', $term->synonyms)) as $synonym) {
|
||||
|
@ -198,12 +198,12 @@ function hook_taxonomy_term_update(TaxonomyTerm $term) {
|
|||
* field_attach_delete() is called and before the term is actually removed from
|
||||
* the database.
|
||||
*
|
||||
* @param TaxonomyTerm $term
|
||||
* @param Drupal\taxonomy\Term $term
|
||||
* The taxonomy term entity that is about to be deleted.
|
||||
*
|
||||
* @see taxonomy_term_delete()
|
||||
*/
|
||||
function hook_taxonomy_term_predelete(TaxonomyTerm $term) {
|
||||
function hook_taxonomy_term_predelete(Drupal\taxonomy\Term $term) {
|
||||
db_delete('term_synoynm')->condition('tid', $term->tid)->execute();
|
||||
}
|
||||
|
||||
|
@ -213,12 +213,12 @@ function hook_taxonomy_term_predelete(TaxonomyTerm $term) {
|
|||
* This hook is invoked from taxonomy_term_delete() after field_attach_delete()
|
||||
* has been called and after the term has been removed from the database.
|
||||
*
|
||||
* @param TaxonomyTerm $term
|
||||
* @param Drupal\taxonomy\Term $term
|
||||
* The taxonomy term entity that has been deleted.
|
||||
*
|
||||
* @see taxonomy_term_delete()
|
||||
*/
|
||||
function hook_taxonomy_term_delete(TaxonomyTerm $term) {
|
||||
function hook_taxonomy_term_delete(Drupal\taxonomy\Term $term) {
|
||||
db_delete('term_synoynm')->condition('tid', $term->tid)->execute();
|
||||
}
|
||||
|
||||
|
|
|
@ -1,369 +0,0 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @file
|
||||
* Entity classes and controllers for Taxonomy module.
|
||||
*/
|
||||
|
||||
use Drupal\entity\Entity;
|
||||
use Drupal\entity\EntityInterface;
|
||||
use Drupal\entity\EntityDatabaseStorageController;
|
||||
|
||||
/**
|
||||
* Defines the taxonomy term entity.
|
||||
*/
|
||||
class TaxonomyTerm extends Entity {
|
||||
|
||||
/**
|
||||
* The taxonomy term ID.
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
public $tid;
|
||||
|
||||
/**
|
||||
* The taxonomy vocabulary ID this term belongs to.
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
public $vid;
|
||||
|
||||
/**
|
||||
* Name of the term.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $name;
|
||||
|
||||
/**
|
||||
* (optional) Description of the term.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $description;
|
||||
|
||||
/**
|
||||
* (optional) The text format name for the term's description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $format;
|
||||
|
||||
/**
|
||||
* (optional) The weight of this term in relation to other terms of the same
|
||||
* vocabulary.
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
public $weight = 0;
|
||||
|
||||
/**
|
||||
* (optional) The parent term(s) for this term.
|
||||
*
|
||||
* This property is not loaded, but may be used to modify the term parents via
|
||||
* TaxonomyTerm::save().
|
||||
*
|
||||
* The property can be set to an array of term IDs. An entry of 0 means this
|
||||
* term does not have any parents. When omitting this variable during an
|
||||
* update, the existing hierarchy for the term remains unchanged.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
public $parent;
|
||||
|
||||
/**
|
||||
* (optional) The machine name of the vocabulary the term is assigned to. If
|
||||
* not given, this value will be set automatically by loading the vocabulary
|
||||
* based on the $entity->vid property.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $vocabulary_machine_name;
|
||||
|
||||
/**
|
||||
* Implements EntityInterface::id().
|
||||
*/
|
||||
public function id() {
|
||||
return $this->tid;
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements EntityInterface::bundle().
|
||||
*/
|
||||
public function bundle() {
|
||||
return $this->vocabulary_machine_name;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Controller class for taxonomy terms.
|
||||
*/
|
||||
class TaxonomyTermController extends EntityDatabaseStorageController {
|
||||
|
||||
/**
|
||||
* Overrides EntityDatabaseStorageController::create().
|
||||
*
|
||||
* @param array $values
|
||||
* An array of values to set, keyed by property name. A value for the
|
||||
* vocabulary ID ('vid') is required.
|
||||
*/
|
||||
public function create(array $values) {
|
||||
$entity = parent::create($values);
|
||||
// Ensure the vocabulary machine name is initialized as it is used as bundle
|
||||
// key.
|
||||
// @todo Move to TaxonomyTerm::bundle() once field API has been converted
|
||||
// to make use of it.
|
||||
if (!isset($entity->vocabulary_machine_name)) {
|
||||
$vocabulary = taxonomy_vocabulary_load($entity->vid);
|
||||
$entity->vocabulary_machine_name = $vocabulary->machine_name;
|
||||
}
|
||||
// Save new terms with no parents by default.
|
||||
if (!isset($entity->parent)) {
|
||||
$entity->parent = array(0);
|
||||
}
|
||||
return $entity;
|
||||
}
|
||||
|
||||
/**
|
||||
* Overrides EntityDatabaseStorageController::buildQuery().
|
||||
*/
|
||||
protected function buildQuery($ids, $conditions = array(), $revision_id = FALSE) {
|
||||
$query = parent::buildQuery($ids, $conditions, $revision_id);
|
||||
$query->addTag('translatable');
|
||||
$query->addTag('term_access');
|
||||
// When name is passed as a condition use LIKE.
|
||||
if (isset($conditions['name'])) {
|
||||
$query_conditions = &$query->conditions();
|
||||
foreach ($query_conditions as $key => $condition) {
|
||||
if ($condition['field'] == 'base.name') {
|
||||
$query_conditions[$key]['operator'] = 'LIKE';
|
||||
$query_conditions[$key]['value'] = db_like($query_conditions[$key]['value']);
|
||||
}
|
||||
}
|
||||
}
|
||||
// Add the machine name field from the {taxonomy_vocabulary} table.
|
||||
$query->innerJoin('taxonomy_vocabulary', 'v', 'base.vid = v.vid');
|
||||
$query->addField('v', 'machine_name', 'vocabulary_machine_name');
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* Overrides EntityDatabaseStorageController::cacheGet().
|
||||
*/
|
||||
protected function cacheGet($ids, $conditions = array()) {
|
||||
$terms = parent::cacheGet($ids, $conditions);
|
||||
// Name matching is case insensitive, note that with some collations
|
||||
// LOWER() and drupal_strtolower() may return different results.
|
||||
foreach ($terms as $term) {
|
||||
if (isset($conditions['name']) && drupal_strtolower($conditions['name'] != drupal_strtolower($term->name))) {
|
||||
unset($terms[$term->tid]);
|
||||
}
|
||||
}
|
||||
return $terms;
|
||||
}
|
||||
|
||||
/**
|
||||
* Overrides EntityDatabaseStorageController::postDelete().
|
||||
*/
|
||||
protected function postDelete($entities) {
|
||||
// See if any of the term's children are about to be become orphans.
|
||||
$orphans = array();
|
||||
foreach (array_keys($entities) as $tid) {
|
||||
if ($children = taxonomy_term_load_children($tid)) {
|
||||
foreach ($children as $child) {
|
||||
// If the term has multiple parents, we don't delete it.
|
||||
$parents = taxonomy_term_load_parents($child->tid);
|
||||
// Because the parent has already been deleted, the parent count might
|
||||
// be 0.
|
||||
if (count($parents) <= 1) {
|
||||
$orphans[] = $child->tid;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Delete term hierarchy information after looking up orphans but before
|
||||
// deleting them so that their children/parent information is consistent.
|
||||
db_delete('taxonomy_term_hierarchy')
|
||||
->condition('tid', array_keys($entities))
|
||||
->execute();
|
||||
|
||||
if (!empty($orphans)) {
|
||||
taxonomy_term_delete_multiple($orphans);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Overrides EntityDatabaseStorageController::postSave().
|
||||
*/
|
||||
protected function postSave(EntityInterface $entity, $update) {
|
||||
if (isset($entity->parent)) {
|
||||
db_delete('taxonomy_term_hierarchy')
|
||||
->condition('tid', $entity->tid)
|
||||
->execute();
|
||||
|
||||
$query = db_insert('taxonomy_term_hierarchy')
|
||||
->fields(array('tid', 'parent'));
|
||||
|
||||
foreach ($entity->parent as $parent) {
|
||||
$query->values(array(
|
||||
'tid' => $entity->tid,
|
||||
'parent' => $parent
|
||||
));
|
||||
}
|
||||
$query->execute();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements Drupal\entity\EntityControllerInterface::resetCache().
|
||||
*/
|
||||
public function resetCache(array $ids = NULL) {
|
||||
drupal_static_reset('taxonomy_term_count_nodes');
|
||||
drupal_static_reset('taxonomy_get_tree');
|
||||
drupal_static_reset('taxonomy_get_tree:parents');
|
||||
drupal_static_reset('taxonomy_get_tree:terms');
|
||||
drupal_static_reset('taxonomy_term_load_parents');
|
||||
drupal_static_reset('taxonomy_term_load_parents_all');
|
||||
drupal_static_reset('taxonomy_term_load_children');
|
||||
parent::resetCache($ids);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Defines the taxonomy vocabulary entity.
|
||||
*/
|
||||
class TaxonomyVocabulary extends Entity {
|
||||
|
||||
/**
|
||||
* The taxonomy vocabulary ID.
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
public $vid;
|
||||
|
||||
/**
|
||||
* Name of the vocabulary.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $name;
|
||||
|
||||
/**
|
||||
* The vocabulary machine name.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $machine_name;
|
||||
|
||||
/**
|
||||
* (optional) Description of the vocabulary.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
public $description;
|
||||
|
||||
/**
|
||||
* The type of hierarchy allowed within the vocabulary.
|
||||
*
|
||||
* Possible values:
|
||||
* - TAXONOMY_HIERARCHY_DISABLED: No parents.
|
||||
* - TAXONOMY_HIERARCHY_SINGLE: Single parent.
|
||||
* - TAXONOMY_HIERARCHY_MULTIPLE: Multiple parents.
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
public $hierarchy = TAXONOMY_HIERARCHY_DISABLED;
|
||||
|
||||
/**
|
||||
* (optional) The weight of this vocabulary in relation to other vocabularies.
|
||||
*
|
||||
* @var integer
|
||||
*/
|
||||
public $weight = 0;
|
||||
|
||||
/**
|
||||
* Implements EntityInterface::id().
|
||||
*/
|
||||
public function id() {
|
||||
return $this->vid;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Controller class for taxonomy vocabularies.
|
||||
*/
|
||||
class TaxonomyVocabularyController extends EntityDatabaseStorageController {
|
||||
|
||||
/**
|
||||
* Overrides EntityDatabaseStorageController::buildQuery().
|
||||
*/
|
||||
protected function buildQuery($ids, $conditions = array(), $revision_id = FALSE) {
|
||||
$query = parent::buildQuery($ids, $conditions, $revision_id);
|
||||
$query->addTag('translatable');
|
||||
$query->orderBy('base.weight');
|
||||
$query->orderBy('base.name');
|
||||
return $query;
|
||||
}
|
||||
|
||||
/**
|
||||
* Overrides EntityDatabaseStorageController::postSave().
|
||||
*/
|
||||
protected function postSave(EntityInterface $entity, $update) {
|
||||
if (!$update) {
|
||||
field_attach_create_bundle('taxonomy_term', $entity->machine_name);
|
||||
}
|
||||
elseif ($entity->original->machine_name != $entity->machine_name) {
|
||||
field_attach_rename_bundle('taxonomy_term', $entity->original->machine_name, $entity->machine_name);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Overrides EntityDatabaseStorageController::preDelete().
|
||||
*/
|
||||
protected function preDelete($entities) {
|
||||
// Only load terms without a parent, child terms will get deleted too.
|
||||
$tids = db_query('SELECT t.tid FROM {taxonomy_term_data} t INNER JOIN {taxonomy_term_hierarchy} th ON th.tid = t.tid WHERE t.vid IN (:vids) AND th.parent = 0', array(':vids' => array_keys($entities)))->fetchCol();
|
||||
taxonomy_term_delete_multiple($tids);
|
||||
}
|
||||
|
||||
/**
|
||||
* Overrides EntityDatabaseStorageController::postDelete().
|
||||
*/
|
||||
protected function postDelete($entities) {
|
||||
// Load all Taxonomy module fields and delete those which use only this
|
||||
// vocabulary.
|
||||
$taxonomy_fields = field_read_fields(array('module' => 'taxonomy'));
|
||||
foreach ($taxonomy_fields as $field_name => $taxonomy_field) {
|
||||
$modified_field = FALSE;
|
||||
// Term reference fields may reference terms from more than one
|
||||
// vocabulary.
|
||||
foreach ($taxonomy_field['settings']['allowed_values'] as $key => $allowed_value) {
|
||||
foreach ($entities as $vocabulary) {
|
||||
if ($allowed_value['vocabulary'] == $vocabulary->machine_name) {
|
||||
unset($taxonomy_field['settings']['allowed_values'][$key]);
|
||||
$modified_field = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ($modified_field) {
|
||||
if (empty($taxonomy_field['settings']['allowed_values'])) {
|
||||
field_delete_field($field_name);
|
||||
}
|
||||
else {
|
||||
// Update the field definition with the new allowed values.
|
||||
field_update_field($taxonomy_field);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Implements Drupal\entity\EntityControllerInterface::resetCache().
|
||||
*/
|
||||
public function resetCache(array $ids = NULL) {
|
||||
drupal_static_reset('taxonomy_vocabulary_get_names');
|
||||
parent::resetCache($ids);
|
||||
cache_clear_all();
|
||||
}
|
||||
}
|
|
@ -5,6 +5,5 @@ version = VERSION
|
|||
core = 8.x
|
||||
dependencies[] = options
|
||||
dependencies[] = entity
|
||||
files[] = taxonomy.entity.inc
|
||||
files[] = taxonomy.test
|
||||
configure = admin/structure/taxonomy
|
||||
|
|
|
@ -6,6 +6,8 @@
|
|||
*/
|
||||
|
||||
use Drupal\node\Node;
|
||||
use Drupal\taxonomy\Term;
|
||||
use Drupal\taxonomy\Vocabulary;
|
||||
|
||||
/**
|
||||
* Denotes that no term in the vocabulary has a parent.
|
||||
|
@ -109,8 +111,8 @@ function taxonomy_entity_info() {
|
|||
$return = array(
|
||||
'taxonomy_term' => array(
|
||||
'label' => t('Taxonomy term'),
|
||||
'entity class' => 'TaxonomyTerm',
|
||||
'controller class' => 'TaxonomyTermController',
|
||||
'entity class' => 'Drupal\taxonomy\Term',
|
||||
'controller class' => 'Drupal\taxonomy\TermStorageController',
|
||||
'base table' => 'taxonomy_term_data',
|
||||
'uri callback' => 'taxonomy_term_uri',
|
||||
'fieldable' => TRUE,
|
||||
|
@ -145,8 +147,8 @@ function taxonomy_entity_info() {
|
|||
}
|
||||
$return['taxonomy_vocabulary'] = array(
|
||||
'label' => t('Taxonomy vocabulary'),
|
||||
'entity class' => 'TaxonomyVocabulary',
|
||||
'controller class' => 'TaxonomyVocabularyController',
|
||||
'entity class' => 'Drupal\taxonomy\Vocabulary',
|
||||
'controller class' => 'Drupal\taxonomy\VocabularyStorageController',
|
||||
'base table' => 'taxonomy_vocabulary',
|
||||
'entity keys' => array(
|
||||
'id' => 'vid',
|
||||
|
@ -426,17 +428,17 @@ function taxonomy_term_access($op, $term) {
|
|||
/**
|
||||
* Return the vocabulary name given the vocabulary object.
|
||||
*/
|
||||
function taxonomy_admin_vocabulary_title_callback(TaxonomyVocabulary $vocabulary) {
|
||||
function taxonomy_admin_vocabulary_title_callback(Vocabulary $vocabulary) {
|
||||
return check_plain($vocabulary->name);
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves a vocabulary.
|
||||
*
|
||||
* @param TaxonomyVocabulary $vocabulary
|
||||
* @param Drupal\taxonomy\Vocabulary $vocabulary
|
||||
* The taxonomy vocabulary entity to be saved.
|
||||
*/
|
||||
function taxonomy_vocabulary_save(TaxonomyVocabulary $vocabulary) {
|
||||
function taxonomy_vocabulary_save(Vocabulary $vocabulary) {
|
||||
return $vocabulary->save();
|
||||
}
|
||||
|
||||
|
@ -464,7 +466,7 @@ function taxonomy_vocabulary_delete_multiple(array $vids) {
|
|||
/**
|
||||
* Implements hook_taxonomy_vocabulary_update().
|
||||
*/
|
||||
function taxonomy_taxonomy_vocabulary_update(TaxonomyVocabulary $vocabulary) {
|
||||
function taxonomy_taxonomy_vocabulary_update(Vocabulary $vocabulary) {
|
||||
// Reflect machine name changes in the definitions of existing 'taxonomy'
|
||||
// fields.
|
||||
if (!empty($vocabulary->original->machine_name) && $vocabulary->original->machine_name != $vocabulary->machine_name) {
|
||||
|
@ -497,7 +499,7 @@ function taxonomy_taxonomy_vocabulary_update(TaxonomyVocabulary $vocabulary) {
|
|||
* term has multiple parents then the vocabulary will be given a hierarchy of
|
||||
* TAXONOMY_HIERARCHY_MULTIPLE.
|
||||
*
|
||||
* @param TaxonomyVocabulary $vocabulary
|
||||
* @param Drupal\taxonomy\Vocabulary $vocabulary
|
||||
* A taxonomy vocabulary entity.
|
||||
* @param $changed_term
|
||||
* An array of the term structure that was updated.
|
||||
|
@ -505,7 +507,7 @@ function taxonomy_taxonomy_vocabulary_update(TaxonomyVocabulary $vocabulary) {
|
|||
* @return
|
||||
* An integer that represents the level of the vocabulary's hierarchy.
|
||||
*/
|
||||
function taxonomy_check_vocabulary_hierarchy(TaxonomyVocabulary $vocabulary, $changed_term) {
|
||||
function taxonomy_check_vocabulary_hierarchy(Vocabulary $vocabulary, $changed_term) {
|
||||
$tree = taxonomy_get_tree($vocabulary->vid);
|
||||
$hierarchy = TAXONOMY_HIERARCHY_DISABLED;
|
||||
foreach ($tree as $term) {
|
||||
|
@ -534,7 +536,7 @@ function taxonomy_check_vocabulary_hierarchy(TaxonomyVocabulary $vocabulary, $ch
|
|||
/**
|
||||
* Saves a term object to the database.
|
||||
*
|
||||
* @param TaxonomyTerm $term
|
||||
* @param Drupal\taxonomy\Term $term
|
||||
* The taxonomy term entity to be saved.
|
||||
*
|
||||
* @return
|
||||
|
@ -542,7 +544,7 @@ function taxonomy_check_vocabulary_hierarchy(TaxonomyVocabulary $vocabulary, $ch
|
|||
* (SAVED_UPDATED). When inserting a new term, $term->tid will contain the
|
||||
* term ID of the newly created term.
|
||||
*/
|
||||
function taxonomy_term_save(TaxonomyTerm $term) {
|
||||
function taxonomy_term_save(Term $term) {
|
||||
return $term->save();
|
||||
}
|
||||
|
||||
|
@ -569,7 +571,7 @@ function taxonomy_term_delete_multiple(array $tids) {
|
|||
/**
|
||||
* Generate an array for rendering the given term.
|
||||
*
|
||||
* @param TaxonomyTerm $term
|
||||
* @param Drupal\taxonomy\Term $term
|
||||
* A taxonomy term entity.
|
||||
* @param $view_mode
|
||||
* View mode, e.g. 'full', 'teaser'...
|
||||
|
@ -580,7 +582,7 @@ function taxonomy_term_delete_multiple(array $tids) {
|
|||
* @return
|
||||
* An array as expected by drupal_render().
|
||||
*/
|
||||
function taxonomy_term_view(TaxonomyTerm $term, $view_mode = 'full', $langcode = NULL) {
|
||||
function taxonomy_term_view(Term $term, $view_mode = 'full', $langcode = NULL) {
|
||||
if (!isset($langcode)) {
|
||||
$langcode = $GLOBALS['language_content']->langcode;
|
||||
}
|
||||
|
@ -655,10 +657,10 @@ function template_preprocess_taxonomy_term(&$variables) {
|
|||
/**
|
||||
* Returns whether the current page is the page of the passed-in term.
|
||||
*
|
||||
* @param TaxonomyTerm $term
|
||||
* @param Drupal\taxonomy\Term $term
|
||||
* A taxonomy term entity.
|
||||
*/
|
||||
function taxonomy_term_is_page(TaxonomyTerm $term) {
|
||||
function taxonomy_term_is_page(Term $term) {
|
||||
$page_term = menu_get_object('taxonomy_term', 2);
|
||||
return (!empty($page_term) ? $page_term->tid == $term->tid : FALSE);
|
||||
}
|
||||
|
@ -989,7 +991,7 @@ function taxonomy_vocabulary_load_multiple($vids = array(), array $conditions =
|
|||
* @param int $vid
|
||||
* The vocabulary's ID.
|
||||
*
|
||||
* @return TaxonomyVocabulary|false
|
||||
* @return Drupal\taxonomy\Vocabulary|false
|
||||
* The taxonomy vocabulary entity, if exists, FALSE otherwise. Results are
|
||||
* statically cached.
|
||||
*
|
||||
|
@ -1005,7 +1007,7 @@ function taxonomy_vocabulary_load($vid) {
|
|||
* @param $name
|
||||
* The vocabulary's machine name.
|
||||
*
|
||||
* @return TaxonomyVocabulary|false
|
||||
* @return Drupal\taxonomy\Vocabulary|false
|
||||
* The taxonomy vocabulary entity, if exists, FALSE otherwise. Results are
|
||||
* statically cached.
|
||||
*
|
||||
|
@ -1022,7 +1024,7 @@ function taxonomy_vocabulary_machine_name_load($name) {
|
|||
* @param $tid
|
||||
* A term's ID
|
||||
*
|
||||
* @return TaxonomyTerm|false
|
||||
* @return Drupal\taxonomy\Term|false
|
||||
* A taxonomy term entity. Results are statically cached.
|
||||
*/
|
||||
function taxonomy_term_load($tid) {
|
||||
|
@ -1035,7 +1037,7 @@ function taxonomy_term_load($tid) {
|
|||
/**
|
||||
* Helper function for array_map purposes.
|
||||
*/
|
||||
function _taxonomy_get_tid_from_term(TaxonomyTerm $term) {
|
||||
function _taxonomy_get_tid_from_term(Term $term) {
|
||||
return $term->tid;
|
||||
}
|
||||
|
||||
|
@ -1349,13 +1351,13 @@ function taxonomy_field_formatter_prepare_view($entity_type, $entities, $field,
|
|||
/**
|
||||
* Title callback for term pages.
|
||||
*
|
||||
* @param TaxonomyTerm $term
|
||||
* @param Drupal\taxonomy\Term $term
|
||||
* A taxonomy term entity.
|
||||
*
|
||||
* @return
|
||||
* The term name to be used as the page title.
|
||||
*/
|
||||
function taxonomy_term_title(TaxonomyTerm $term) {
|
||||
function taxonomy_term_title(Term $term) {
|
||||
return $term->name;
|
||||
}
|
||||
|
||||
|
@ -1649,7 +1651,7 @@ function taxonomy_delete_node_index(Node $node) {
|
|||
/**
|
||||
* Implements hook_taxonomy_term_delete().
|
||||
*/
|
||||
function taxonomy_taxonomy_term_delete(TaxonomyTerm $term) {
|
||||
function taxonomy_taxonomy_term_delete(Term $term) {
|
||||
if (variable_get('taxonomy_maintain_index_table', TRUE)) {
|
||||
// Clean up the {taxonomy_index} table when terms are deleted.
|
||||
db_delete('taxonomy_index')->condition('tid', $term->tid)->execute();
|
||||
|
|
|
@ -5,13 +5,16 @@
|
|||
* Page callbacks for the taxonomy module.
|
||||
*/
|
||||
|
||||
use Drupal\taxonomy\Term;
|
||||
use Drupal\taxonomy\Vocabulary;
|
||||
|
||||
/**
|
||||
* Menu callback; displays all nodes associated with a term.
|
||||
*
|
||||
* @param TaxonomyTerm $term
|
||||
* @param Drupal\taxonomy\Term $term
|
||||
* The taxonomy term entity.
|
||||
*/
|
||||
function taxonomy_term_page(TaxonomyTerm $term) {
|
||||
function taxonomy_term_page(Term $term) {
|
||||
// Assign the term name as the page title.
|
||||
drupal_set_title($term->name);
|
||||
|
||||
|
@ -60,10 +63,10 @@ function taxonomy_term_page(TaxonomyTerm $term) {
|
|||
/**
|
||||
* Generate the content feed for a taxonomy term.
|
||||
*
|
||||
* @param TaxonomyTerm $term
|
||||
* @param Drupal\taxonomy\Term $term
|
||||
* The taxonomy term entity.
|
||||
*/
|
||||
function taxonomy_term_feed(TaxonomyTerm $term) {
|
||||
function taxonomy_term_feed(Term $term) {
|
||||
$channel['link'] = url('taxonomy/term/' . $term->tid, array('absolute' => TRUE));
|
||||
$channel['title'] = variable_get('site_name', 'Drupal') . ' - ' . $term->name;
|
||||
// Only display the description if we have a single term, to avoid clutter and confusion.
|
||||
|
|
Loading…
Reference in New Issue