View source
<?php
namespace Drupal\override_node_options;
use Drupal\Core\StringTranslation\StringTranslationTrait;
use Drupal\node\Entity\NodeType;
class NodePermissions {
use StringTranslationTrait;
public function nodeTypePermissions() {
$permissions = [];
if (\Drupal::config('override_node_options.settings')
->get('general_permissions')) {
$this
->addGeneralPermissions($permissions);
}
if (\Drupal::config('override_node_options.settings')
->get('specific_permissions')) {
$this
->addSpecificPermissions($permissions);
}
return $permissions;
}
private function addGeneralPermissions(array &$permissions) {
$permissions['override all published option'] = [
'title' => $this
->t('Override all published options.'),
];
$permissions['override all promote to front page option'] = [
'title' => $this
->t('Override all promote to front page options.'),
];
$permissions['override all sticky option'] = [
'title' => $this
->t('Override all sticky options.'),
];
$permissions['override all revision option'] = [
'title' => $this
->t('Override all revision option.'),
];
$permissions['enter all revision log entry'] = [
'title' => $this
->t('Enter revision log entries for all node types.'),
];
$permissions['override all authored by option'] = [
'title' => $this
->t('Override all authored by option.'),
];
$permissions['override all authored on option'] = [
'title' => $this
->t('Override all authored on option.'),
];
}
private function addSpecificPermissions(array &$permissions) {
foreach (NodeType::loadMultiple() as $node_type) {
$type = $node_type
->id();
$label = $node_type
->label();
$permissions["override {$type} published option"] = [
'title' => $this
->t("Override %name published option.", [
"%name" => $label,
]),
];
$permissions["override {$type} promote to front page option"] = [
'title' => $this
->t("Override %name promote to front page option.", [
"%name" => $label,
]),
];
$permissions["override {$type} sticky option"] = [
'title' => $this
->t("Override %name sticky option.", [
"%name" => $label,
]),
];
$permissions["override {$type} revision option"] = [
'title' => $this
->t("Override %name revision option.", [
"%name" => $label,
]),
];
$permissions["enter {$type} revision log entry"] = [
'title' => $this
->t("Enter %name revision log entry.", [
"%name" => $label,
]),
];
$permissions["override {$type} authored on option"] = [
'title' => $this
->t("Override %name authored on option.", [
"%name" => $label,
]),
];
$permissions["override {$type} authored by option"] = [
'title' => $this
->t("Override %name authored by option.", [
"%name" => $label,
]),
];
}
}
}