file = $file . '/document.json'; $this->searchers = $searchers; $this->storage = Storage::disk('local'); } public function execute() { if(! $this->storage->exists("contracts/$this->file")) { return; } try { $content = $this->getContent(); } catch (\Exception $exception) { \Illuminate\Support\Facades\Log::info('EXCEPTION: ' . $exception->getMessage()); return; } $searchDisplace = $this->applySD($content); $convert = new HtmlOutput($searchDisplace); return $convert->getData(); } protected function getContent() { return json_decode($this->storage->get("contracts/$this->file")); } protected function applySD($elements) { $indexes = []; foreach($elements as $element) { if($element->tag === 'img') continue; $search = new SearchAndDisplace( stripslashes($element->content), [ 'searchers' => $this->searchers, ], false, true ); $changed = $search->execute(); if($changed) { foreach($changed['indexes'] as $key => $searcher) { foreach($searcher as $change) { if($change['start']) { $indexes[$key][] = $change; $element->paragraph = $key; } } } $element->content = $changed['content']; } } return [ 'content' => $elements, 'indexes' => $indexes ]; } }