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; } $sd = $this->applySD($content); return [ 'content' => $this->convertToHTML($sd['content']), 'indexes' => $sd['indexes'] ]; } 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) { $indexes = $changed['indexes']; $element->content = $changed['content']; } } return [ 'content' => $elements, 'indexes' => $indexes ]; } protected function convertToHTML($elements) { $html = ''; $url = url('/') . '/contracts-images'; foreach($elements as $key => $element) { if($element->tag !== 'img') { $html .= "<$element->tag style=\"$element->style\">$element->contenttag>"; } else { $src = $url . '/' . str_replace(' ', '%20', $element->src); $html .= "style src=\"$src\" alt=\"$element->details\">"; } if($key !== array_key_last($elements)) { $html .= '
'; } } return $html; } }