Follow up for confusing comments in #1658846-187: Add language support to node access grants and records

Problem/Motivation

Comments are unclear.

Proposed resolution

Improve comments. Maybe by adding a general sentence explaining fallback and defaults that deal with langcodes. Maybe by adding a @see to link to the api documentation that explains the fallback behavior.

Remaining tasks

  • Discuss why those tests/statements/assertions are there.
  • Propose what the comments should say.
  • Implement resolution. See contributor task document for creating a patch: http://drupal.org/node/1424598

User interface changes

No UI changes.

API changes

No API changes.

Original report by @xjm

in #1658846-187: Add language support to node access grants and records

+++ b/core/modules/node/lib/Drupal/node/Tests/NodeAccessLanguageTest.phpundefined
@@ -61,31 +47,196 @@ function testNodeAccess() {
+    // Creating a public node with langcode Hungarian, will be saved as
+    // the fallback in node access table.
...
+    // Creating a private node with langcode Hungarian, will be saved as
+    // the fallback in node access table.
...
+    // Creating a private node with no special langcode, like when no language
+    // module enabled.
...
+    // Creating a private node with langcode Hungarian, will be saved as
+    // the fallback in node access table.
...
+    // Creating a public node with langcode Hungarian, will be saved as
+    // the fallback in node access table.
...
+    // Creating a public node with no special langcode, like when no language
+    // module enabled.

These three comments are a little unclear (same for the similar comments in the other tests).

--
Also:

--- a/core/modules/node/lib/Drupal/node/NodeAccessController.php
+++ b/core/modules/node/lib/Drupal/node/NodeAccessController.phpundefined
@@ -109,11 +109,19 @@ protected function accessGrants(EntityInterface $node, $operation, $langcode = L
     // Check the database for potential access grants.
     $query = db_select('node_access');
     $query->addExpression('1');
+    // Only interested for granting in the current operation.
     $query->condition('grant_' . $operation, 1, '>=');

I don't quite understand this comment.

Comments

gábor hojtsy’s picture

Well, "// Only interested for granting in the current operation." just documents what the code trivially does below it. We can remove it if that is better. It is not new code added by the patch, just new docs. It documents the existing behavior. It could also have been "Filter only for elements for the requested operation". But again, looks like not adding a comment is cleaner than adding one that people might not grok? The condition is pretty self documenting.

As for the comments cited pior to that, as far as I see, they say "we save a node with X language, so X will be marked as the fallback langcode for node access" which is just repeatedly documenting how the node's original language and node access fallback language are tied together. Any suggestions for improving that text?

gábor hojtsy’s picture

Issue summary: View changes

added more comment clarification stuff.

Version: 8.0.x-dev » 8.1.x-dev

Drupal 8.0.6 was released on April 6 and is the final bugfix release for the Drupal 8.0.x series. Drupal 8.0.x will not receive any further development aside from security fixes. Drupal 8.1.0-rc1 is now available and sites should prepare to update to 8.1.0.

Bug reports should be targeted against the 8.1.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.2.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.1.x-dev » 8.2.x-dev

Drupal 8.1.9 was released on September 7 and is the final bugfix release for the Drupal 8.1.x series. Drupal 8.1.x will not receive any further development aside from security fixes. Drupal 8.2.0-rc1 is now available and sites should prepare to upgrade to 8.2.0.

Bug reports should be targeted against the 8.2.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.3.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.2.x-dev » 8.3.x-dev

Drupal 8.2.6 was released on February 1, 2017 and is the final full bugfix release for the Drupal 8.2.x series. Drupal 8.2.x will not receive any further development aside from critical and security fixes. Sites should prepare to update to 8.3.0 on April 5, 2017. (Drupal 8.3.0-alpha1 is available for testing.)

Bug reports should be targeted against the 8.3.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.4.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.3.x-dev » 8.4.x-dev

Drupal 8.3.6 was released on August 2, 2017 and is the final full bugfix release for the Drupal 8.3.x series. Drupal 8.3.x will not receive any further development aside from critical and security fixes. Sites should prepare to update to 8.4.0 on October 4, 2017. (Drupal 8.4.0-alpha1 is available for testing.)

Bug reports should be targeted against the 8.4.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.5.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.4.x-dev » 8.5.x-dev

Drupal 8.4.4 was released on January 3, 2018 and is the final full bugfix release for the Drupal 8.4.x series. Drupal 8.4.x will not receive any further development aside from critical and security fixes. Sites should prepare to update to 8.5.0 on March 7, 2018. (Drupal 8.5.0-alpha1 is available for testing.)

Bug reports should be targeted against the 8.5.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.6.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.5.x-dev » 8.6.x-dev

Drupal 8.5.6 was released on August 1, 2018 and is the final bugfix release for the Drupal 8.5.x series. Drupal 8.5.x will not receive any further development aside from security fixes. Sites should prepare to update to 8.6.0 on September 5, 2018. (Drupal 8.6.0-rc1 is available for testing.)

Bug reports should be targeted against the 8.6.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.7.x-dev branch. For more information see the Drupal 8 minor version schedule and the Allowed changes during the Drupal 8 release cycle.

Version: 8.6.x-dev » 8.8.x-dev

Drupal 8.6.x will not receive any further development aside from security fixes. Bug reports should be targeted against the 8.8.x-dev branch from now on, and new development or disruptive changes should be targeted against the 8.9.x-dev branch. For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

Version: 8.8.x-dev » 8.9.x-dev

Drupal 8.8.7 was released on June 3, 2020 and is the final full bugfix release for the Drupal 8.8.x series. Drupal 8.8.x will not receive any further development aside from security fixes. Sites should prepare to update to Drupal 8.9.0 or Drupal 9.0.0 for ongoing support.

Bug reports should be targeted against the 8.9.x-dev branch from now on, and new development or disruptive changes should be targeted against the 9.1.x-dev branch. For more information see the Drupal 8 and 9 minor version schedule and the Allowed changes during the Drupal 8 and 9 release cycles.

Version: 8.9.x-dev » 9.2.x-dev

Drupal 8 is end-of-life as of November 17, 2021. There will not be further changes made to Drupal 8. Bugfixes are now made to the 9.3.x and higher branches only. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.2.x-dev » 9.3.x-dev

Version: 9.3.x-dev » 9.4.x-dev

Drupal 9.3.15 was released on June 1st, 2022 and is the final full bugfix release for the Drupal 9.3.x series. Drupal 9.3.x will not receive any further development aside from security fixes. Drupal 9 bug reports should be targeted for the 9.4.x-dev branch from now on, and new development or disruptive changes should be targeted for the 9.5.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.4.x-dev » 9.5.x-dev

Drupal 9.4.9 was released on December 7, 2022 and is the final full bugfix release for the Drupal 9.4.x series. Drupal 9.4.x will not receive any further development aside from security fixes. Drupal 9 bug reports should be targeted for the 9.5.x-dev branch from now on, and new development or disruptive changes should be targeted for the 10.1.x-dev branch. For more information see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

Version: 9.5.x-dev » 11.x-dev

Drupal core is moving towards using a “main” branch. As an interim step, a new 11.x branch has been opened, as Drupal.org infrastructure cannot currently fully support a branch named main. New developments and disruptive changes should now be targeted for the 11.x branch. For more information, see the Drupal core minor version schedule and the Allowed changes during the Drupal core release cycle.

smustgrave’s picture

Status: Active » Postponed (maintainer needs more info)
Issue tags: +stale-issue-cleanup

Thank you for creating this issue to improve Drupal.

We are working to decide if this task is still relevant to a currently supported version of Drupal. There hasn't been any discussion here for over 8 years which suggests that this has either been implemented or is no longer relevant. Your thoughts on this will allow a decision to be made.

Since we need more information to move forward with this issue, the status is now Postponed (maintainer needs more info). If we don't receive additional information to help with the issue, it may be closed after three months.

smustgrave’s picture

Status: Postponed (maintainer needs more info) » Closed (outdated)

Since there has been no follow up in 3 months going to close out. But don't worry this can always be re-opened!

Thanks

xjm’s picture

Status: Closed (outdated) » Active

They're still there and haven't been clarified. :)

acbramley’s picture

Status: Active » Postponed (maintainer needs more info)
Issue tags: -Needs tests, -stale-issue-cleanup +Needs issue summary update

We still need more information, I agree with #1 that the comments are a bit superfluous as they're just stating what happens when you save a node with a langcode. Unless we want to heavily document what a fallback is in the test (I don't think we should) maybe we should just remove the entire comment, or just make it "Creating a public node with langcode Hungarian"

We should also update the IS with the exact comments we want to change (remove the original report) and update the proposed resolution.

xjm’s picture

Status: Postponed (maintainer needs more info) » Active

I don't think PMNMI is the correct status? We just need proposals for better comments. (Another node-access-not-actually-node issue.) It's tagged "Needs IS update", which corresponds to "Active" when there's no MR (or NW when there is one).

I also would not put every single version of these comments in the IS; it's obvious which need fixing when you actually read the test. Someone should just create an MR and we start from there.

Thanks!

xjm’s picture

Aside: This issue is what happens when we descope the docs gate from something!

xjm’s picture

One of the issues with the comments is grammar. They're not grammatically correct English, which exacerbates the problem.

I think it is relevant to document which langcode behavior we expect to use as that is the biggest gotcha of the whole API (and also exactly what is under test). See also: https://www.drupal.org/sa-core-2018-001

That said, the fact that this comment is repeated N times also hints at possible refactorings. (Out of scope currently, but a refactor might make the test easier to follow and reduce the need for boilerplate docs since helper methods or data providers would be more self-documenting.) If someone wanted, they could propose an alternative to this issue that refactors the test instead, and this might end up as a duplicate.

Version: 11.x-dev » main

Drupal core is now using the main branch as the primary development branch. New developments and disruptive changes should now be targeted to the main branch.

Read more in the announcement.