3
3
namespace A17 \Twill \Repositories \Behaviors ;
4
4
5
5
use A17 \Twill \Facades \TwillBlocks ;
6
+ use A17 \Twill \Facades \TwillUtil ;
7
+ use A17 \Twill \Models \Behaviors \HasMedias ;
6
8
use A17 \Twill \Models \Contracts \TwillModelContract ;
7
9
use A17 \Twill \Models \Media ;
8
10
use Illuminate \Support \Arr ;
@@ -43,7 +45,7 @@ public function hydrateHandleMedias($object, $fields)
43
45
}
44
46
45
47
/**
46
- * @param \A17\Twill\Models\Model $object
48
+ * @param \A17\Twill\Models\Model|HasMedias $object
47
49
* @param array $fields
48
50
* @return void
49
51
*/
@@ -53,7 +55,7 @@ public function afterSaveHandleMedias($object, $fields)
53
55
return ;
54
56
}
55
57
56
- $ object ->medias ()-> sync ( $ this ->getMedias ($ fields ));
58
+ TwillUtil:: syncUsingPrimaryKey ( $ object ->medias (), $ this ->getMedias ($ fields ));
57
59
}
58
60
59
61
/**
@@ -80,7 +82,7 @@ private function getMedias($fields)
80
82
$ customMetadatas = $ media ['metadatas ' ]['custom ' ] ?? [];
81
83
if (isset ($ media ['crops ' ]) && !empty ($ media ['crops ' ])) {
82
84
foreach ($ media ['crops ' ] as $ cropName => $ cropData ) {
83
- $ medias-> push ( [
85
+ $ medias[ $ cropData [ ' pivot_id ' ] ?? uniqid ( ' media ' )] = [
84
86
'media_id ' => $ media ['id ' ],
85
87
'crop ' => $ cropName ,
86
88
'role ' => $ role ,
@@ -91,11 +93,11 @@ private function getMedias($fields)
91
93
'crop_x ' => $ cropData ['x ' ],
92
94
'crop_y ' => $ cropData ['y ' ],
93
95
'metadatas ' => json_encode ($ customMetadatas ),
94
- ]) ;
96
+ ];
95
97
}
96
98
} else {
97
99
foreach ($ this ->getCrops ($ role ) as $ cropName => $ cropDefinitions ) {
98
- $ medias-> push ( [
100
+ $ medias[ $ media [ ' pivot_id ' ] ?? uniqid ( ' media ' )] = [
99
101
'media_id ' => $ media ['id ' ],
100
102
'crop ' => $ cropName ,
101
103
'role ' => $ role ,
@@ -106,7 +108,7 @@ private function getMedias($fields)
106
108
'crop_x ' => null ,
107
109
'crop_y ' => null ,
108
110
'metadatas ' => json_encode ($ customMetadatas ),
109
- ]) ;
111
+ ];
110
112
}
111
113
}
112
114
});
@@ -157,12 +159,14 @@ private function getMediaFormItems($medias)
157
159
$ item = $ mediasById ->first ();
158
160
159
161
$ itemForForm = $ item ->toCmsArray ();
162
+ $ itemForForm ['pivot_id ' ] = $ item ->pivot ->id ;
160
163
161
164
$ itemForForm ['metadatas ' ]['custom ' ] = json_decode ($ item ->pivot ->metadatas , true );
162
165
163
166
foreach ($ mediasById ->groupBy ('pivot.crop ' ) as $ crop => $ mediaByCrop ) {
164
167
$ media = $ mediaByCrop ->first ();
165
168
$ itemForForm ['crops ' ][$ crop ] = [
169
+ 'pivot_id ' => $ media ->pivot ->id ,
166
170
'name ' => $ media ->pivot ->ratio ,
167
171
'width ' => $ media ->pivot ->crop_w ,
168
172
'height ' => $ media ->pivot ->crop_h ,
0 commit comments