c2368e9ff0b338db10e2c922b46bd8b31d10b45c
[yaffs-website] / web / core / modules / content_moderation / src / ModerationInformationInterface.php
1 <?php
2
3 namespace Drupal\content_moderation;
4
5 use Drupal\Core\Entity\ContentEntityInterface;
6 use Drupal\Core\Entity\EntityInterface;
7 use Drupal\Core\Entity\EntityTypeInterface;
8
9 /**
10  * Interface for moderation_information service.
11  */
12 interface ModerationInformationInterface {
13
14   /**
15    * Determines if an entity is moderated.
16    *
17    * @param \Drupal\Core\Entity\EntityInterface $entity
18    *   The entity we may be moderating.
19    *
20    * @return bool
21    *   TRUE if this entity is moderated, FALSE otherwise.
22    */
23   public function isModeratedEntity(EntityInterface $entity);
24
25   /**
26    * Determines if an entity type can have moderated entities.
27    *
28    * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
29    *   An entity type object.
30    *
31    * @return bool
32    *   TRUE if this entity type can have moderated entities, FALSE otherwise.
33    */
34   public function canModerateEntitiesOfEntityType(EntityTypeInterface $entity_type);
35
36   /**
37    * Determines if an entity type/bundle entities should be moderated.
38    *
39    * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
40    *   The entity type definition to check.
41    * @param string $bundle
42    *   The bundle to check.
43    *
44    * @return bool
45    *   TRUE if an entity type/bundle entities should be moderated, FALSE
46    *   otherwise.
47    */
48   public function shouldModerateEntitiesOfBundle(EntityTypeInterface $entity_type, $bundle);
49
50   /**
51    * Loads the latest revision of a specific entity.
52    *
53    * @param string $entity_type_id
54    *   The entity type ID.
55    * @param int $entity_id
56    *   The entity ID.
57    *
58    * @return \Drupal\Core\Entity\ContentEntityInterface|null
59    *   The latest entity revision or NULL, if the entity type / entity doesn't
60    *   exist.
61    */
62   public function getLatestRevision($entity_type_id, $entity_id);
63
64   /**
65    * Returns the revision ID of the latest revision of the given entity.
66    *
67    * @param string $entity_type_id
68    *   The entity type ID.
69    * @param int $entity_id
70    *   The entity ID.
71    *
72    * @return int
73    *   The revision ID of the latest revision for the specified entity, or
74    *   NULL if there is no such entity.
75    */
76   public function getLatestRevisionId($entity_type_id, $entity_id);
77
78   /**
79    * Returns the revision ID of the default revision for the specified entity.
80    *
81    * @param string $entity_type_id
82    *   The entity type ID.
83    * @param int $entity_id
84    *   The entity ID.
85    *
86    * @return int
87    *   The revision ID of the default revision, or NULL if the entity was
88    *   not found.
89    */
90   public function getDefaultRevisionId($entity_type_id, $entity_id);
91
92   /**
93    * Returns the revision translation affected translation of a revision.
94    *
95    * @param \Drupal\Core\Entity\ContentEntityInterface $entity
96    *   The content entity.
97    *
98    * @return \Drupal\Core\Entity\ContentEntityInterface
99    *   The revision translation affected translation.
100    */
101   public function getAffectedRevisionTranslation(ContentEntityInterface $entity);
102
103   /**
104    * Determines if an entity is a latest revision.
105    *
106    * @param \Drupal\Core\Entity\ContentEntityInterface $entity
107    *   A revisionable content entity.
108    *
109    * @return bool
110    *   TRUE if the specified object is the latest revision of its entity,
111    *   FALSE otherwise.
112    */
113   public function isLatestRevision(ContentEntityInterface $entity);
114
115   /**
116    * Determines if a pending revision exists for the specified entity.
117    *
118    * @param \Drupal\Core\Entity\ContentEntityInterface $entity
119    *   The entity which may or may not have a pending revision.
120    *
121    * @return bool
122    *   TRUE if this entity has pending revisions available, FALSE otherwise.
123    */
124   public function hasPendingRevision(ContentEntityInterface $entity);
125
126   /**
127    * Determines if an entity is "live".
128    *
129    * A "live" entity revision is one whose latest revision is also the default,
130    * and whose moderation state, if any, is a published state.
131    *
132    * @param \Drupal\Core\Entity\ContentEntityInterface $entity
133    *   The entity to check.
134    *
135    * @return bool
136    *   TRUE if the specified entity is a live revision, FALSE otherwise.
137    */
138   public function isLiveRevision(ContentEntityInterface $entity);
139
140   /**
141    * Determines if the default revision for the given entity is published.
142    *
143    * The default revision is the same as the entity retrieved by "default" from
144    * the storage handler. If the entity is translated, check if any of the
145    * translations are published.
146    *
147    * @param \Drupal\Core\Entity\ContentEntityInterface $entity
148    *   The entity being saved.
149    *
150    * @return bool
151    *   TRUE if the default revision is published. FALSE otherwise.
152    */
153   public function isDefaultRevisionPublished(ContentEntityInterface $entity);
154
155   /**
156    * Gets the workflow for the given content entity.
157    *
158    * @param \Drupal\Core\Entity\ContentEntityInterface $entity
159    *   The content entity to get the workflow for.
160    *
161    * @return \Drupal\workflows\WorkflowInterface|null
162    *   The workflow entity. NULL if there is no workflow.
163    */
164   public function getWorkflowForEntity(ContentEntityInterface $entity);
165
166   /**
167    * Gets unsupported features for a given entity type.
168    *
169    * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
170    *   The entity type to get the unsupported features for.
171    *
172    * @return array
173    *   An array of unsupported features for this entity type.
174    */
175   public function getUnsupportedFeatures(EntityTypeInterface $entity_type);
176
177 }