2
2
![ Logo] ( https://firebasestorage.googleapis.com/v0/b/beauty-jewel.appspot.com/o/github%2Fmedia%20logo.jpg?alt=media&token=a8be132e-94c5-4d31-8cd6-e17e57727dfb )
3
3
4
4
5
- # 🔥 Media Files Package
5
+ # Media Package
6
6
7
- A Package to save your files Many Disks , Many Diroctories By Same Model
7
+ A Package to save your files in one place can object has many or one media record.
8
8
9
9
10
10
11
- ## ❤️ Authors
11
+ ## Authors
12
12
13
- - [ Waad Mawlood] ( https://www.github.com/waadmawlood )
13
+ - [ @ Waad Mawlood] ( https://www.github.com/waadmawlood )
14
14
15
15
16
16
17
- ## ⚠️ Mini Requirement
17
+ ## Mini Requirement
18
18
19
- #### * version >= 2.0.0
20
- - PHP >= 8.0.0
21
- - Laravel 8 , 9 , 10
19
+ - PHP 7.4
20
+ - laravel 5.5
21
+ - illuminate/support 5.6
22
22
23
23
24
-   ;
25
-
26
- #### * version < 2.0.0
27
- - PHP 7.4
28
- - Laravel 7 , 8
29
-
30
-
31
- ## 💯 Installation
24
+ ## Installation
32
25
33
26
To install
34
27
35
28
``` sh
36
29
composer require waad/media
37
30
```
38
31
39
- You can publish the ` migration ` and ` config ` with:
32
+ You can publish the migration and config with:
40
33
41
34
``` sh
42
35
php artisan vendor:publish --provider=" Waad\Media\MediaServiceProvider"
@@ -52,77 +45,51 @@ configration from `config/media.php`
52
45
php artisan migrate
53
46
```
54
47
55
- #### You can make a link shortcut by disk from ` config.media.shortcut ` array of disks
48
+ #### You can make a link shortcut
56
49
57
50
``` sh
58
51
php artisan media:link
59
52
```
60
- ## 🧰 Usage / Example
53
+ ## Usage / Example
61
54
62
- In ** Model**
55
+ In Model
63
56
``` js
64
- < ? php
65
-
66
57
namespace App\Models;
67
58
59
+
68
60
use Waad\Media\Traits\HasOneMedia;
69
- // or
61
+ or
70
62
use Waad\Media\Traits\HasManyMedia;
71
63
72
64
class Post extends Model
73
65
{
74
- use HasOneMedia; << ------ return one last record of media
75
- // or
76
- use HasManyMedia; << ------ return list of media
77
-
66
+
67
+ use HasManyMedia;
78
68
79
- // $media_disk
80
- // $media_directory
81
- // if not define will get default `disk,directory` in `config/media.php`
82
- public $media_disk = ' public' ;
83
- public $media_directory = ' posts/images' ;
84
69
......
85
70
` ` `
86
71
87
-
88
72
89
73
You Can get media
90
74
91
75
` ` ` js
92
76
$post- > media;
93
77
` ` `
94
-
95
78
96
- - ** ` Upload Files ` ** eg. Use in controller ` store` method to add One or Many Files
79
+ use in controller ` store` function to add One or Many images
97
80
` ` ` js
98
81
$post = Post:: create ([
99
82
......... ..
100
83
]);
101
84
102
85
$files = $request- > file (' image' ); // one image
103
86
$files = $request- > file (' images' ); // many images
87
+ $basename = $post- > addMedia ($files); // return array of file names
104
88
105
- // version < 2
106
- // will return array of file names
107
- $media = $post- > addMedia ($files);
108
- $media = $post- > addMedia ($files, $index = 1 , $label = ' cover' );
109
-
110
-
111
- // ***************************************************
112
-
113
-
114
- // version >= 2
115
- // will return Media model or array of Media model by on Relationship
116
- $media = $post- > addMedia ($files)- > upload ();
117
- $media = $post- > addMedia ($files)- > label (' cover' )- > index (3 )- > upload ();
118
- $media = $post- > addMedia ($files)- > disk (' public' )- > directory (' posts/video' )- > label (' cover' )- > index (3 )- > upload ();
119
-
120
-
121
- return $media;
89
+ return $basename;
122
90
` ` `
123
-
124
91
125
- - ** ` Sync Files ` ** eg. Use in controller ` update` method to add One or Many Files
92
+ use in controller ` update` function to add One or Many images
126
93
` ` ` js
127
94
$post = Post:: find (1 );
128
95
$post- > update ([
@@ -131,155 +98,50 @@ $post->update([
131
98
132
99
$files = $request- > file (' image' ); // one image
133
100
$files = $request- > file (' images' ); // many images
101
+ $basename = $post- > syncMedia ($files); // return array of file names
134
102
135
- // version < 2
136
- // will return array of file names
137
- $media = $post- > syncMedia ($files);
138
- $media = $post- > syncMedia ($files, $index = 2 );
139
-
140
-
141
- // ***************************************************
142
-
143
-
144
- // version >= 2
145
- // will return Media model or array of Media model by on Relationship
146
- $media = $post- > syncMedia ($files)- > sync ();
147
- $media = $post- > syncMedia ($files, $ids = [1 ,3 ])- > sync (); // delete only these $ids and upload new files
148
- $media = $post- > syncMedia ($files)- > label (' cover' )- > index (3 )- > sync ();
149
- $media = $post- > syncMedia ($files)- > disk (' public' )- > directory (' posts/video' )- > label (' cover' )- > index (3 )- > sync ();
150
-
151
- return $media;
103
+ return $basename;
152
104
` ` `
153
105
154
- - ** ` Delete Files ` ** eg. Use in controller ` destroy` method to delete all or specific ids
106
+ use in controller ` destroy` function to add One or Many images
155
107
` ` ` js
156
108
157
109
$post = Post:: find (1 );
158
110
159
- // version < 2
160
- // will return array of file names
161
- $media = $post- > deleteMedia ($files);
162
- $media = $post- > deleteMedia ($files, $index = 2 );
163
-
164
-
165
- // ***************************************************
166
-
167
-
168
- // version >= 2
169
- // will return bool or array of bool or null by on Relationship
170
- $media = $post- > deleteMedia ()- > delete ();
171
- $media = $post- > deleteMedia ($medias_model)- > delete ();
172
- $media = $post- > deleteMedia ([1 ,3 ])- > delete (); // delete only these ids
111
+ $post- > deleteMedia (); // delete all media from this object
173
112
174
- $lastMedia = $post- > media- > last (); // return Collection Media Model
175
- $media = $post- > deleteMedia ($lastMedia)- > delete (); // delete only this media
176
-
177
- $media2 = $post- > mediaById (8 );
178
- $media = $post- > deleteMedia ($media2)- > delete ();
179
-
180
- $mediaList = $post- > mediaByMimeType (' image/png' );
181
- $media = $post- > deleteMedia ($mediaList)- > delete ();
113
+ $ids = [1 ,3 ];
114
+ $post- > deleteMedia ($ids); // delete specific media by id from object
182
115
183
116
$post- > delete ();
184
117
` ` `
185
118
186
-
187
-
188
- - Other Helper **` Only version >= 2 ` **
189
- ` ` ` js
190
- // get sum files size of post object (bytes)
191
- $post- > mediaTotalSize ();
192
-
193
- // **********************************************
194
-
195
- // get count media of post object
196
- $post- > mediaTotalCount ();
197
-
198
- // get count media with soft delete of post object
199
- $post- > mediaTotalCount ($withTrashed = true );
200
-
201
- // **********************************************
202
-
203
- // get media by id of post object
204
- $post- > mediaById (17 );
205
-
206
- // get media with soft delete by id of post object
207
- $post- > mediaById (17 , $withTrashed = true );
208
-
209
- // **********************************************
210
-
211
- // get media by mime_type of post object
212
- $post- > mediaByMimeType (' image/png' );
213
-
214
- // get media with soft delete by mime_type of post object
215
- $post- > mediaByMimeType (' image/png' , $withTrashed = true );
216
-
217
- // **********************************************
218
-
219
- // get media by approved boolean of post object
220
- $post- > mediaApproved (); // default true
221
- $post- > mediaApproved (false );
222
-
223
- // get media with soft delete by approved boolean of post object
224
- $post- > mediaApproved (false , $withTrashed = true );
225
-
226
- ` ` `
227
-
228
-
119
+ ---
229
120
230
- - You can update ` approved` all media of object
121
+ You can update approved all media of object
231
122
` ` ` js
232
123
$post- > media- > approve (); // put approved = true
233
124
234
125
$post- > media- > disApprove (); // put approved = false
235
126
` ` `
236
127
237
-
238
128
239
- - You can get the ` user` to upload that media
129
+ You can get the user to upload that media
240
130
` ` ` js
241
- // if was HasOneMedia
242
- 1 - optional ($post- > media)- > user;
243
- 2 - Post:: with (' media.user' )- > find (1 );
244
-
245
- // **********************************************
246
-
247
- // if was HasManyMedia
248
- 1 - Post:: with (' media.user' )- > get ();
249
- 2 - $post- > media- > load (' user' );
131
+ $post- > media- > user;
132
+ or
133
+ Post:: with (' media.user' )- > find (1 );
134
+ Post:: with (' media.user' )- > get ();
250
135
` ` `
251
136
252
- ### 🎀 Scope
137
+ ### Scope
253
138
254
139
You can get only approved equal true
255
140
256
141
` ` ` js
257
142
$post- > media- > approved (); // approved = true
258
143
` ` `
259
144
260
- ## 🍔 Permanently delete files
261
-
262
- Determine ` delete_file_after_day` from ` config/ media .php ` must be integer
263
-
264
- ⭕️ Add Command to crontab of project to implemented automatically
265
-
266
- in ` app/ Console / Kernel .php ` add this:
267
-
268
- ` ` ` js
269
- protected function schedule (Schedule $schedule )
270
- {
271
- // .....................
272
-
273
- $schedule- > command (' media:prune' )- > daily ();
274
- }
275
- ` ` `
276
-
277
- ⭕️ implemented manually
278
-
279
- ` ` ` sh
280
- php artisan media: prune
281
- ` ` `
282
-
283
- ## 🎯 License
145
+ ## License
284
146
285
147
[](https://choosealicense.com/licenses/mit/)
0 commit comments