diff --git a/core/modules/node/node.views_execution.inc b/core/modules/node/node.views_execution.inc index 701f439..ec8967f 100644 --- a/core/modules/node/node.views_execution.inc +++ b/core/modules/node/node.views_execution.inc @@ -17,6 +17,7 @@ function node_views_query_substitutions(ViewExecutable $view) { return array( '***ADMINISTER_NODES***' => intval($account->hasPermission('administer nodes')), '***VIEW_OWN_UNPUBLISHED_NODES***' => intval($account->hasPermission('view own unpublished content')), + '***VIEW_ANY_UNPUBLISHED_NODE***' => intval($account->hasPermission('view any unpublished content')), '***BYPASS_NODE_ACCESS***' => intval($account->hasPermission('bypass node access')), ); } diff --git a/core/modules/node/src/NodeViewsData.php b/core/modules/node/src/NodeViewsData.php index 1c648c4..958d289 100644 --- a/core/modules/node/src/NodeViewsData.php +++ b/core/modules/node/src/NodeViewsData.php @@ -45,12 +45,12 @@ public function getViewsData() { $data['node_field_data']['status']['filter']['use_equal'] = TRUE; $data['node_field_data']['status_extra'] = array( - 'title' => $this->t('Published status or admin user'), + 'title' => $this->t('Published status or unpublished access'), 'help' => $this->t('Filters out unpublished content if the current user cannot view it.'), 'filter' => array( 'field' => 'status', 'id' => 'node_status', - 'label' => $this->t('Published status or admin user'), + 'label' => $this->t('Published status or unpublished access'), ), ); diff --git a/core/modules/node/src/Plugin/views/filter/Status.php b/core/modules/node/src/Plugin/views/filter/Status.php index 5e119e5..7f8e98b 100644 --- a/core/modules/node/src/Plugin/views/filter/Status.php +++ b/core/modules/node/src/Plugin/views/filter/Status.php @@ -27,7 +27,8 @@ public function canExpose() { return FALSE; } public function query() { $table = $this->ensureMyTable(); - $this->query->addWhereExpression($this->options['group'], "$table.status = 1 OR ($table.uid = ***CURRENT_USER*** AND ***CURRENT_USER*** <> 0 AND ***VIEW_OWN_UNPUBLISHED_NODES*** = 1) OR ***BYPASS_NODE_ACCESS*** = 1"); + // @todo: Add per-node-type unpublished checks. + $this->query->addWhereExpression($this->options['group'], "$table.status = 1 OR ($table.uid = ***CURRENT_USER*** AND ***CURRENT_USER*** <> 0 AND ***VIEW_OWN_UNPUBLISHED_NODES*** = 1) OR ***VIEW_ANY_UNPUBLISHED_NODE*** = 1 OR ***BYPASS_NODE_ACCESS*** = 1"); } /**