removeRelatedFiles($revisionId, $assignedFiles); // allow uploading only on created pages if (!$this->id || !$files[0]) { return $changed; } // find or create new directory for files assigned to content $directory = Directory::firstOrCreate([ 'name' => '.content_files', 'hidden' => true ]); $data = new \stdClass(); $data->directoryId = $directory->id; $fileModel = App::make(File::class); foreach ($files as $file) { if (!$file) { continue; } $uploaded = $fileModel->upload($file, $data); // add assignement ContentHasFile::create([ 'file_id' => $uploaded['id'], 'content_id' => $this->id ]); if ($revisionId) { $this->saveHistory($revisionId, 'file', null, ['file' => $uploaded['file']->getClientOriginalName()]); } $changed++; } return $changed; } /** * Delete files from association * * @param $revisionId * * @return int */ private function removeRelatedFiles($revisionId, $assignedFiles) { $allFiles = $this->files() ->whereNotIn('id', array_keys($assignedFiles)) ->get(); foreach ($allFiles as $file) { ContentHasFile::where('content_id', $this->id) ->where('file_id', $file->id) ->delete(); } return count($allFiles); } }