Update core 8.3.0

This commit is contained in:
Rob Davies 2017-04-13 15:53:35 +01:00
parent da7a7918f8
commit cd7a898e66
6144 changed files with 132297 additions and 87747 deletions

View file

@ -1,30 +0,0 @@
<?php
namespace Drupal\tracker\Access;
use Drupal\Core\Access\AccessResult;
use Drupal\Core\Routing\Access\AccessInterface;
use Drupal\Core\Session\AccountInterface;
use Drupal\user\UserInterface;
/**
* Access check for user tracker routes.
*/
class ViewOwnTrackerAccessCheck implements AccessInterface {
/**
* Checks access.
*
* @param \Drupal\Core\Session\AccountInterface $account
* The currently logged in account.
* @param \Drupal\user\UserInterface $user
* The user whose tracker page is being accessed.
*
* @return \Drupal\Core\Access\AccessResultInterface
* The access result.
*/
public function access(AccountInterface $account, UserInterface $user) {
return AccessResult::allowedIf($user && $account->isAuthenticated() && ($user->id() == $account->id()))->cachePerUser();
}
}

View file

@ -2,7 +2,9 @@
namespace Drupal\tracker\Controller;
use Drupal\Core\Access\AccessResult;
use Drupal\Core\Controller\ControllerBase;
use Drupal\Core\Session\AccountInterface;
use Drupal\user\UserInterface;
/**
@ -18,4 +20,20 @@ class TrackerUserRecent extends ControllerBase {
return tracker_page($user);
}
/**
* Checks access for the users recent content tracker page.
*
* @param \Drupal\user\UserInterface $user
* The user being viewed.
* @param \Drupal\Core\Session\AccountInterface $account
* The account viewing the page.
*
* @return \Drupal\Core\Access\AccessResult
* The access result.
*/
public function checkAccess(UserInterface $user, AccountInterface $account) {
return AccessResult::allowedIf($account->isAuthenticated() && $user->id() == $account->id())
->cachePerUser();
}
}

View file

@ -37,7 +37,7 @@ class UserTrackerTab extends LocalTaskDefault {
* {@inheritdoc}
*/
public function getRouteParameters(RouteMatchInterface $route_match) {
return array('user' => $this->currentUser()->Id());
return ['user' => $this->currentUser()->Id()];
}
}

View file

@ -1,75 +0,0 @@
<?php
namespace Drupal\tracker\Tests;
use Drupal\comment\Plugin\Field\FieldType\CommentItemInterface;
use Drupal\comment\Tests\CommentTestTrait;
use Drupal\node\Entity\NodeType;
use Drupal\simpletest\WebTestBase;
/**
* Tests for private node access on /tracker.
*
* @group tracker
*/
class TrackerNodeAccessTest extends WebTestBase {
use CommentTestTrait;
/**
* Modules to enable.
*
* @var array
*/
public static $modules = array('node', 'comment', 'tracker', 'node_access_test');
protected function setUp() {
parent::setUp();
node_access_rebuild();
$this->drupalCreateContentType(array('type' => 'page'));
node_access_test_add_field(NodeType::load('page'));
$this->addDefaultCommentField('node', 'page', 'comment', CommentItemInterface::OPEN);
\Drupal::state()->set('node_access_test.private', TRUE);
}
/**
* Ensure private node on /tracker is only visible to users with permission.
*/
function testTrackerNodeAccess() {
// Create user with node test view permission.
$access_user = $this->drupalCreateUser(array('node test view', 'access user profiles'));
// Create user without node test view permission.
$no_access_user = $this->drupalCreateUser(array('access user profiles'));
$this->drupalLogin($access_user);
// Create some nodes.
$private_node = $this->drupalCreateNode(array(
'title' => t('Private node test'),
'private' => TRUE,
));
$public_node = $this->drupalCreateNode(array(
'title' => t('Public node test'),
'private' => FALSE,
));
// User with access should see both nodes created.
$this->drupalGet('activity');
$this->assertText($private_node->getTitle(), 'Private node is visible to user with private access.');
$this->assertText($public_node->getTitle(), 'Public node is visible to user with private access.');
$this->drupalGet('user/' . $access_user->id() . '/activity');
$this->assertText($private_node->getTitle(), 'Private node is visible to user with private access.');
$this->assertText($public_node->getTitle(), 'Public node is visible to user with private access.');
// User without access should not see private node.
$this->drupalLogin($no_access_user);
$this->drupalGet('activity');
$this->assertNoText($private_node->getTitle(), 'Private node is not visible to user without private access.');
$this->assertText($public_node->getTitle(), 'Public node is visible to user without private access.');
$this->drupalGet('user/' . $access_user->id() . '/activity');
$this->assertNoText($private_node->getTitle(), 'Private node is not visible to user without private access.');
$this->assertText($public_node->getTitle(), 'Public node is visible to user without private access.');
}
}

View file

@ -46,16 +46,16 @@ class TrackerTest extends WebTestBase {
protected function setUp() {
parent::setUp();
$this->drupalCreateContentType(array('type' => 'page', 'name' => 'Basic page'));
$this->drupalCreateContentType(['type' => 'page', 'name' => 'Basic page']);
$permissions = array('access comments', 'create page content', 'post comments', 'skip comment approval');
$permissions = ['access comments', 'create page content', 'post comments', 'skip comment approval'];
$this->user = $this->drupalCreateUser($permissions);
$this->otherUser = $this->drupalCreateUser($permissions);
$this->addDefaultCommentField('node', 'page');
user_role_grant_permissions(AccountInterface::ANONYMOUS_ROLE, array(
user_role_grant_permissions(AccountInterface::ANONYMOUS_ROLE, [
'access content',
'access user profiles',
));
]);
$this->drupalPlaceBlock('local_tasks_block', ['id' => 'page_tabs_block']);
$this->drupalPlaceBlock('local_actions_block', ['id' => 'page_actions_block']);
}
@ -63,17 +63,17 @@ class TrackerTest extends WebTestBase {
/**
* Tests for the presence of nodes on the global tracker listing.
*/
function testTrackerAll() {
public function testTrackerAll() {
$this->drupalLogin($this->user);
$unpublished = $this->drupalCreateNode(array(
$unpublished = $this->drupalCreateNode([
'title' => $this->randomMachineName(8),
'status' => 0,
));
$published = $this->drupalCreateNode(array(
]);
$published = $this->drupalCreateNode([
'title' => $this->randomMachineName(8),
'status' => 1,
));
]);
$this->drupalGet('activity');
$this->assertNoText($unpublished->label(), 'Unpublished node does not show up in the tracker listing.');
@ -129,33 +129,33 @@ class TrackerTest extends WebTestBase {
/**
* Tests for the presence of nodes on a user's tracker listing.
*/
function testTrackerUser() {
public function testTrackerUser() {
$this->drupalLogin($this->user);
$unpublished = $this->drupalCreateNode(array(
$unpublished = $this->drupalCreateNode([
'title' => $this->randomMachineName(8),
'uid' => $this->user->id(),
'status' => 0,
));
$my_published = $this->drupalCreateNode(array(
]);
$my_published = $this->drupalCreateNode([
'title' => $this->randomMachineName(8),
'uid' => $this->user->id(),
'status' => 1,
));
$other_published_no_comment = $this->drupalCreateNode(array(
]);
$other_published_no_comment = $this->drupalCreateNode([
'title' => $this->randomMachineName(8),
'uid' => $this->otherUser->id(),
'status' => 1,
));
$other_published_my_comment = $this->drupalCreateNode(array(
]);
$other_published_my_comment = $this->drupalCreateNode([
'title' => $this->randomMachineName(8),
'uid' => $this->otherUser->id(),
'status' => 1,
));
$comment = array(
]);
$comment = [
'subject[0][value]' => $this->randomMachineName(),
'comment_body[0][value]' => $this->randomMachineName(20),
);
];
$this->drupalPostForm('comment/reply/node/' . $other_published_my_comment->id() . '/comment', $comment, t('Save'));
$this->drupalGet('user/' . $this->user->id() . '/activity');
@ -197,12 +197,12 @@ class TrackerTest extends WebTestBase {
$this->assertNoLink($unpublished->label());
// Verify that title and tab title have been set correctly.
$this->assertText('Activity', 'The user activity tab has the name "Activity".');
$this->assertTitle(t('@name | @site', array('@name' => $this->user->getUsername(), '@site' => $this->config('system.site')->get('name'))), 'The user tracker page has the correct page title.');
$this->assertTitle(t('@name | @site', ['@name' => $this->user->getUsername(), '@site' => $this->config('system.site')->get('name')]), 'The user tracker page has the correct page title.');
// Verify that unpublished comments are removed from the tracker.
$admin_user = $this->drupalCreateUser(array('post comments', 'administer comments', 'access user profiles'));
$admin_user = $this->drupalCreateUser(['post comments', 'administer comments', 'access user profiles']);
$this->drupalLogin($admin_user);
$this->drupalPostForm('comment/1/edit', array('status' => CommentInterface::NOT_PUBLISHED), t('Save'));
$this->drupalPostForm('comment/1/edit', ['status' => CommentInterface::NOT_PUBLISHED], t('Save'));
$this->drupalGet('user/' . $this->user->id() . '/activity');
$this->assertNoText($other_published_my_comment->label(), 'Unpublished comments are not counted on the tracker listing.');
@ -223,13 +223,13 @@ class TrackerTest extends WebTestBase {
/**
* Tests the metadata for the "new"/"updated" indicators.
*/
function testTrackerHistoryMetadata() {
public function testTrackerHistoryMetadata() {
$this->drupalLogin($this->user);
// Create a page node.
$edit = array(
$edit = [
'title' => $this->randomMachineName(8),
);
];
$node = $this->drupalCreateNode($edit);
// Verify that the history metadata is present.
@ -243,10 +243,10 @@ class TrackerTest extends WebTestBase {
// Add a comment to the page, make sure it is created after the node by
// sleeping for one second, to ensure the last comment timestamp is
// different from before.
$comment = array(
$comment = [
'subject[0][value]' => $this->randomMachineName(),
'comment_body[0][value]' => $this->randomMachineName(20),
);
];
sleep(1);
$this->drupalPostForm('comment/reply/node/' . $node->id() . '/comment', $comment, t('Save'));
// Reload the node so that comment.module's hook_node_load()
@ -274,25 +274,25 @@ class TrackerTest extends WebTestBase {
/**
* Tests for ordering on a users tracker listing when comments are posted.
*/
function testTrackerOrderingNewComments() {
public function testTrackerOrderingNewComments() {
$this->drupalLogin($this->user);
$node_one = $this->drupalCreateNode(array(
$node_one = $this->drupalCreateNode([
'title' => $this->randomMachineName(8),
));
]);
$node_two = $this->drupalCreateNode(array(
$node_two = $this->drupalCreateNode([
'title' => $this->randomMachineName(8),
));
]);
// Now get otherUser to track these pieces of content.
$this->drupalLogin($this->otherUser);
// Add a comment to the first page.
$comment = array(
$comment = [
'subject[0][value]' => $this->randomMachineName(),
'comment_body[0][value]' => $this->randomMachineName(20),
);
];
$this->drupalPostForm('comment/reply/node/' . $node_one->id() . '/comment', $comment, t('Save'));
// If the comment is posted in the same second as the last one then Drupal
@ -300,10 +300,10 @@ class TrackerTest extends WebTestBase {
sleep(1);
// Add a comment to the second page.
$comment = array(
$comment = [
'subject[0][value]' => $this->randomMachineName(),
'comment_body[0][value]' => $this->randomMachineName(20),
);
];
$this->drupalPostForm('comment/reply/node/' . $node_two->id() . '/comment', $comment, t('Save'));
// We should at this point have in our tracker for otherUser:
@ -320,10 +320,10 @@ class TrackerTest extends WebTestBase {
sleep(1);
// Add a comment to the second page.
$comment = array(
$comment = [
'subject[0][value]' => $this->randomMachineName(),
'comment_body[0][value]' => $this->randomMachineName(20),
);
];
$this->drupalPostForm('comment/reply/node/' . $node_one->id() . '/comment', $comment, t('Save'));
// Switch back to the otherUser and assert that the order has swapped.
@ -340,25 +340,25 @@ class TrackerTest extends WebTestBase {
/**
* Tests that existing nodes are indexed by cron.
*/
function testTrackerCronIndexing() {
public function testTrackerCronIndexing() {
$this->drupalLogin($this->user);
// Create 3 nodes.
$edits = array();
$nodes = array();
$edits = [];
$nodes = [];
for ($i = 1; $i <= 3; $i++) {
$edits[$i] = array(
$edits[$i] = [
'title' => $this->randomMachineName(),
);
];
$nodes[$i] = $this->drupalCreateNode($edits[$i]);
}
// Add a comment to the last node as other user.
$this->drupalLogin($this->otherUser);
$comment = array(
$comment = [
'subject[0][value]' => $this->randomMachineName(),
'comment_body[0][value]' => $this->randomMachineName(20),
);
];
$this->drupalPostForm('comment/reply/node/' . $nodes[3]->id() . '/comment', $comment, t('Save'));
// Start indexing backwards from node 3.
@ -378,7 +378,7 @@ class TrackerTest extends WebTestBase {
// Assert that all node titles are displayed.
foreach ($nodes as $i => $node) {
$this->assertText($node->label(), format_string('Node @i is displayed on the tracker listing pages.', array('@i' => $i)));
$this->assertText($node->label(), format_string('Node @i is displayed on the tracker listing pages.', ['@i' => $i]));
}
// Fetch the site-wide tracker.
@ -386,32 +386,32 @@ class TrackerTest extends WebTestBase {
// Assert that all node titles are displayed.
foreach ($nodes as $i => $node) {
$this->assertText($node->label(), format_string('Node @i is displayed on the tracker listing pages.', array('@i' => $i)));
$this->assertText($node->label(), format_string('Node @i is displayed on the tracker listing pages.', ['@i' => $i]));
}
}
/**
* Tests that publish/unpublish works at admin/content/node.
*/
function testTrackerAdminUnpublish() {
\Drupal::service('module_installer')->install(array('views'));
public function testTrackerAdminUnpublish() {
\Drupal::service('module_installer')->install(['views']);
\Drupal::service('router.builder')->rebuild();
$admin_user = $this->drupalCreateUser(array('access content overview', 'administer nodes', 'bypass node access'));
$admin_user = $this->drupalCreateUser(['access content overview', 'administer nodes', 'bypass node access']);
$this->drupalLogin($admin_user);
$node = $this->drupalCreateNode(array(
$node = $this->drupalCreateNode([
'title' => $this->randomMachineName(),
));
]);
// Assert that the node is displayed.
$this->drupalGet('activity');
$this->assertText($node->label(), 'A node is displayed on the tracker listing pages.');
// Unpublish the node and ensure that it's no longer displayed.
$edit = array(
$edit = [
'action' => 'node_unpublish_action',
'node_bulk_form[0]' => $node->id(),
);
];
$this->drupalPostForm('admin/content', $edit, t('Apply to selected items'));
$this->drupalGet('activity');
@ -438,7 +438,7 @@ class TrackerTest extends WebTestBase {
* @param bool $library_is_present
* Whether the drupal.tracker-history library should be present or not.
*/
function assertHistoryMetadata($node_id, $node_timestamp, $node_last_comment_timestamp, $library_is_present = TRUE) {
public function assertHistoryMetadata($node_id, $node_timestamp, $node_last_comment_timestamp, $library_is_present = TRUE) {
$settings = $this->getDrupalSettings();
$this->assertIdentical($library_is_present, isset($settings['ajaxPageState']) && in_array('tracker/history', explode(',', $settings['ajaxPageState']['libraries'])), 'drupal.tracker-history library is present.');
$this->assertIdentical(1, count($this->xpath('//table/tbody/tr/td[@data-history-node-id="' . $node_id . '" and @data-history-node-timestamp="' . $node_timestamp . '"]')), 'Tracker table cell contains the data-history-node-id and data-history-node-timestamp attributes for the node.');

View file

@ -20,7 +20,7 @@ abstract class TrackerTestBase extends ViewTestBase {
*
* @var array
*/
public static $modules = array('comment', 'tracker', 'tracker_test_views');
public static $modules = ['comment', 'tracker', 'tracker_test_views'];
/**
* The node used for testing.
@ -39,30 +39,30 @@ abstract class TrackerTestBase extends ViewTestBase {
protected function setUp() {
parent::setUp();
ViewTestData::createTestViews(get_class($this), array('tracker_test_views'));
ViewTestData::createTestViews(get_class($this), ['tracker_test_views']);
$this->drupalCreateContentType(array('type' => 'page', 'name' => 'Basic page'));
$this->drupalCreateContentType(['type' => 'page', 'name' => 'Basic page']);
// Add a comment field.
$this->addDefaultCommentField('node', 'page');
$permissions = array('access comments', 'create page content', 'post comments', 'skip comment approval');
$permissions = ['access comments', 'create page content', 'post comments', 'skip comment approval'];
$account = $this->drupalCreateUser($permissions);
$this->drupalLogin($account);
$this->node = $this->drupalCreateNode(array(
$this->node = $this->drupalCreateNode([
'title' => $this->randomMachineName(8),
'uid' => $account->id(),
'status' => 1,
));
]);
$this->comment = Comment::create(array(
$this->comment = Comment::create([
'entity_id' => $this->node->id(),
'entity_type' => 'node',
'field_name' => 'comment',
'subject' => $this->randomMachineName(),
'comment_body[' . LanguageInterface::LANGCODE_NOT_SPECIFIED . '][0][value]' => $this->randomMachineName(20),
));
]);
}

View file

@ -16,29 +16,29 @@ class TrackerUserUidTest extends TrackerTestBase {
*
* @var array
*/
public static $testViews = array('test_tracker_user_uid');
public static $testViews = ['test_tracker_user_uid'];
/**
* Tests the user uid filter and argument.
*/
public function testUserUid() {
$map = array(
$map = [
'nid' => 'nid',
'title' => 'title',
);
];
$expected = array(
array(
$expected = [
[
'nid' => $this->node->id(),
'title' => $this->node->label(),
)
);
]
];
$view = Views::getView('test_tracker_user_uid');
$this->executeView($view);
// We should have no results as the filter is set for uid 0.
$this->assertIdenticalResultSet($view, array(), $map);
$this->assertIdenticalResultSet($view, [], $map);
$view->destroy();
// Change the filter value to our user.
@ -55,13 +55,13 @@ class TrackerUserUidTest extends TrackerTestBase {
// Test the incorrect argument UID.
$view->initHandlers();
$this->executeView($view, array(rand()));
$this->assertIdenticalResultSet($view, array(), $map);
$this->executeView($view, [rand()]);
$this->assertIdenticalResultSet($view, [], $map);
$view->destroy();
// Test the correct argument UID.
$view->initHandlers();
$this->executeView($view, array($this->node->getOwnerId()));
$this->executeView($view, [$this->node->getOwnerId()]);
$this->assertIdenticalResultSet($view, $expected, $map);
}