class CommentItem
Same name and namespace in other branches
- 10 core/modules/comment/src/Plugin/Field/FieldType/CommentItem.php \Drupal\comment\Plugin\Field\FieldType\CommentItem
- 9 core/modules/comment/src/Plugin/Field/FieldType/CommentItem.php \Drupal\comment\Plugin\Field\FieldType\CommentItem
- 8.9.x core/modules/comment/src/Plugin/Field/FieldType/CommentItem.php \Drupal\comment\Plugin\Field\FieldType\CommentItem
- main core/modules/comment/src/Plugin/Field/FieldType/CommentItem.php \Drupal\comment\Plugin\Field\FieldType\CommentItem
Plugin implementation of the 'comment' field type.
Attributes
#[FieldType(id: "comment", label: new TranslatableMarkup("Comments"), description: new TranslatableMarkup("Enable and configure how comments look and behave"), default_widget: "comment_default", default_formatter: "comment_default", list_class: CommentFieldItemList::class, cardinality: 1)]
Hierarchy
- class \Drupal\comment\Plugin\Field\FieldType\CommentItem implements \Drupal\comment\Plugin\Field\FieldType\CommentItemInterface extends \Drupal\Core\Field\FieldItemBase
Expanded class hierarchy of CommentItem
File
-
core/
modules/ comment/ src/ Plugin/ Field/ FieldType/ CommentItem.php, line 24
Namespace
Drupal\comment\Plugin\Field\FieldTypeView source
class CommentItem extends FieldItemBase implements CommentItemInterface {
/**
* {@inheritdoc}
*/
public static function defaultStorageSettings() {
return [
'comment_type' => '',
] + parent::defaultStorageSettings();
}
/**
* {@inheritdoc}
*/
public static function defaultFieldSettings() {
return [
'default_mode' => CommentManagerInterface::COMMENT_MODE_THREADED,
'per_page' => 50,
'form_location' => CommentItemInterface::FORM_BELOW,
'anonymous' => AnonymousContact::Forbidden->value,
'preview' => CommentPreviewMode::Optional->value,
] + parent::defaultFieldSettings();
}
/**
* {@inheritdoc}
*/
public static function propertyDefinitions(FieldStorageDefinitionInterface $field_definition) {
$properties['status'] = DataDefinition::create('integer')->setLabel(new TranslatableMarkup('Comment status'))
->setRequired(TRUE);
$properties['cid'] = DataDefinition::create('integer')->setLabel(new TranslatableMarkup('Last comment ID'));
$properties['last_comment_timestamp'] = DataDefinition::create('integer')->setLabel(new TranslatableMarkup('Last comment timestamp'))
->setDescription(new TranslatableMarkup('The time that the last comment was created.'));
$properties['last_comment_name'] = DataDefinition::create('string')->setLabel(new TranslatableMarkup('Last comment name'))
->setDescription(new TranslatableMarkup('The name of the user posting the last comment.'));
$properties['last_comment_uid'] = DataDefinition::create('integer')->setLabel(new TranslatableMarkup('Last comment user ID'));
$properties['comment_count'] = DataDefinition::create('integer')->setLabel(new TranslatableMarkup('Number of comments'))
->setDescription(new TranslatableMarkup('The number of comments.'));
return $properties;
}
/**
* {@inheritdoc}
*/
public static function schema(FieldStorageDefinitionInterface $field_definition) {
return [
'columns' => [
'status' => [
'description' => 'Whether comments are allowed on this entity: 0 = no, 1 = closed (read only), 2 = open (read/write).',
'type' => 'int',
'default' => 0,
],
],
'indexes' => [],
'foreign keys' => [],
];
}
/**
* {@inheritdoc}
*/
public function fieldSettingsForm(array $form, FormStateInterface $form_state) {
$element = [];
$settings = $this->getSettings();
$anonymous_user = new AnonymousUserSession();
$element['default_mode'] = [
'#type' => 'checkbox',
'#title' => $this->t('Threading'),
'#default_value' => $settings['default_mode'],
'#description' => $this->t('Show comment replies in a threaded list.'),
];
$element['per_page'] = [
'#type' => 'number',
'#title' => $this->t('Comments per page'),
'#default_value' => $settings['per_page'],
'#required' => TRUE,
'#min' => 0,
'#max' => 1000,
'#description' => $this->t('Enter 0 to show all comments.'),
];
$element['anonymous'] = [
'#type' => 'select',
'#title' => $this->t('Anonymous commenting'),
'#default_value' => $settings['anonymous'],
'#options' => AnonymousContact::asOptions(),
'#access' => $anonymous_user->hasPermission('post comments'),
];
$element['form_location'] = [
'#type' => 'checkbox',
'#title' => $this->t('Show reply form on the same page as comments'),
'#default_value' => $settings['form_location'],
];
$element['preview'] = [
'#type' => 'radios',
'#title' => $this->t('Preview comment'),
'#default_value' => $settings['preview'],
'#options' => CommentPreviewMode::asOptions(),
];
return $element;
}
/**
* {@inheritdoc}
*/
public static function mainPropertyName() {
return 'status';
}
/**
* {@inheritdoc}
*/
public function isEmpty() {
// There is always a value for this field, it is one of the values of the
// \Drupal\comment\CommentingStatus enum.
return FALSE;
}
/**
* {@inheritdoc}
*/
public function storageSettingsForm(array &$form, FormStateInterface $form_state, $has_data) {
$element = [];
// @todo Inject entity storage once typed-data supports container injection.
// See https://www.drupal.org/node/2053415 for more details.
$comment_types = CommentType::loadMultiple();
$options = [];
$entity_type = $this->getEntity()
->getEntityTypeId();
foreach ($comment_types as $comment_type) {
if ($comment_type->getTargetEntityTypeId() == $entity_type) {
$options[$comment_type->id()] = $comment_type->label();
}
}
$element['comment_type'] = [
'#type' => 'select',
'#title' => $this->t('Comment type'),
'#options' => $options,
'#required' => TRUE,
'#description' => $this->t('Select the Comment type to use for this comment field. Manage the comment types from the <a href=":url">administration overview page</a>.', [
':url' => Url::fromRoute('entity.comment_type.collection')->toString(),
]),
'#default_value' => $this->getSetting('comment_type'),
'#disabled' => $has_data,
];
return $element;
}
/**
* {@inheritdoc}
*/
public static function generateSampleValue(FieldDefinitionInterface $field_definition) {
$statuses = array_column(CommentingStatus::cases(), 'value');
return [
'status' => $statuses[mt_rand(0, count($statuses) - 1)],
];
}
}
Members
| Title Sort descending | Deprecated | Modifiers | Object type | Summary | Overriden Title | Overrides |
|---|---|---|---|---|---|---|
| CommentItem::defaultFieldSettings | public static | function | Overrides FieldItemBase::defaultFieldSettings | |||
| CommentItem::defaultStorageSettings | public static | function | Overrides FieldItemBase::defaultStorageSettings | |||
| CommentItem::fieldSettingsForm | public | function | Overrides FieldItemBase::fieldSettingsForm | |||
| CommentItem::generateSampleValue | public static | function | Overrides FieldItemBase::generateSampleValue | |||
| CommentItem::isEmpty | public | function | Overrides Map::isEmpty | |||
| CommentItem::mainPropertyName | public static | function | Overrides FieldItemBase::mainPropertyName | |||
| CommentItem::propertyDefinitions | public static | function | Overrides FieldItemInterface::propertyDefinitions | |||
| CommentItem::schema | public static | function | Overrides FieldItemInterface::schema | |||
| CommentItem::storageSettingsForm | public | function | Overrides FieldItemBase::storageSettingsForm | |||
| CommentItemInterface::CLOSED | Deprecated | constant | Comments for this entity are closed. | |||
| CommentItemInterface::FORM_BELOW | constant | Comment form should be shown below post or list of comments. | ||||
| CommentItemInterface::FORM_SEPARATE_PAGE | constant | Comment form should be displayed on a separate page. | ||||
| CommentItemInterface::HIDDEN | Deprecated | constant | Comments for this entity are hidden. | |||
| CommentItemInterface::OPEN | Deprecated | constant | Comments for this entity are open. | |||
| DependencySerializationTrait::$_entityStorages | protected | property | An array of entity type IDs keyed by the property name of their storages. | |||
| DependencySerializationTrait::$_serviceIds | protected | property | An array of service IDs keyed by property name used for serialization. | |||
| DependencySerializationTrait::__sleep | public | function | 2 | |||
| DependencySerializationTrait::__wakeup | public | function | 2 | |||
| FieldItemBase::calculateDependencies | public static | function | Calculates dependencies for field items. | Overrides FieldItemInterface::calculateDependencies | 3 | |
| FieldItemBase::calculateStorageDependencies | public static | function | Calculates dependencies for field items on the storage level. | Overrides FieldItemInterface::calculateStorageDependencies | 1 | |
| FieldItemBase::delete | public | function | Defines custom delete behavior for field values. | Overrides FieldItemInterface::delete | 2 | |
| FieldItemBase::deleteRevision | public | function | Defines custom revision delete behavior for field values. | Overrides FieldItemInterface::deleteRevision | ||
| FieldItemBase::fieldSettingsFromConfigData | public static | function | Returns a settings array in the field type's canonical representation. | Overrides FieldItemInterface::fieldSettingsFromConfigData | 1 | |
| FieldItemBase::fieldSettingsSummary | public static | function | Returns a short summary of the field's field-level settings. | Overrides FieldItemInterface::fieldSettingsSummary | 1 | |
| FieldItemBase::fieldSettingsToConfigData | public static | function | Returns a settings array that can be stored as a configuration value. | Overrides FieldItemInterface::fieldSettingsToConfigData | 1 | |
| FieldItemBase::getEntity | public | function | Gets the entity that field belongs to. | Overrides FieldItemInterface::getEntity | ||
| FieldItemBase::getFieldDefinition | public | function | Gets the field definition. | Overrides FieldItemInterface::getFieldDefinition | ||
| FieldItemBase::getLangcode | public | function | Gets the langcode of the field values held in the object. | Overrides FieldItemInterface::getLangcode | ||
| FieldItemBase::getSetting | protected | function | Returns the value of a field setting. | |||
| FieldItemBase::getSettings | protected | function | Returns the array of field settings. | |||
| FieldItemBase::onDependencyRemoval | public static | function | Informs the plugin that a dependency of the field will be deleted. | Overrides FieldItemInterface::onDependencyRemoval | 1 | |
| FieldItemBase::postSave | public | function | Defines custom post-save behavior for field values. | Overrides FieldItemInterface::postSave | 2 | |
| FieldItemBase::preSave | public | function | Defines custom presave behavior for field values. | Overrides FieldItemInterface::preSave | 7 | |
| FieldItemBase::setValue | public | function | Overrides \Drupal\Core\TypedData\TypedData::setValue(). | Overrides Map::setValue | 4 | |
| FieldItemBase::storageSettingsFromConfigData | public static | function | Returns a settings array in the field type's canonical representation. | Overrides FieldItemInterface::storageSettingsFromConfigData | 2 | |
| FieldItemBase::storageSettingsSummary | public static | function | Returns a short summary of the field's storage-level settings. | Overrides FieldItemInterface::storageSettingsSummary | 1 | |
| FieldItemBase::storageSettingsToConfigData | public static | function | Returns a settings array that can be stored as a configuration value. | Overrides FieldItemInterface::storageSettingsToConfigData | 2 | |
| FieldItemBase::view | public | function | Returns a renderable array for a single field item. | Overrides FieldItemInterface::view | ||
| FieldItemBase::writePropertyValue | protected | function | Different to the parent Map class, we avoid creating property objects as far as possible in order to optimize performance. Thus we just update $this->values if no property object has been created yet. |
Overrides Map::writePropertyValue | ||
| FieldItemBase::__construct | public | function | Constructs a TypedData object given its definition and context. | Overrides TypedData::__construct | 3 | |
| FieldItemBase::__get | public | function | Magic method: Gets a property value. | Overrides FieldItemInterface::__get | 3 | |
| FieldItemBase::__isset | public | function | Magic method: Determines whether a property is set. | Overrides FieldItemInterface::__isset | ||
| FieldItemBase::__set | public | function | Magic method: Sets a property value. | Overrides FieldItemInterface::__set | 1 | |
| FieldItemBase::__unset | public | function | Magic method: Unsets a property. | Overrides FieldItemInterface::__unset | ||
| Map::$definition | protected | property | The data definition. | Overrides TypedData::$definition | ||
| Map::$properties | protected | property | The array of properties. | |||
| Map::$values | protected | property | An array of values for the contained properties. | |||
| Map::applyDefaultValue | public | function | Applies the default value. | Overrides TypedData::applyDefaultValue | 4 | |
| Map::get | public | function | Gets a property object. | Overrides ComplexDataInterface::get | ||
| Map::getIterator | public | function | Retrieves the iterator for the object. | |||
| Map::getProperties | public | function | Gets an array of property objects. | Overrides ComplexDataInterface::getProperties | ||
| Map::getString | public | function | Returns a string representation of the data. | Overrides TypedData::getString | ||
| Map::getValue | public | function | Gets the data value. | Overrides TypedData::getValue | 1 | |
| Map::onChange | public | function | Overrides TraversableTypedDataInterface::onChange | 4 | ||
| Map::set | public | function | Sets a property value. | Overrides ComplexDataInterface::set | ||
| Map::toArray | public | function | Returns an array of all property values. | Overrides ComplexDataInterface::toArray | 1 | |
| Map::__clone | public | function | Magic method: Implements a deep clone. | |||
| StringTranslationTrait::$stringTranslation | protected | property | The string translation service. | 3 | ||
| StringTranslationTrait::formatPlural | protected | function | Formats a string containing a count of items. | |||
| StringTranslationTrait::getNumberOfPlurals | protected | function | Returns the number of plurals supported by a given language. | |||
| StringTranslationTrait::getStringTranslation | protected | function | Gets the string translation service. | |||
| StringTranslationTrait::setStringTranslation | public | function | Sets the string translation service to use. | 2 | ||
| StringTranslationTrait::t | protected | function | Translates a string to the current language or to a given language. | 1 | ||
| TypedData::$name | protected | property | The property name. | |||
| TypedData::$parent | protected | property | The parent typed data object. | |||
| TypedData::createInstance | public static | function | Constructs a TypedData object given its definition and context. | Overrides TypedDataInterface::createInstance | ||
| TypedData::getConstraints | public | function | Gets a list of validation constraints. | Overrides TypedDataInterface::getConstraints | 9 | |
| TypedData::getDataDefinition | public | function | Gets the data definition. | Overrides TypedDataInterface::getDataDefinition | ||
| TypedData::getName | public | function | Returns the name of a property or item. | Overrides TypedDataInterface::getName | ||
| TypedData::getParent | public | function | Returns the parent data structure; i.e. either complex data or a list. | Overrides TypedDataInterface::getParent | ||
| TypedData::getPluginDefinition | public | function | Gets the definition of the plugin implementation. | Overrides PluginInspectionInterface::getPluginDefinition | ||
| TypedData::getPluginId | public | function | Gets the plugin ID of the plugin instance. | Overrides PluginInspectionInterface::getPluginId | ||
| TypedData::getPropertyPath | public | function | Returns the property path of the data. | Overrides TypedDataInterface::getPropertyPath | ||
| TypedData::getRoot | public | function | Returns the root of the typed data tree. | Overrides TypedDataInterface::getRoot | ||
| TypedData::setContext | public | function | Sets the context of a property or item via a context aware parent. | Overrides TypedDataInterface::setContext | ||
| TypedData::validate | public | function | Validates the currently set data value. | Overrides TypedDataInterface::validate | ||
| TypedDataTrait::$typedDataManager | protected | property | The typed data manager used for creating the data types. | |||
| TypedDataTrait::getTypedDataManager | public | function | Gets the typed data manager. | 2 | ||
| TypedDataTrait::setTypedDataManager | public | function | Sets the typed data manager. | 2 |
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.