Skip to content

Commit

Permalink
Save and retrieve media combinations
Browse files Browse the repository at this point in the history
  • Loading branch information
marioSantos97 committed Oct 28, 2022
1 parent 6de1ad6 commit 699f29f
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 4 deletions.
21 changes: 21 additions & 0 deletions src/app/Models/MediaCombination.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<?php

namespace GemaDigital\FileManager\app\Models;

use Backpack\CRUD\app\Models\Traits\CrudTrait;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class MediaCombination extends Model
{
use CrudTrait;
use HasFactory;

/*
|--------------------------------------------------------------------------
| GLOBAL VARIABLES
|--------------------------------------------------------------------------
*/

protected $table = 'media_has_combinations';
}
5 changes: 5 additions & 0 deletions src/app/Models/MediaContent.php
Original file line number Diff line number Diff line change
Expand Up @@ -38,4 +38,9 @@ public function media()
{
return $this->belongsTo(Media::class);
}

public function combinatedMedias()
{
return $this->belongsToMany(Media::class, 'media_has_combinations', 'media_id', 'combinated_media_id');
}
}
21 changes: 17 additions & 4 deletions src/app/Models/Traits/MediaTrait.php
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ public function getMedia($column, $mediaFieldId = false)

$orderedIds = array_values($mediaIds->toArray());
$mediaContents = MediaContent::whereIn('media_id', $mediaIds)
->with('media')->get();
->with(['media', 'combinatedMedias'])->get();

foreach ($mediaContents as $mediaContent) {
foreach ($mediaIds as $position => $mediaId) {
Expand All @@ -45,24 +45,37 @@ public static function afterCreate($entry)
if ($entry[$column] !== null) {
$decoded = json_decode($entry[$column]);
if (is_object($decoded) && count($decoded->medias) > 0) {
$mediaIds = $decoded->medias;
$medias = $decoded->medias;
$mediaField = MediaField::create([
'entity_type' => self::class,
'entity_id' => $entry->id,
]);

$data = [];
$combinationData = [];

$i = 1;
foreach ($mediaIds as $mediaId) {
foreach ($medias as $media) {
array_push($data, [
'media_id' => $mediaId,
'media_id' => $media->id,
'media_field_id' => $mediaField->id,
'position' => $i,
]);

if (count($media->combined_medias)) {
foreach ($media->combined_medias as $combinedMediaId) {
array_push($combinationData, [
'media_id' => $media->id,
'combinated_media_id' => $combinedMediaId,
]);
}
}

$i++;
}

DB::table('media_field_has_media')->insert($data);
DB::table('media__has_combinations')->insert($combinationData);

$entry[$column] = $mediaField->id;
$entry->saveQuietly();
Expand Down

0 comments on commit 699f29f

Please sign in to comment.