88 lines
3.7 KiB
PHP
88 lines
3.7 KiB
PHP
<?php
|
|
|
|
use App\Models\Media;
|
|
use Illuminate\Database\Migrations\Migration;
|
|
use Illuminate\Database\Schema\Blueprint;
|
|
use Illuminate\Support\Facades\Schema;
|
|
|
|
return new class extends Migration
|
|
{
|
|
/**
|
|
* Run the migrations.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function up()
|
|
{
|
|
// * Normalize values
|
|
Media::withTrashed()->get()->map(function (Media $media) {
|
|
$media->largeur = intval($media->largeur);
|
|
$media->hauteur = intval($media->hauteur);
|
|
$media->resolution = intval($media->resolution);
|
|
$media->largeur_mm = floatval($media->largeur_mm);
|
|
$media->hauteur_mm = floatval($media->hauteur_mm);
|
|
switch (true) {
|
|
case strpos(strval($media->getRawOriginal('taille')), 'octet') !== false:
|
|
$media->taille = intval(trim(
|
|
str_replace('octet', '', strval($media->getRawOriginal('taille')))
|
|
));
|
|
break;
|
|
case strpos(strval($media->getRawOriginal('taille')), 'Ko') !== false:
|
|
$media->taille = ceil(intval(trim(
|
|
str_replace('Ko', '', strval($media->getRawOriginal('taille')))
|
|
)) * 1024);
|
|
break;
|
|
case strpos(strval($media->getRawOriginal('taille')), 'Mo') !== false:
|
|
$media->taille = ceil(intval(trim(
|
|
str_replace('Mo', '', strval($media->getRawOriginal('taille')))
|
|
)) * 1024 * 1024);
|
|
break;
|
|
case strpos(strval($media->getRawOriginal('taille')), 'Go') !== false:
|
|
$media->taille = ceil(intval(trim(
|
|
str_replace('Go', '', strval($media->getRawOriginal('taille')))
|
|
)) * 1024 * 1024 * 1024);
|
|
break;
|
|
default:
|
|
if (
|
|
strlen(trim(strval($media->getRawOriginal('taille')))) and
|
|
!is_numeric(trim(strval($media->getRawOriginal('taille'))))
|
|
) {
|
|
throw new \RuntimeException('Failed to convert size');
|
|
}
|
|
} //end switch
|
|
$media->timestamps = false;
|
|
$media->saveQuietly();
|
|
});
|
|
|
|
Schema::table('media', function (Blueprint $table) {
|
|
$table->unsignedSmallInteger('largeur')->default(0)->comment('Largeur en pixels')->change();
|
|
$table->unsignedSmallInteger('hauteur')->default(0)->comment('Hauteur en pixels')->change();
|
|
$table->unsignedFloat('largeur_mm')->default(0)->comment('Largeur en mm')->change();
|
|
$table->unsignedFloat('hauteur_mm')->default(0)->comment('Hauteur en mm')->change();
|
|
$table->unsignedSmallInteger('resolution')->default(0)
|
|
->comment('Resolution en largeur uniquement')->change();
|
|
$table->unsignedInteger('taille')->default(0)
|
|
->comment('Taille du media en octets')->change();
|
|
$table->string('duree', 8)->nullable()
|
|
->comment('Durée du media uniquement pour vidéo et audio')->change();
|
|
});
|
|
}
|
|
|
|
/**
|
|
* Reverse the migrations.
|
|
*
|
|
* @return void
|
|
*/
|
|
public function down()
|
|
{
|
|
Schema::table('media', function (Blueprint $table) {
|
|
$table->string('largeur', 100)->change();
|
|
$table->string('hauteur', 100)->change();
|
|
$table->string('largeur_mm', 100)->change();
|
|
$table->string('hauteur_mm', 100)->change();
|
|
$table->string('resolution', 100)->change();
|
|
$table->string('taille', 100)->change();
|
|
$table->string('duree', 100)->change();
|
|
});
|
|
}
|
|
};
|