Further Drupal 8.6.4 changes. Some core files were not committed before a commit...
[yaffs-website] / web / core / modules / comment / src / Entity / Comment.php
index 8ce0c73edb9efd967d04e34160155edd6330c718..e0745d3da0e3d67b1a798ef646c49dc6aec96f43 100644 (file)
@@ -56,7 +56,9 @@ use Drupal\user\UserInterface;
  *   links = {
  *     "canonical" = "/comment/{comment}",
  *     "delete-form" = "/comment/{comment}/delete",
+ *     "delete-multiple-form" = "/admin/content/comment/delete",
  *     "edit-form" = "/comment/{comment}/edit",
+ *     "create" = "/comment",
  *   },
  *   bundle_entity_type = "comment_type",
  *   field_ui_base_route  = "entity.comment_type.edit_form",
@@ -72,6 +74,8 @@ class Comment extends ContentEntityBase implements CommentInterface {
 
   /**
    * The thread for which a lock was acquired.
+   *
+   * @var string
    */
   protected $threadLock = '';
 
@@ -138,16 +142,15 @@ class Comment extends ContentEntityBase implements CommentInterface {
         } while (!\Drupal::lock()->acquire($lock_name));
         $this->threadLock = $lock_name;
       }
-      // We test the value with '===' because we need to modify anonymous
-      // users as well.
-      if ($this->getOwnerId() === \Drupal::currentUser()->id() && \Drupal::currentUser()->isAuthenticated()) {
-        $this->setAuthorName(\Drupal::currentUser()->getUsername());
-      }
       $this->setThread($thread);
-      if (!$this->getHostname()) {
-        // Ensure a client host from the current request.
-        $this->setHostname(\Drupal::request()->getClientIP());
-      }
+    }
+    // The entity fields for name and mail have no meaning if the user is not
+    // Anonymous. Set them to NULL to make it clearer that they are not used.
+    // For anonymous users see \Drupal\comment\CommentForm::form() for mail,
+    // and \Drupal\comment\CommentForm::buildEntity() for name setting.
+    if (!$this->getOwner()->isAnonymous()) {
+      $this->set('name', NULL);
+      $this->set('mail', NULL);
     }
   }
 
@@ -284,7 +287,8 @@ class Comment extends ContentEntityBase implements CommentInterface {
       ->setLabel(t('Hostname'))
       ->setDescription(t("The comment author's hostname."))
       ->setTranslatable(TRUE)
-      ->setSetting('max_length', 128);
+      ->setSetting('max_length', 128)
+      ->setDefaultValueCallback(static::class . '::getDefaultHostname');
 
     $fields['created'] = BaseFieldDefinition::create('created')
       ->setLabel(t('Created'))
@@ -559,10 +563,20 @@ class Comment extends ContentEntityBase implements CommentInterface {
    * @see ::baseFieldDefinitions()
    *
    * @return bool
-   *  TRUE if the comment should be published, FALSE otherwise.
+   *   TRUE if the comment should be published, FALSE otherwise.
    */
   public static function getDefaultStatus() {
     return \Drupal::currentUser()->hasPermission('skip comment approval') ? CommentInterface::PUBLISHED : CommentInterface::NOT_PUBLISHED;
   }
 
+  /**
+   * Returns the default value for entity hostname base field.
+   *
+   * @return string
+   *   The client host name.
+   */
+  public static function getDefaultHostname() {
+    return \Drupal::request()->getClientIP();
+  }
+
 }