app->l11nManager, $request, $response); $view->setTemplate('/Modules/Auditor/Theme/Cli/blockchain'); /** @var \Modules\Auditor\Models\Audit $first */ $first = AuditMapper::get() ->where('blockchain', null) ->sort('id', OrderType::ASC) ->limit(1) ->execute(); if ($first->getId() === 1) { /** @var \Modules\Auditor\Models\Audit $first */ $first = AuditMapper::get() ->where('id', $first->getId() + 1) ->execute(); } $count = 0; if (!($first instanceof NullAudit)) { /** @var \Modules\Auditor\Models\Audit $last */ $last = AuditMapper::get() ->sort('id', OrderType::DESC) ->limit(1) ->execute(); /** @var \Modules\Auditor\Models\Audit $previous */ $previous = AuditMapper::get() ->where('id', $first->getId() - 1) ->execute(); $current = $first; $endLastBatchId = $first->getId() - 1; while ($current->getId() !== 0 && $current->getId() <= $last->getId()) { /** @var \Modules\Auditor\Models\Audit[] $batch */ $batch = AuditMapper::getAll() ->where('id', $endLastBatchId, '>') ->sort('id', OrderType::ASC) ->limit(50) ->execute(); foreach ($batch as $audit) { $current = $audit; $current->blockchain = \md5( $previous->blockchain . $current->getId() . $current->createdBy->getId() . $current->createdAt->format('Y-m-d H:i:s') . $current->type . $current->trigger . $current->module . $current->ref . $current->old . $current->new . $current->content ); AuditMapper::update()->with('blockchain')->execute($current); ++$count; $previous = $current; } $endLastBatchId = $current->getId(); } } $view->setData('count', $count); return $view; } }