Skip to content
Snippets Groups Projects
Commit e8ab33fe authored by Anton Kuzmenko's avatar Anton Kuzmenko
Browse files

Merge branch '3453874-not-working-with' into '2.x'

Use Database API instead of raw queries for PostgreSQL support

See merge request !6
parents cc3cd149 548c1cd4
No related branches found
No related tags found
No related merge requests found
Pipeline #245499 skipped
......@@ -42,12 +42,29 @@ function node_access_rebuild_progressive_trigger(): void {
node_access_rebuild_progressive_set_default();
node_access_rebuild_progressive_finished();
}
// Clean up possible mismatches.
$database->query("DELETE FROM {node_access} WHERE nid NOT IN (SELECT nid FROM {node})");
// Clean up possible mismatches using a subquery.
$subquery = $database->select('node', 'n')
->fields('n', ['nid']);
$database->delete('node_access')
->condition('nid', $subquery, 'NOT IN')
->execute();
// We only need the current one, nodes created afterward would get processed
// at save time.
$highest = $database->query("SELECT nid FROM {node} ORDER BY nid DESC LIMIT 0,1")->fetchField();
$count = $database->query("SELECT count(nid) FROM {node}")->fetchField();
$highest = $database->select('node', 'n')
->fields('n', ['nid'])
->orderBy('nid', 'DESC')
->range(0, 1)
->execute()
->fetchField();
$count = $database->select('node', 'n')
->fields('n', ['nid'])
->countQuery()
->execute()
->fetchField();
\Drupal::state()->set('node_access_rebuild_progressive.current', $highest + 1);
\Drupal::state()->set('node_access_rebuild_progressive.processed', 0);
\Drupal::logger('node_access_rebuild_progressive')->info('%count nodes queued for node access rebuild.', ['%count' => $count]);
......@@ -83,7 +100,12 @@ function node_access_rebuild_progressive_process_cron(): void {
function node_access_rebuild_progressive_process_chunk(): array {
$current = \Drupal::state()->get('node_access_rebuild_progressive.current');
$chunk_size = \Drupal::config('node_access_rebuild_progressive.settings')->get('chunk');
$nids = \Drupal::database()->query("SELECT nid FROM {node} WHERE nid < :current ORDER BY nid DESC LIMIT 0, $chunk_size", [':current' => $current])
$nids = \Drupal::database()->select('node', 'n')
->fields('n', ['nid'])
->condition('nid', $current, '<')
->orderBy('nid', 'DESC')
->range(0, $chunk_size)
->execute()
->fetchCol();
$total = count($nids);
......@@ -134,7 +156,10 @@ function _drush_node_access_rebuild_progressive_rebuild(SiteAliasManagerInterfac
$exitCode = 0;
$finished = FALSE;
$total = \Drupal::database()->query("SELECT count(nid) FROM {node}")->fetchField();
$total = \Drupal::database()->select('node', 'n')
->countQuery()
->execute()
->fetchField();
while (!$finished) {
$cmd = '_drush_node_access_rebuild_progressive_process(' . $total . ');';
$process = Drush::drush($aliasManager->getSelf(), 'php-eval', [$cmd], ['format' => 'json']);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment