<?php
use Drupal\node\Plugin\Core\Entity\Node;
function node_test_node_load($nodes, $types) {
$nids = array_keys($nodes);
ksort($nids);
sort($types);
foreach ($nodes as $node) {
$node->node_test_loaded_nids = $nids;
$node->node_test_loaded_types = $types;
}
}
function node_test_node_view(Node $node, $view_mode) {
if ($view_mode == 'rss') {
$node->rss_elements[] = array(
'key' => 'testElement',
'value' => t('Value of testElement RSS element for node !nid.', array(
'!nid' => $node->nid,
)),
);
$node->rss_namespaces['xmlns:drupaltest'] = 'http://example.com/test-namespace';
$node->content['extra_feed_content'] = array(
'#markup' => '<p>' . t('Extra data that should appear only in the RSS feed for node !nid.', array(
'!nid' => $node->nid,
)) . '</p>',
'#weight' => 10,
);
}
if ($view_mode != 'rss') {
$node->content['extra_non_feed_content'] = array(
'#markup' => '<p>' . t('Extra data that should appear everywhere except the RSS feed for node !nid.', array(
'!nid' => $node->nid,
)) . '</p>',
);
}
}
function node_test_node_grants($account, $op) {
return array(
'test_article_realm' => array(
1,
),
'test_page_realm' => array(
1,
),
'test_alter_realm' => array(
2,
),
);
}
function node_test_node_access_records(Node $node) {
if (!empty($node->disable_node_access)) {
return;
}
$grants = array();
if ($node->type == 'article') {
$grants[] = array(
'realm' => 'test_article_realm',
'gid' => 1,
'grant_view' => 1,
'grant_update' => 0,
'grant_delete' => 0,
'priority' => 0,
);
}
elseif ($node->type == 'page') {
$grants[] = array(
'realm' => 'test_page_realm',
'gid' => 1,
'grant_view' => 1,
'grant_update' => 0,
'grant_delete' => 0,
'priority' => 0,
);
}
return $grants;
}
function node_test_node_access_records_alter(&$grants, Node $node) {
if (!empty($grants)) {
foreach ($grants as $key => $grant) {
if ($grant['realm'] == 'test_page_realm' && $node->promote) {
$grants[$key]['realm'] = 'test_alter_realm';
$grants[$key]['gid'] = 2;
}
}
}
}
function node_test_node_grants_alter(&$grants, $account, $op) {
$grants = array();
}
function node_test_node_presave(Node $node) {
if ($node->title == 'testing_node_presave') {
$node->created = 280299600;
$node->changed = 979534800;
}
if (!empty($node->original) && $node->original->title == 'test_changes') {
if ($node->original->title != $node->title) {
$node->title .= '_presave';
}
}
}
function node_test_node_update(Node $node) {
if (!empty($node->original) && $node->original->title == 'test_changes') {
if ($node->original->title != $node->title) {
$node->title .= '_update';
}
}
}
function node_test_entity_view_mode_alter(&$view_mode, Drupal\Core\Entity\EntityInterface $entity, $context) {
if ($change_view_mode = variable_get('node_test_change_view_mode', '')) {
$view_mode = $change_view_mode;
}
}
function node_test_node_insert(Node $node) {
if ($node->title == 'new') {
$node->title = 'Node ' . $node->nid;
node_save($node);
}
}