JsonWriterTrait.php in Content Synchronizer 3.x
File
src/Base/JsonWriterTrait.php
View source
<?php
namespace Drupal\content_synchronizer\Base;
use Drupal\Core\File\FileSystem;
use Drupal\file\Entity\File;
trait JsonWriterTrait {
protected $fileSystem;
protected function writeJson($data, $destination) {
$dir = explode('/', $destination);
array_pop($dir);
$dir = implode('/', $dir);
$this
->createDirectory($dir);
$this
->fileSystem()
->prepareDirectory($dir, FileSystem::CHMOD_DIRECTORY);
$uri = $this
->fileSystem()
->saveData(json_encode($data), $destination, FileSystem::EXISTS_REPLACE);
File::create([
'uri' => $uri,
'status' => FILE_STATUS_PERMANENT,
])
->save();
}
protected function getDataFromFile($path) {
if (file_exists($path)) {
return json_decode(file_get_contents($path), TRUE);
}
return NULL;
}
protected function createDirectory($dir) {
if (!is_dir($dir)) {
$this
->fileSystem()
->prepareDirectory($dir, FileSystem::CREATE_DIRECTORY);
}
}
protected function createDirTreeForFileDest($destination, $root = '/') {
$destinationItems = explode('/', $destination);
$fileName = array_pop($destinationItems);
foreach ($destinationItems as $dirItem) {
$root .= '/' . $dirItem;
$this
->createDirectory($root);
}
return $root . '/' . $fileName;
}
public function fileSystem() {
return \Drupal::service('file_system');
}
}