File: D:/HostingSpaces/SBogers10/komma.pro/app/KommaApp/Blocks/BlockService.php
<?php
/**
* Created by PhpStorm.
* User: mike
* Date: 27/07/2018
* Time: 15:22
*/
namespace App\KommaApp\Blocks;
use App\KommaApp\Images\ImageService;
class BlockService
{
/**
* @var ImageService
*/
private $imageService;
/**
* @var string
* Used as folder for default view templates
*/
private $subFolder;
public function __construct(ImageService $imageService)
{
$this->imageService = $imageService;
}
/**
* @param $jsonBlocks
* @param string $defaultViewFolder
* @return \Illuminate\Support\Collection
*/
public function decode($jsonBlocks)
{
// Create empty collection which we will return
$dynamicBlocks = collect();
// Decode json
$decodedBlocks = json_decode($jsonBlocks);
// Loop through decoded blocks
foreach ($decodedBlocks as $dynamicBlock){
// Attach files to dynamic block
if(isset($dynamicBlock->fileIds)) $dynamicBlock->images = $this->imageService->getDynamicBlockImages( $dynamicBlock->fileIds );
// Set a default view
if(empty($dynamicBlock->view)) $dynamicBlock->view = $this->setDefaultView($dynamicBlock);
// Push to collection
$dynamicBlocks->push($dynamicBlock);
}
return $dynamicBlocks;
}
/**
* @param string $subFolder
*/
public function setSubFolder(string $subFolder)
{
$this->subFolder = $subFolder;
}
/**
* Set default view for a dynamicBlock
* @param $dynamicBlock
* @return string
*/
private function setDefaultView($dynamicBlock)
{
$dynamicBlock->view = 'site.blocks';
// Add sub-folder if set
if( ! empty($this->subFolder)) $dynamicBlock->view .= '.' . $this->subFolder;
// Add typeSlug as default file name
$dynamicBlock->view .= '.' . camel_case($dynamicBlock->typeSlug);
return $dynamicBlock->view;
}
}