Skip to content
Snippets Groups Projects

imp: I-7969 share number cache per request

Merged simon requested to merge imp-I-7969-share-number-cache-per-request into 1.x
+ 15
11
@@ -606,20 +606,24 @@ EOF
}
if (!$this->getName()) {
$sid = "share_number";
$previous_number = \Drupal::state()->get($sid);
if ($previous_number) {
$next_number = $previous_number + 1;
}
else {
$previous_data = \Drupal::state()->get($sid);
if (!is_array($previous_data) || $previous_data['ts'] != \Drupal::time()->getRequestTime()) {
$connection = \Drupal::database();
$result = $connection->query("select max(convert(coalesce(name, 0), SIGNED INTEGER)) + 1 as maxid from {share}");
$next_number = $result->fetchObject()->maxid;
if (!$next_number) {
$next_number = 1;
$result = $connection->query("select max(convert(coalesce(name, 0), SIGNED INTEGER)) as maxid from {share}");
$last_number = $result->fetchObject()->maxid;
if (!$last_number) {
$last_number = 0;
}
$previous_data = [
'ts' => \Drupal::time()->getRequestTime(),
'number' => $last_number,
];
}
$this->setName($next_number);
\Drupal::state()->set($sid, $next_number);
$previous_data['number'] += 1;
\Drupal::state()->set($sid, $previous_data);
$this->setName($previous_data['number']);
}
$transaction = $this->getIssuingTransaction();