Update core 8.3.0
This commit is contained in:
parent
da7a7918f8
commit
cd7a898e66
6144 changed files with 132297 additions and 87747 deletions
|
@ -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();
|
||||
}
|
||||
|
||||
}
|
|
@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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()];
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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.');
|
||||
|
|
|
@ -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),
|
||||
));
|
||||
]);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,18 +1,18 @@
|
|||
<?php
|
||||
|
||||
namespace Drupal\tracker\Tests;
|
||||
namespace Drupal\Tests\tracker\Functional;
|
||||
|
||||
use Drupal\comment\Plugin\Field\FieldType\CommentItemInterface;
|
||||
use Drupal\comment\Tests\CommentTestTrait;
|
||||
use Drupal\node\Entity\NodeType;
|
||||
use Drupal\simpletest\WebTestBase;
|
||||
use Drupal\Tests\BrowserTestBase;
|
||||
|
||||
/**
|
||||
* Tests for private node access on /tracker.
|
||||
*
|
||||
* @group tracker
|
||||
*/
|
||||
class TrackerNodeAccessTest extends WebTestBase {
|
||||
class TrackerNodeAccessTest extends BrowserTestBase {
|
||||
|
||||
use CommentTestTrait;
|
||||
|
||||
|
@ -21,12 +21,12 @@ class TrackerNodeAccessTest extends WebTestBase {
|
|||
*
|
||||
* @var array
|
||||
*/
|
||||
public static $modules = array('node', 'comment', 'tracker', 'node_access_test');
|
||||
public static $modules = ['node', 'comment', 'tracker', 'node_access_test'];
|
||||
|
||||
protected function setUp() {
|
||||
parent::setUp();
|
||||
node_access_rebuild();
|
||||
$this->drupalCreateContentType(array('type' => 'page'));
|
||||
$this->drupalCreateContentType(['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);
|
||||
|
@ -35,24 +35,24 @@ class TrackerNodeAccessTest extends WebTestBase {
|
|||
/**
|
||||
* Ensure private node on /tracker is only visible to users with permission.
|
||||
*/
|
||||
function testTrackerNodeAccess() {
|
||||
public function testTrackerNodeAccess() {
|
||||
// Create user with node test view permission.
|
||||
$access_user = $this->drupalCreateUser(array('node test view', 'access user profiles'));
|
||||
$access_user = $this->drupalCreateUser(['node test view', 'access user profiles']);
|
||||
|
||||
// Create user without node test view permission.
|
||||
$no_access_user = $this->drupalCreateUser(array('access user profiles'));
|
||||
$no_access_user = $this->drupalCreateUser(['access user profiles']);
|
||||
|
||||
$this->drupalLogin($access_user);
|
||||
|
||||
// Create some nodes.
|
||||
$private_node = $this->drupalCreateNode(array(
|
||||
$private_node = $this->drupalCreateNode([
|
||||
'title' => t('Private node test'),
|
||||
'private' => TRUE,
|
||||
));
|
||||
$public_node = $this->drupalCreateNode(array(
|
||||
]);
|
||||
$public_node = $this->drupalCreateNode([
|
||||
'title' => t('Public node test'),
|
||||
'private' => FALSE,
|
||||
));
|
||||
]);
|
||||
|
||||
// User with access should see both nodes created.
|
||||
$this->drupalGet('activity');
|
|
@ -47,17 +47,17 @@ class MigrateTrackerNodeTest extends MigrateDrupal7TestBase {
|
|||
public function testMigrateTrackerNode() {
|
||||
$connection = Database::getConnection('default', 'migrate');
|
||||
$num_rows = $connection
|
||||
->select('tracker_node', 'tn')
|
||||
->fields('tn', ['nid', 'published', 'changed'])
|
||||
->countQuery()
|
||||
->execute()
|
||||
->fetchField();
|
||||
->select('tracker_node', 'tn')
|
||||
->fields('tn', ['nid', 'published', 'changed'])
|
||||
->countQuery()
|
||||
->execute()
|
||||
->fetchField();
|
||||
$this->assertIdentical('1', $num_rows);
|
||||
|
||||
$tracker_nodes = $connection
|
||||
->select('tracker_node', 'tn')
|
||||
->fields('tn', ['nid', 'published', 'changed'])
|
||||
->execute();
|
||||
->select('tracker_node', 'tn')
|
||||
->fields('tn', ['nid', 'published', 'changed'])
|
||||
->execute();
|
||||
$row = $tracker_nodes->fetchAssoc();
|
||||
$this->assertIdentical('1', $row['nid']);
|
||||
$this->assertIdentical('1', $row['published']);
|
||||
|
|
|
@ -47,17 +47,17 @@ class MigrateTrackerUserTest extends MigrateDrupal7TestBase {
|
|||
public function testMigrateTrackerUser() {
|
||||
$connection = Database::getConnection('default', 'migrate');
|
||||
$num_rows = $connection
|
||||
->select('tracker_user', 'tn')
|
||||
->fields('tu', ['nid', 'uid', 'published', 'changed'])
|
||||
->countQuery()
|
||||
->execute()
|
||||
->fetchField();
|
||||
->select('tracker_user', 'tn')
|
||||
->fields('tu', ['nid', 'uid', 'published', 'changed'])
|
||||
->countQuery()
|
||||
->execute()
|
||||
->fetchField();
|
||||
$this->assertIdentical('1', $num_rows);
|
||||
|
||||
$tracker_nodes = $connection
|
||||
->select('tracker_user', 'tu')
|
||||
->fields('tu', ['nid', 'uid', 'published', 'changed'])
|
||||
->execute();
|
||||
->select('tracker_user', 'tu')
|
||||
->fields('tu', ['nid', 'uid', 'published', 'changed'])
|
||||
->execute();
|
||||
$row = $tracker_nodes->fetchAssoc();
|
||||
$this->assertIdentical('1', $row['nid']);
|
||||
$this->assertIdentical('2', $row['uid']);
|
||||
|
|
|
@ -29,90 +29,90 @@ function tracker_install() {
|
|||
* Implements hook_schema().
|
||||
*/
|
||||
function tracker_schema() {
|
||||
$schema['tracker_node'] = array(
|
||||
$schema['tracker_node'] = [
|
||||
'description' => 'Tracks when nodes were last changed or commented on.',
|
||||
'fields' => array(
|
||||
'nid' => array(
|
||||
'fields' => [
|
||||
'nid' => [
|
||||
'description' => 'The {node}.nid this record tracks.',
|
||||
'type' => 'int',
|
||||
'unsigned' => TRUE,
|
||||
'not null' => TRUE,
|
||||
'default' => 0,
|
||||
),
|
||||
'published' => array(
|
||||
],
|
||||
'published' => [
|
||||
'description' => 'Boolean indicating whether the node is published.',
|
||||
'type' => 'int',
|
||||
'not null' => FALSE,
|
||||
'default' => 0,
|
||||
'size' => 'tiny',
|
||||
),
|
||||
'changed' => array(
|
||||
],
|
||||
'changed' => [
|
||||
'description' => 'The Unix timestamp when the node was most recently saved or commented on.',
|
||||
'type' => 'int',
|
||||
'unsigned' => TRUE,
|
||||
'not null' => TRUE,
|
||||
'default' => 0,
|
||||
),
|
||||
),
|
||||
'indexes' => array(
|
||||
'tracker' => array('published', 'changed'),
|
||||
),
|
||||
'primary key' => array('nid'),
|
||||
'foreign keys' => array(
|
||||
'tracked_node' => array(
|
||||
],
|
||||
],
|
||||
'indexes' => [
|
||||
'tracker' => ['published', 'changed'],
|
||||
],
|
||||
'primary key' => ['nid'],
|
||||
'foreign keys' => [
|
||||
'tracked_node' => [
|
||||
'table' => 'node',
|
||||
'columns' => array('nid' => 'nid'),
|
||||
),
|
||||
),
|
||||
);
|
||||
'columns' => ['nid' => 'nid'],
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
$schema['tracker_user'] = array(
|
||||
$schema['tracker_user'] = [
|
||||
'description' => 'Tracks when nodes were last changed or commented on, for each user that authored the node or one of its comments.',
|
||||
'fields' => array(
|
||||
'nid' => array(
|
||||
'fields' => [
|
||||
'nid' => [
|
||||
'description' => 'The {node}.nid this record tracks.',
|
||||
'type' => 'int',
|
||||
'unsigned' => TRUE,
|
||||
'not null' => TRUE,
|
||||
'default' => 0,
|
||||
),
|
||||
'uid' => array(
|
||||
],
|
||||
'uid' => [
|
||||
'description' => 'The {users}.uid of the node author or commenter.',
|
||||
'type' => 'int',
|
||||
'unsigned' => TRUE,
|
||||
'not null' => TRUE,
|
||||
'default' => 0,
|
||||
),
|
||||
'published' => array(
|
||||
],
|
||||
'published' => [
|
||||
'description' => 'Boolean indicating whether the node is published.',
|
||||
'type' => 'int',
|
||||
'not null' => FALSE,
|
||||
'default' => 0,
|
||||
'size' => 'tiny',
|
||||
),
|
||||
'changed' => array(
|
||||
],
|
||||
'changed' => [
|
||||
'description' => 'The Unix timestamp when the node was most recently saved or commented on.',
|
||||
'type' => 'int',
|
||||
'unsigned' => TRUE,
|
||||
'not null' => TRUE,
|
||||
'default' => 0,
|
||||
),
|
||||
),
|
||||
'indexes' => array(
|
||||
'tracker' => array('uid', 'published', 'changed'),
|
||||
),
|
||||
'primary key' => array('nid', 'uid'),
|
||||
'foreign keys' => array(
|
||||
'tracked_node' => array(
|
||||
],
|
||||
],
|
||||
'indexes' => [
|
||||
'tracker' => ['uid', 'published', 'changed'],
|
||||
],
|
||||
'primary key' => ['nid', 'uid'],
|
||||
'foreign keys' => [
|
||||
'tracked_node' => [
|
||||
'table' => 'node',
|
||||
'columns' => array('nid' => 'nid'),
|
||||
),
|
||||
'tracked_user' => array(
|
||||
'columns' => ['nid' => 'nid'],
|
||||
],
|
||||
'tracked_user' => [
|
||||
'table' => 'users',
|
||||
'columns' => array('uid' => 'uid'),
|
||||
),
|
||||
),
|
||||
);
|
||||
'columns' => ['uid' => 'uid'],
|
||||
],
|
||||
],
|
||||
];
|
||||
|
||||
return $schema;
|
||||
}
|
||||
|
|
|
@ -19,11 +19,11 @@ function tracker_help($route_name, RouteMatchInterface $route_match) {
|
|||
switch ($route_name) {
|
||||
case 'help.page.tracker':
|
||||
$output = '<h3>' . t('About') . '</h3>';
|
||||
$output .= '<p>' . t('The Activity Tracker module displays the most recently added and updated content on your site, and allows you to follow new content created by each user. This module has no configuration options. For more information, see the <a href=":tracker">online documentation for the Activity Tracker module</a>.', array(':tracker' => 'https://www.drupal.org/documentation/modules/tracker')) . '</p>';
|
||||
$output .= '<p>' . t('The Activity Tracker module displays the most recently added and updated content on your site, and allows you to follow new content created by each user. This module has no configuration options. For more information, see the <a href=":tracker">online documentation for the Activity Tracker module</a>.', [':tracker' => 'https://www.drupal.org/documentation/modules/tracker']) . '</p>';
|
||||
$output .= '<h3>' . t('Uses') . '</h3>';
|
||||
$output .= '<dl>';
|
||||
$output .= '<dt>' . t('Tracking new and updated site content') . '</dt>';
|
||||
$output .= '<dd>' . t('The <a href=":recent">Recent content</a> page shows new and updated content in reverse chronological order, listing the content type, title, author\'s name, number of comments, and time of last update. Content is considered updated when changes occur in the text, or when new comments are added. The <em>My recent content</em> tab limits the list to the currently logged-in user.', array(':recent' => \Drupal::url('tracker.page'))) . '</dd>';
|
||||
$output .= '<dd>' . t('The <a href=":recent">Recent content</a> page shows new and updated content in reverse chronological order, listing the content type, title, author\'s name, number of comments, and time of last update. Content is considered updated when changes occur in the text, or when new comments are added. The <em>My recent content</em> tab limits the list to the currently logged-in user.', [':recent' => \Drupal::url('tracker.page')]) . '</dd>';
|
||||
$output .= '<dt>' . t('Tracking user-specific content') . '</dt>';
|
||||
$output .= '<dd>' . t("To follow a specific user's new and updated content, select the <em>Activity</em> tab from the user's profile page.") . '</dd>';
|
||||
$output .= '</dl>';
|
||||
|
@ -70,21 +70,21 @@ function tracker_cron() {
|
|||
|
||||
// Insert the node-level data.
|
||||
db_insert('tracker_node')
|
||||
->fields(array(
|
||||
->fields([
|
||||
'nid' => $nid,
|
||||
'published' => $node->isPublished(),
|
||||
'changed' => $changed,
|
||||
))
|
||||
])
|
||||
->execute();
|
||||
|
||||
// Insert the user-level data for the node's author.
|
||||
db_insert('tracker_user')
|
||||
->fields(array(
|
||||
->fields([
|
||||
'nid' => $nid,
|
||||
'published' => $node->isPublished(),
|
||||
'changed' => $changed,
|
||||
'uid' => $node->getOwnerId(),
|
||||
))
|
||||
])
|
||||
->execute();
|
||||
|
||||
// Insert the user-level data for the commenters (except if a commenter
|
||||
|
@ -103,12 +103,12 @@ function tracker_cron() {
|
|||
if ($result) {
|
||||
$query = db_insert('tracker_user');
|
||||
foreach ($result as $row) {
|
||||
$query->fields(array(
|
||||
$query->fields([
|
||||
'uid' => $row['uid'],
|
||||
'nid' => $nid,
|
||||
'published' => CommentInterface::PUBLISHED,
|
||||
'changed' => $changed,
|
||||
));
|
||||
]);
|
||||
}
|
||||
$query->execute();
|
||||
}
|
||||
|
@ -123,7 +123,7 @@ function tracker_cron() {
|
|||
// Prepare a starting point for the next run.
|
||||
$state->set('tracker.index_nid', $last_nid - 1);
|
||||
|
||||
\Drupal::logger('tracker')->notice('Indexed %count content items for tracking.', array('%count' => $count));
|
||||
\Drupal::logger('tracker')->notice('Indexed %count content items for tracking.', ['%count' => $count]);
|
||||
}
|
||||
else {
|
||||
// If all nodes have been indexed, set to zero to skip future cron runs.
|
||||
|
@ -242,7 +242,7 @@ function tracker_comment_delete(CommentInterface $comment) {
|
|||
function _tracker_add($nid, $uid, $changed) {
|
||||
// @todo This should be actually filtering on the desired language and just
|
||||
// fall back to the default language.
|
||||
$node = db_query('SELECT nid, status, uid, changed FROM {node_field_data} WHERE nid = :nid AND default_langcode = 1 ORDER BY changed DESC, status DESC', array(':nid' => $nid))->fetchObject();
|
||||
$node = db_query('SELECT nid, status, uid, changed FROM {node_field_data} WHERE nid = :nid AND default_langcode = 1 ORDER BY changed DESC, status DESC', [':nid' => $nid])->fetchObject();
|
||||
|
||||
// Adding a comment can only increase the changed timestamp, so our
|
||||
// calculation here is simple.
|
||||
|
@ -251,30 +251,30 @@ function _tracker_add($nid, $uid, $changed) {
|
|||
// Update the node-level data.
|
||||
db_merge('tracker_node')
|
||||
->key('nid', $nid)
|
||||
->fields(array(
|
||||
->fields([
|
||||
'changed' => $changed,
|
||||
'published' => $node->status,
|
||||
))
|
||||
])
|
||||
->execute();
|
||||
|
||||
// Create or update the user-level data, first for the user posting.
|
||||
db_merge('tracker_user')
|
||||
->keys(array(
|
||||
->keys([
|
||||
'nid' => $nid,
|
||||
'uid' => $uid,
|
||||
))
|
||||
->fields(array(
|
||||
])
|
||||
->fields([
|
||||
'changed' => $changed,
|
||||
'published' => $node->status,
|
||||
))
|
||||
])
|
||||
->execute();
|
||||
// Update the times for all the other users tracking the post.
|
||||
db_update('tracker_user')
|
||||
->condition('nid', $nid)
|
||||
->fields(array(
|
||||
->fields([
|
||||
'changed' => $changed,
|
||||
'published' => $node->status,
|
||||
))
|
||||
])
|
||||
->execute();
|
||||
}
|
||||
|
||||
|
@ -293,7 +293,7 @@ function _tracker_add($nid, $uid, $changed) {
|
|||
*/
|
||||
function _tracker_calculate_changed($node) {
|
||||
$changed = $node->getChangedTime();
|
||||
$latest_comment = \Drupal::service('comment.statistics')->read(array($node), 'node', FALSE);
|
||||
$latest_comment = \Drupal::service('comment.statistics')->read([$node], 'node', FALSE);
|
||||
if ($latest_comment && $latest_comment->last_comment_timestamp > $changed) {
|
||||
$changed = $latest_comment->last_comment_timestamp;
|
||||
}
|
||||
|
@ -343,7 +343,7 @@ function _tracker_remove($nid, $uid = NULL, $changed = NULL) {
|
|||
// and the node itself.
|
||||
// We only need to do this if the removed item has a timestamp that equals
|
||||
// or exceeds the listed changed timestamp for the node.
|
||||
$tracker_node = db_query('SELECT nid, changed FROM {tracker_node} WHERE nid = :nid', array(':nid' => $nid))->fetchObject();
|
||||
$tracker_node = db_query('SELECT nid, changed FROM {tracker_node} WHERE nid = :nid', [':nid' => $nid])->fetchObject();
|
||||
if ($tracker_node && $changed >= $tracker_node->changed) {
|
||||
// If we're here, the item being removed is *possibly* the item that
|
||||
// established the node's changed timestamp.
|
||||
|
@ -354,17 +354,17 @@ function _tracker_remove($nid, $uid = NULL, $changed = NULL) {
|
|||
// And then we push the out the new changed timestamp to our denormalized
|
||||
// tables.
|
||||
db_update('tracker_node')
|
||||
->fields(array(
|
||||
->fields([
|
||||
'changed' => $changed,
|
||||
'published' => $node->isPublished(),
|
||||
))
|
||||
])
|
||||
->condition('nid', $nid)
|
||||
->execute();
|
||||
db_update('tracker_node')
|
||||
->fields(array(
|
||||
->fields([
|
||||
'changed' => $changed,
|
||||
'published' => $node->isPublished(),
|
||||
))
|
||||
])
|
||||
->condition('nid', $nid)
|
||||
->execute();
|
||||
}
|
||||
|
|
|
@ -30,7 +30,7 @@ function tracker_page($account = NULL) {
|
|||
->condition('t.uid', $account->id());
|
||||
}
|
||||
else {
|
||||
$query = db_select('tracker_node', 't', array('target' => 'replica'))
|
||||
$query = db_select('tracker_node', 't', ['target' => 'replica'])
|
||||
->extend('Drupal\Core\Database\Query\PagerSelectExtender')
|
||||
->addMetaData('base_table', 'tracker_node');
|
||||
}
|
||||
|
@ -39,7 +39,7 @@ function tracker_page($account = NULL) {
|
|||
// while keeping the correct order.
|
||||
$tracker_data = $query
|
||||
->addTag('node_access')
|
||||
->fields('t', array('nid', 'changed'))
|
||||
->fields('t', ['nid', 'changed'])
|
||||
->condition('t.published', 1)
|
||||
->orderBy('t.changed', 'DESC')
|
||||
->limit(25)
|
||||
|
@ -86,34 +86,34 @@ function tracker_page($account = NULL) {
|
|||
$comments = $node->comment_count;
|
||||
}
|
||||
|
||||
$row = array(
|
||||
$row = [
|
||||
'type' => node_get_type_label($node),
|
||||
'title' => array(
|
||||
'data' => array(
|
||||
'title' => [
|
||||
'data' => [
|
||||
'#type' => 'link',
|
||||
'#url' => $node->urlInfo(),
|
||||
'#title' => $node->getTitle(),
|
||||
),
|
||||
],
|
||||
'data-history-node-id' => $node->id(),
|
||||
'data-history-node-timestamp' => $node->getChangedTime(),
|
||||
),
|
||||
'author' => array(
|
||||
'data' => array(
|
||||
],
|
||||
'author' => [
|
||||
'data' => [
|
||||
'#theme' => 'username',
|
||||
'#account' => $node->getOwner(),
|
||||
),
|
||||
),
|
||||
'comments' => array(
|
||||
'class' => array('comments'),
|
||||
],
|
||||
],
|
||||
'comments' => [
|
||||
'class' => ['comments'],
|
||||
'data' => $comments,
|
||||
'data-history-node-last-comment-timestamp' => $node->last_comment_timestamp,
|
||||
),
|
||||
'last updated' => array(
|
||||
'data' => t('@time ago', array(
|
||||
],
|
||||
'last updated' => [
|
||||
'data' => t('@time ago', [
|
||||
'@time' => \Drupal::service('date.formatter')->formatTimeDiffSince($node->last_activity),
|
||||
)),
|
||||
),
|
||||
);
|
||||
]),
|
||||
],
|
||||
];
|
||||
|
||||
$rows[] = $row;
|
||||
|
||||
|
@ -128,16 +128,16 @@ function tracker_page($account = NULL) {
|
|||
// Add the list cache tag for nodes.
|
||||
$cache_tags = Cache::mergeTags($cache_tags, \Drupal::entityManager()->getDefinition('node')->getListCacheTags());
|
||||
|
||||
$page['tracker'] = array(
|
||||
$page['tracker'] = [
|
||||
'#rows' => $rows,
|
||||
'#header' => array(t('Type'), t('Title'), t('Author'), t('Comments'), t('Last updated')),
|
||||
'#header' => [t('Type'), t('Title'), t('Author'), t('Comments'), t('Last updated')],
|
||||
'#type' => 'table',
|
||||
'#empty' => t('No content available.'),
|
||||
);
|
||||
$page['pager'] = array(
|
||||
];
|
||||
$page['pager'] = [
|
||||
'#type' => 'pager',
|
||||
'#weight' => 10,
|
||||
);
|
||||
];
|
||||
$page['#sorted'] = TRUE;
|
||||
$page['#cache']['tags'] = $cache_tags;
|
||||
$page['#cache']['contexts'][] = 'user.node_grants:view';
|
||||
|
|
|
@ -13,7 +13,7 @@ tracker.users_recent_content:
|
|||
_title: 'My recent content'
|
||||
requirements:
|
||||
_permission: 'access content'
|
||||
_access_tracker_own_information: 'TRUE'
|
||||
_custom_access: '\Drupal\tracker\Controller\TrackerUserRecent::checkAccess'
|
||||
user: \d+
|
||||
|
||||
tracker.user_tab:
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
services:
|
||||
access_check.tracker.view_own:
|
||||
class: Drupal\tracker\Access\ViewOwnTrackerAccessCheck
|
||||
tags:
|
||||
- { name: access_check, applies_to: _access_tracker_own_information }
|
|
@ -9,146 +9,146 @@
|
|||
* Implements hook_views_data().
|
||||
*/
|
||||
function tracker_views_data() {
|
||||
$data = array();
|
||||
$data = [];
|
||||
|
||||
$data['tracker_node']['table']['group'] = t('Tracker');
|
||||
$data['tracker_node']['table']['join'] = array(
|
||||
'node_field_data' => array(
|
||||
$data['tracker_node']['table']['join'] = [
|
||||
'node_field_data' => [
|
||||
'type' => 'INNER',
|
||||
'left_field' => 'nid',
|
||||
'field' => 'nid',
|
||||
),
|
||||
);
|
||||
$data['tracker_node']['nid'] = array(
|
||||
],
|
||||
];
|
||||
$data['tracker_node']['nid'] = [
|
||||
'title' => t('Nid'),
|
||||
'help' => t('The node ID of the node.'),
|
||||
'field' => array(
|
||||
'field' => [
|
||||
'id' => 'node',
|
||||
),
|
||||
'argument' => array(
|
||||
],
|
||||
'argument' => [
|
||||
'id' => 'node_nid',
|
||||
'name field' => 'title',
|
||||
'numeric' => TRUE,
|
||||
'validate type' => 'nid',
|
||||
),
|
||||
'filter' => array(
|
||||
],
|
||||
'filter' => [
|
||||
'id' => 'numeric',
|
||||
),
|
||||
'sort' => array(
|
||||
],
|
||||
'sort' => [
|
||||
'id' => 'standard',
|
||||
),
|
||||
);
|
||||
$data['tracker_node']['published'] = array(
|
||||
],
|
||||
];
|
||||
$data['tracker_node']['published'] = [
|
||||
'title' => t('Published'),
|
||||
'help' => t('Whether or not the node is published.'),
|
||||
'field' => array(
|
||||
'field' => [
|
||||
'id' => 'boolean',
|
||||
),
|
||||
'filter' => array(
|
||||
],
|
||||
'filter' => [
|
||||
'id' => 'boolean',
|
||||
'label' => t('Published'),
|
||||
'type' => 'yes-no',
|
||||
'accept null' => TRUE,
|
||||
'use_equal' => TRUE,
|
||||
),
|
||||
'sort' => array(
|
||||
],
|
||||
'sort' => [
|
||||
'id' => 'standard',
|
||||
),
|
||||
);
|
||||
$data['tracker_node']['changed'] = array(
|
||||
],
|
||||
];
|
||||
$data['tracker_node']['changed'] = [
|
||||
'title' => t('Updated date'),
|
||||
'help' => t('The date the node was last updated.'),
|
||||
'field' => array(
|
||||
'field' => [
|
||||
'id' => 'date',
|
||||
),
|
||||
'sort' => array(
|
||||
],
|
||||
'sort' => [
|
||||
'id' => 'date',
|
||||
),
|
||||
'filter' => array(
|
||||
],
|
||||
'filter' => [
|
||||
'id' => 'date',
|
||||
),
|
||||
);
|
||||
],
|
||||
];
|
||||
|
||||
$data['tracker_user']['table']['group'] = t('Tracker - User');
|
||||
$data['tracker_user']['table']['join'] = array(
|
||||
'node_field_data' => array(
|
||||
$data['tracker_user']['table']['join'] = [
|
||||
'node_field_data' => [
|
||||
'type' => 'INNER',
|
||||
'left_field' => 'nid',
|
||||
'field' => 'nid',
|
||||
),
|
||||
'user_field_data' => array(
|
||||
],
|
||||
'user_field_data' => [
|
||||
'type' => 'INNER',
|
||||
'left_field' => 'uid',
|
||||
'field' => 'uid',
|
||||
),
|
||||
);
|
||||
$data['tracker_user']['nid'] = array(
|
||||
],
|
||||
];
|
||||
$data['tracker_user']['nid'] = [
|
||||
'title' => t('Nid'),
|
||||
'help' => t('The node ID of the node a user created or commented on. You must use an argument or filter on UID or you will get misleading results using this field.'),
|
||||
'field' => array(
|
||||
'field' => [
|
||||
'id' => 'node',
|
||||
),
|
||||
'argument' => array(
|
||||
],
|
||||
'argument' => [
|
||||
'id' => 'node_nid',
|
||||
'name field' => 'title',
|
||||
'numeric' => TRUE,
|
||||
'validate type' => 'nid',
|
||||
),
|
||||
'filter' => array(
|
||||
],
|
||||
'filter' => [
|
||||
'id' => 'numeric',
|
||||
),
|
||||
'sort' => array(
|
||||
],
|
||||
'sort' => [
|
||||
'id' => 'standard',
|
||||
),
|
||||
);
|
||||
$data['tracker_user']['uid'] = array(
|
||||
],
|
||||
];
|
||||
$data['tracker_user']['uid'] = [
|
||||
'title' => t('Uid'),
|
||||
'help' => t('The user ID of a user who touched the node (either created or commented on it).'),
|
||||
'field' => array(
|
||||
'field' => [
|
||||
'id' => 'user_name',
|
||||
),
|
||||
'argument' => array(
|
||||
],
|
||||
'argument' => [
|
||||
'id' => 'user_uid',
|
||||
'name field' => 'name',
|
||||
),
|
||||
'filter' => array(
|
||||
],
|
||||
'filter' => [
|
||||
'title' => t('Name'),
|
||||
'id' => 'user_name',
|
||||
),
|
||||
'sort' => array(
|
||||
],
|
||||
'sort' => [
|
||||
'id' => 'standard',
|
||||
),
|
||||
);
|
||||
$data['tracker_user']['published'] = array(
|
||||
],
|
||||
];
|
||||
$data['tracker_user']['published'] = [
|
||||
'title' => t('Published'),
|
||||
'help' => t('Whether or not the node is published. You must use an argument or filter on UID or you will get misleading results using this field.'),
|
||||
'field' => array(
|
||||
'field' => [
|
||||
'id' => 'boolean',
|
||||
),
|
||||
'filter' => array(
|
||||
],
|
||||
'filter' => [
|
||||
'id' => 'boolean',
|
||||
'label' => t('Published'),
|
||||
'type' => 'yes-no',
|
||||
'accept null' => TRUE,
|
||||
'use_equal' => TRUE,
|
||||
),
|
||||
'sort' => array(
|
||||
],
|
||||
'sort' => [
|
||||
'id' => 'standard',
|
||||
),
|
||||
);
|
||||
$data['tracker_user']['changed'] = array(
|
||||
],
|
||||
];
|
||||
$data['tracker_user']['changed'] = [
|
||||
'title' => t('Updated date'),
|
||||
'help' => t('The date the node was last updated or commented on. You must use an argument or filter on UID or you will get misleading results using this field.'),
|
||||
'field' => array(
|
||||
'field' => [
|
||||
'id' => 'date',
|
||||
),
|
||||
'sort' => array(
|
||||
],
|
||||
'sort' => [
|
||||
'id' => 'date',
|
||||
),
|
||||
'filter' => array(
|
||||
],
|
||||
'filter' => [
|
||||
'id' => 'date',
|
||||
),
|
||||
);
|
||||
],
|
||||
];
|
||||
|
||||
return $data;
|
||||
}
|
||||
|
@ -158,22 +158,22 @@ function tracker_views_data() {
|
|||
*/
|
||||
function tracker_views_data_alter(&$data) {
|
||||
// Provide additional uid_touch handlers which are handled by tracker
|
||||
$data['node_field_data']['uid_touch_tracker'] = array(
|
||||
$data['node_field_data']['uid_touch_tracker'] = [
|
||||
'group' => t('Tracker - User'),
|
||||
'title' => t('User posted or commented'),
|
||||
'help' => t('Display nodes only if a user posted the node or commented on the node.'),
|
||||
'argument' => array(
|
||||
'argument' => [
|
||||
'field' => 'uid',
|
||||
'name table' => 'users_field_data',
|
||||
'name field' => 'name',
|
||||
'id' => 'tracker_user_uid',
|
||||
'no group by' => TRUE,
|
||||
),
|
||||
'filter' => array(
|
||||
],
|
||||
'filter' => [
|
||||
'field' => 'uid',
|
||||
'name table' => 'users_field_data',
|
||||
'name field' => 'name',
|
||||
'id' => 'tracker_user_uid'
|
||||
),
|
||||
);
|
||||
],
|
||||
];
|
||||
}
|
||||
|
|
Reference in a new issue