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->id === 1) { /** @var \Modules\Auditor\Models\Audit $first */ $first = AuditMapper::get() ->where('id', $first->id + 1) ->execute(); } $count = 0; if ($first->id > 0 && $first->blockchain === null) { /** @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->id - 1) ->execute(); $current = $first; $endLastBatchId = $first->id - 1; while ($current->id !== 0 && $current->id < $last->id) { /** @var \Modules\Auditor\Models\Audit[] $batch */ $batch = AuditMapper::getAll() ->where('id', $endLastBatchId, '>') ->sort('id', OrderType::ASC) ->limit(50) ->executeGetArray(); foreach ($batch as $audit) { $current = $audit; $current->blockchain = \md5( $previous->blockchain . $current->id . $current->createdBy->id . $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->id; } } $view->data['count'] = $count; return $view; } }