diff --git a/database/migrations/2019_08_15_171345_create_files_table.php b/database/migrations/2019_08_15_171345_create_files_table.php
index ce610b0b..93f78bbe 100644
--- a/database/migrations/2019_08_15_171345_create_files_table.php
+++ b/database/migrations/2019_08_15_171345_create_files_table.php
@@ -25,7 +25,6 @@ class CreateFilesTable extends Migration
$table->text('filesize');
$table->text('type')->nullable();
- $table->longText('metadata')->nullable();
$table->enum('author', ['user', 'member', 'visitor'])->default('user');
diff --git a/database/migrations/2020_05_26_092649_create_user_settings_table.php b/database/migrations/2020_05_26_092649_create_user_settings_table.php
index d35f3538..38fa4dcf 100644
--- a/database/migrations/2020_05_26_092649_create_user_settings_table.php
+++ b/database/migrations/2020_05_26_092649_create_user_settings_table.php
@@ -27,8 +27,8 @@ class CreateUserSettingsTable extends Migration
$table->text('country')->nullable();
$table->text('phone_number')->nullable();
$table->decimal('timezone', 10, 1)->nullable();
- $table->text('emoji_type')->default('twemoji');
- $table->text('theme_mode')->default('system');
+ $table->text('emoji_type');
+ $table->text('theme_mode');
$table->charset = 'utf8mb4';
$table->collation = 'utf8mb4_unicode_ci';
});
diff --git a/database/migrations/2022_01_25_152729_create_exifs_table.php b/database/migrations/2022_01_25_152729_create_exifs_table.php
new file mode 100644
index 00000000..6e35f3d5
--- /dev/null
+++ b/database/migrations/2022_01_25_152729_create_exifs_table.php
@@ -0,0 +1,54 @@
+uuid('id')->primary()->index();
+ $table->uuid('file_id')->index();
+
+ $table->timestamp('date_time_original')->nullable();
+ $table->string('artist')->nullable();
+ $table->integer('height')->nullable();
+ $table->integer('width')->nullable();
+ $table->string('x_resolution')->nullable();
+ $table->string('y_resolution')->nullable();
+ $table->integer('color_space')->nullable();
+ $table->string('camera')->nullable();
+ $table->string('model')->nullable();
+ $table->string('aperture_value')->nullable();
+ $table->string('exposure_time')->nullable();
+ $table->string('focal_length')->nullable();
+ $table->integer('iso')->nullable();
+ $table->string('aperture_f_number')->nullable();
+ $table->string('ccd_width')->nullable();
+ $table->string('longitude')->nullable();
+ $table->string('latitude')->nullable();
+ $table->string('longitude_ref')->nullable();
+ $table->string('latitude_ref')->nullable();
+
+ $table->charset = 'utf8mb4';
+ $table->collation = 'utf8mb4_unicode_ci';
+ });
+ }
+
+ /**
+ * Reverse the migrations.
+ *
+ * @return void
+ */
+ public function down()
+ {
+ Schema::dropIfExists('exifs');
+ }
+}
diff --git a/public/mix-manifest.json b/public/mix-manifest.json
index a87a40bc..92b3f9df 100644
--- a/public/mix-manifest.json
+++ b/public/mix-manifest.json
@@ -2,172 +2,113 @@
"/js/main.js": "/js/main.js",
"/css/app.css": "/css/app.css",
"/css/tailwind.css": "/css/tailwind.css",
- "/chunks/admin.js": "/chunks/admin.js?id=7cca3ef45f980d0e8a03",
- "/chunks/admin-account.js": "/chunks/admin-account.js?id=6e28465565ea92af804f",
- "/chunks/admin-account~chunks/app-appearance~chunks/app-email~chunks/app-index~chunks/app-others~chunk~9f5cf693.js": "/chunks/admin-account~chunks/app-appearance~chunks/app-email~chunks/app-index~chunks/app-others~chunk~9f5cf693.js?id=b315e8dcb5e79c1c8e7c",
- "/chunks/admin-account~chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/datab~a2d1c36e.js": "/chunks/admin-account~chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/datab~a2d1c36e.js?id=bbdda6115aa358c2209e",
- "/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-email~chunks/app-index~chunks/app~f4e3acb1.js": "/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-email~chunks/app-index~chunks/app~f4e3acb1.js?id=08ee54ab4c19d49dc342",
- "/chunks/admin~chunks/app-language~chunks/files~chunks/my-shared-items~chunks/pages~chunks/plans~chunk~31d2e0e5.js": "/chunks/admin~chunks/app-language~chunks/files~chunks/my-shared-items~chunks/pages~chunks/plans~chunk~31d2e0e5.js?id=45350439fb9bcb879f5b",
- "/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.js": "/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.js?id=0ae7b3d840e0e20fe358",
- "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~673d1ac3.js": "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~673d1ac3.js?id=34845d890e9e65d2adc0",
- "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~97130d1f.js": "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~97130d1f.js?id=195797158a27ef294ad5",
- "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/shared~1bec6fe4.js": "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/shared~1bec6fe4.js?id=3d3f164e568760d8a9cf",
- "/chunks/admin~chunks/platform.js": "/chunks/admin~chunks/platform.js?id=3f11fe45f7b999d1e375",
- "/chunks/admin~chunks/platform~chunks/settings.js": "/chunks/admin~chunks/platform~chunks/settings.js?id=d0f80fceb2f27a39b283",
- "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.js": "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.js?id=845ba11d36e357420492",
- "/chunks/admin~chunks/platform~chunks/shared.js": "/chunks/admin~chunks/platform~chunks/shared.js?id=e40dcf843c95a51cd397",
- "/chunks/app-appearance.js": "/chunks/app-appearance.js?id=1d5319a48a28f62bb131",
- "/chunks/app-appearance~chunks/app-email~chunks/app-index~chunks/app-others~chunks/payments/billings~c~dd421a96.js": "/chunks/app-appearance~chunks/app-email~chunks/app-index~chunks/app-others~chunks/payments/billings~c~dd421a96.js?id=91eea8e08d675f1a84d2",
- "/chunks/app-email.js": "/chunks/app-email.js?id=3b8d81b3f01fd4d10e0c",
- "/chunks/app-index.js": "/chunks/app-index.js?id=fb1f81d6571b2dd12e3c",
- "/chunks/app-language.js": "/chunks/app-language.js?id=605b221358837d98402f",
- "/chunks/app-language~chunks/page-edit~chunks/pages~chunks/plan-create/fixed~chunks/plan-create/metere~daa2a968.js": "/chunks/app-language~chunks/page-edit~chunks/pages~chunks/plan-create/fixed~chunks/plan-create/metere~daa2a968.js?id=ef8cbb733f7e82636b51",
- "/chunks/app-others.js": "/chunks/app-others.js?id=ed899e0c8ae8aa1c7741",
- "/chunks/app-others~chunks/payments/settings.js": "/chunks/app-others~chunks/payments/settings.js?id=a9748a3aa53098b75df6",
- "/chunks/app-settings.js": "/chunks/app-settings.js?id=62ce73b2d66590912cbc",
- "/chunks/app-setup.js": "/chunks/app-setup.js?id=eccbfcc8ca52a7739539",
- "/chunks/billing.js": "/chunks/billing.js?id=f35adaf4630e2cf78891",
- "/chunks/billings-detail.js": "/chunks/billings-detail.js?id=8d98791de2ec92174b6e",
- "/chunks/billing~chunks/dashboard~chunks/invoices~chunks/pages~chunks/payments/settings~chunks/plan-su~cdf8788b.js": "/chunks/billing~chunks/dashboard~chunks/invoices~chunks/pages~chunks/payments/settings~chunks/plan-su~cdf8788b.js?id=4714188c1549bd8829ab",
- "/chunks/billing~chunks/settings-storage~chunks/user-storage~chunks/user-subscription.js": "/chunks/billing~chunks/settings-storage~chunks/user-storage~chunks/user-subscription.js?id=669bd6d15cfa4c6e75df",
- "/chunks/contact-us.js": "/chunks/contact-us.js?id=b4409faf276c7a152cd4",
- "/chunks/contact-us~chunks/dynamic-page~chunks/homepage.js": "/chunks/contact-us~chunks/dynamic-page~chunks/homepage.js?id=65ee559ca803555be568",
- "/chunks/create-new-password.js": "/chunks/create-new-password.js?id=ff5ae86590a117661ac1",
- "/chunks/dashboard.js": "/chunks/dashboard.js?id=1e46584a4f5562b7a8b5",
- "/chunks/dashboard~chunks/plan-subscribers~chunks/users.js": "/chunks/dashboard~chunks/plan-subscribers~chunks/users.js?id=9bb04319263a6c0742f0",
- "/chunks/database.js": "/chunks/database.js?id=38021b64e8ab2d213c19",
- "/chunks/dynamic-page.js": "/chunks/dynamic-page.js?id=6c86916c6c6f679fa86b",
- "/chunks/email-verified.js": "/chunks/email-verified.js?id=fcba9acf60a855b730d5",
- "/chunks/environment-setup.js": "/chunks/environment-setup.js?id=cb6691f996a6ea765b4d",
- "/chunks/files.js": "/chunks/files.js?id=692eff6c814b00ac7d97",
- "/chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/shared~chunks/share~c7960950.js": "/chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/shared~chunks/share~c7960950.js?id=f41b30739fcbba3ae537",
- "/chunks/files~chunks/my-shared-items~chunks/recent-uploads~chunks/shared-with-me~chunks/shared/files~~34b5eb22.js": "/chunks/files~chunks/my-shared-items~chunks/recent-uploads~chunks/shared-with-me~chunks/shared/files~~34b5eb22.js?id=94ead73a2f7abcbc3214",
- "/chunks/files~chunks/my-shared-items~chunks/recent-uploads~chunks/shared-with-me~chunks/shared/files~~bf3ddedc.js": "/chunks/files~chunks/my-shared-items~chunks/recent-uploads~chunks/shared-with-me~chunks/shared/files~~bf3ddedc.js?id=6489d55d6d88986008c9",
- "/chunks/files~chunks/platform~chunks/shared~chunks/shared-with-me~chunks/shared/files~chunks/team-folders.js": "/chunks/files~chunks/platform~chunks/shared~chunks/shared-with-me~chunks/shared/files~chunks/team-folders.js?id=6e49d14fe5f9065503fb",
- "/chunks/forgotten-password.js": "/chunks/forgotten-password.js?id=7fe909d93242299552ec",
- "/chunks/homepage.js": "/chunks/homepage.js?id=6a14173a7751010222ed",
- "/chunks/installation-disclaimer.js": "/chunks/installation-disclaimer.js?id=103caafd51390f5c7896",
- "/chunks/invitation.js": "/chunks/invitation.js?id=ce0aa06dd9c62f505b9b",
- "/chunks/invoices.js": "/chunks/invoices.js?id=2e6f38d77e5dfd6cd38b",
- "/chunks/my-shared-items.js": "/chunks/my-shared-items.js?id=ef0a2dbe808eaee42c1f",
- "/chunks/not-found.js": "/chunks/not-found.js?id=bd6cc309172531900b13",
- "/chunks/page-edit.js": "/chunks/page-edit.js?id=1ce1c4f40fbb672c6c3e",
- "/chunks/pages.js": "/chunks/pages.js?id=188434ad0acb6921abdd",
- "/chunks/payments.js": "/chunks/payments.js?id=56a633689fc98ab71b92",
- "/chunks/payments/billings.js": "/chunks/payments/billings.js?id=21c286ff2723603036ea",
- "/chunks/payments/settings.js": "/chunks/payments/settings.js?id=2ae059b694da0f255e47",
- "/chunks/plan.js": "/chunks/plan.js?id=fc9e9e0b9bac63514475",
- "/chunks/plan-create/fixed.js": "/chunks/plan-create/fixed.js?id=75b6e639a1fb66d34f10",
- "/chunks/plan-create/metered.js": "/chunks/plan-create/metered.js?id=22a5c4fb60a77b72cd4e",
- "/chunks/plan-delete.js": "/chunks/plan-delete.js?id=8289ae01c7e56404239b",
- "/chunks/plan-settings.js": "/chunks/plan-settings.js?id=7f623c8a4002f17eecef",
- "/chunks/plan-subscribers.js": "/chunks/plan-subscribers.js?id=24e47be06cbf2fedbf05",
- "/chunks/plans.js": "/chunks/plans.js?id=20dc794bb02887a46f04",
- "/chunks/platform.js": "/chunks/platform.js?id=c571ce8c6e3dcdc87c31",
- "/chunks/platform~chunks/shared.js": "/chunks/platform~chunks/shared.js?id=be5c13376dec07e289ff",
- "/chunks/platform~chunks/shared~chunks/shared-with-me~chunks/team-folders.js": "/chunks/platform~chunks/shared~chunks/shared-with-me~chunks/team-folders.js?id=66e964be4ab127b1f723",
- "/chunks/profile.js": "/chunks/profile.js?id=0ecdd636c92f2f1172d2",
- "/chunks/purchase-code.js": "/chunks/purchase-code.js?id=d9af0efad2af2679954b",
- "/chunks/recent-uploads.js": "/chunks/recent-uploads.js?id=8577d4c771602671b38a",
- "/chunks/settings.js": "/chunks/settings.js?id=e24df949c306186e108e",
- "/chunks/settings-password.js": "/chunks/settings-password.js?id=1aeaaad4a4c6b719d31e",
- "/chunks/settings-storage.js": "/chunks/settings-storage.js?id=d1504f06d93b88572249",
- "/chunks/settings~chunks/settings-password.js": "/chunks/settings~chunks/settings-password.js?id=aafc9cd6aa47b01bc25a",
- "/chunks/setup-wizard.js": "/chunks/setup-wizard.js?id=651d5accf401908724c5",
- "/chunks/shared.js": "/chunks/shared.js?id=a140c15b483547b020e9",
- "/chunks/shared-with-me.js": "/chunks/shared-with-me.js?id=e38098eca4e38683a83b",
- "/chunks/shared-with-me~chunks/team-folders.js": "/chunks/shared-with-me~chunks/team-folders.js?id=abf65131397ea2b12355",
- "/chunks/shared/authenticate.js": "/chunks/shared/authenticate.js?id=09f54f209289c79ccc33",
- "/chunks/shared/files.js": "/chunks/shared/files.js?id=84377b3190940b5196f6",
- "/chunks/shared/single-file.js": "/chunks/shared/single-file.js?id=1abb5dd58d0ed626cd6e",
- "/chunks/sign-in.js": "/chunks/sign-in.js?id=e716349738364703249e",
- "/chunks/sign-up.js": "/chunks/sign-up.js?id=fad3661258b19f8fafbb",
- "/chunks/status-check.js": "/chunks/status-check.js?id=6e73b0735b7d7c45f712",
- "/chunks/stripe-credentials.js": "/chunks/stripe-credentials.js?id=a91cba41a099c8ecad24",
- "/chunks/subscription-plans.js": "/chunks/subscription-plans.js?id=5238c711e2b9af197b22",
- "/chunks/subscription-service.js": "/chunks/subscription-service.js?id=3fffee3b8bab3e23ba18",
- "/chunks/subscriptions.js": "/chunks/subscriptions.js?id=35bad12ad938c334ce10",
- "/chunks/team-folders.js": "/chunks/team-folders.js?id=d0b1bb2f9e63fa36dd50",
- "/chunks/temporary-unavailable.js": "/chunks/temporary-unavailable.js?id=145f1b0766214eee1aad",
- "/chunks/trash.js": "/chunks/trash.js?id=1f5f349fb9ec23ba2e93",
- "/chunks/user.js": "/chunks/user.js?id=d47acfdc8985d8823872",
- "/chunks/user-create.js": "/chunks/user-create.js?id=ec5e0749e0fc93be4664",
- "/chunks/user-delete.js": "/chunks/user-delete.js?id=d748d3ec3e036c247583",
- "/chunks/user-detail.js": "/chunks/user-detail.js?id=1639da11ff1a649d6dbf",
- "/chunks/user-password.js": "/chunks/user-password.js?id=979fd45e82e25a8445b4",
- "/chunks/user-storage.js": "/chunks/user-storage.js?id=e6ccfc8aa085e00af593",
- "/chunks/user-subscription.js": "/chunks/user-subscription.js?id=ab860189f1c734dc042c",
- "/chunks/users.js": "/chunks/users.js?id=cafd1ff7bc92dfe45f69",
+ "/chunks/admin.js": "/chunks/admin.js?id=f402d7f3da8459515bc4",
+ "/chunks/admin-account.js": "/chunks/admin-account.js?id=195a8983e558e1612b3a",
+ "/chunks/admin-account~chunks/app-appearance~chunks/app-email~chunks/app-index~chunks/app-others~chunk~9f5cf693.js": "/chunks/admin-account~chunks/app-appearance~chunks/app-email~chunks/app-index~chunks/app-others~chunk~9f5cf693.js?id=3fe1881b0b08b773acd1",
+ "/chunks/admin-account~chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/datab~a2d1c36e.js": "/chunks/admin-account~chunks/app-setup~chunks/billings-detail~chunks/create-new-password~chunks/datab~a2d1c36e.js?id=363a519bdd61deb55f48",
+ "/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-email~chunks/app-index~chunks/app~f4e3acb1.js": "/chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-email~chunks/app-index~chunks/app~f4e3acb1.js?id=2e6a154eecbbb6b5bc35",
+ "/chunks/admin~chunks/app-language~chunks/files~chunks/my-shared-items~chunks/pages~chunks/plans~chunk~31d2e0e5.js": "/chunks/admin~chunks/app-language~chunks/files~chunks/my-shared-items~chunks/pages~chunks/plans~chunk~31d2e0e5.js?id=1fa44105c96d57f7aa7c",
+ "/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.js": "/chunks/admin~chunks/files~chunks/invitation~chunks/my-shared-items~chunks/platform~chunks/recent-upl~dfa67595.js?id=303c87bfefb5f03141d8",
+ "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~673d1ac3.js": "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~673d1ac3.js?id=bbd5d35ea9bf47fed1c7",
+ "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~97130d1f.js": "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/settin~97130d1f.js?id=e39cf325833e87e416ed",
+ "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/shared~1bec6fe4.js": "/chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/shared~1bec6fe4.js?id=9e375c8fcaec14b10a00",
+ "/chunks/admin~chunks/platform.js": "/chunks/admin~chunks/platform.js?id=3b2fed1501fc820649fc",
+ "/chunks/admin~chunks/platform~chunks/settings.js": "/chunks/admin~chunks/platform~chunks/settings.js?id=3bfa406354af87101728",
+ "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.js": "/chunks/admin~chunks/platform~chunks/settings~chunks/shared.js?id=a26505370c645bd9db7c",
+ "/chunks/admin~chunks/platform~chunks/shared.js": "/chunks/admin~chunks/platform~chunks/shared.js?id=d5b15d31f284a79bddc9",
+ "/chunks/app-appearance.js": "/chunks/app-appearance.js?id=cbf768725addfa84fd27",
+ "/chunks/app-appearance~chunks/app-email~chunks/app-index~chunks/app-others~chunks/payments/billings~c~dd421a96.js": "/chunks/app-appearance~chunks/app-email~chunks/app-index~chunks/app-others~chunks/payments/billings~c~dd421a96.js?id=72906c610ee341a0d055",
+ "/chunks/app-email.js": "/chunks/app-email.js?id=5b203b214fc6c5f620ce",
+ "/chunks/app-index.js": "/chunks/app-index.js?id=8b5d623094ae55c2ae02",
+ "/chunks/app-language.js": "/chunks/app-language.js?id=bb0dc312d7f38ec6b943",
+ "/chunks/app-language~chunks/page-edit~chunks/pages~chunks/plan-create/fixed~chunks/plan-create/metere~daa2a968.js": "/chunks/app-language~chunks/page-edit~chunks/pages~chunks/plan-create/fixed~chunks/plan-create/metere~daa2a968.js?id=4ca66687104a5aa85c03",
+ "/chunks/app-others.js": "/chunks/app-others.js?id=db3bd4e0601a06fb2ef8",
+ "/chunks/app-others~chunks/payments/settings.js": "/chunks/app-others~chunks/payments/settings.js?id=123943b20249e0c4346c",
+ "/chunks/app-settings.js": "/chunks/app-settings.js?id=5a9d4a1966fb819f0948",
+ "/chunks/app-setup.js": "/chunks/app-setup.js?id=4f0526b564e9cc875d70",
+ "/chunks/billing.js": "/chunks/billing.js?id=5e33b7fd9585a844b324",
+ "/chunks/billings-detail.js": "/chunks/billings-detail.js?id=399166fa105ac176eb83",
+ "/chunks/billing~chunks/dashboard~chunks/invoices~chunks/pages~chunks/payments/settings~chunks/plan-su~cdf8788b.js": "/chunks/billing~chunks/dashboard~chunks/invoices~chunks/pages~chunks/payments/settings~chunks/plan-su~cdf8788b.js?id=b66a4e0a0d4ad67ea563",
+ "/chunks/billing~chunks/settings-storage~chunks/user-storage~chunks/user-subscription.js": "/chunks/billing~chunks/settings-storage~chunks/user-storage~chunks/user-subscription.js?id=2d94000fb9899898ed37",
+ "/chunks/contact-us.js": "/chunks/contact-us.js?id=2ce4da753c4ecfa31bf2",
+ "/chunks/contact-us~chunks/dynamic-page~chunks/homepage.js": "/chunks/contact-us~chunks/dynamic-page~chunks/homepage.js?id=4747de0a6153cd8fd6d5",
+ "/chunks/create-new-password.js": "/chunks/create-new-password.js?id=ad9d961a4b9013b5da8a",
+ "/chunks/dashboard.js": "/chunks/dashboard.js?id=0c8a4ec6d09109d047ba",
+ "/chunks/dashboard~chunks/plan-subscribers~chunks/users.js": "/chunks/dashboard~chunks/plan-subscribers~chunks/users.js?id=411ffe0c8df49f6ffe02",
+ "/chunks/database.js": "/chunks/database.js?id=c860335b4bf309560f19",
+ "/chunks/dynamic-page.js": "/chunks/dynamic-page.js?id=6ce67f774b65b500721d",
+ "/chunks/email-verified.js": "/chunks/email-verified.js?id=2150cb12e5814889c403",
+ "/chunks/environment-setup.js": "/chunks/environment-setup.js?id=46771d574714e60adeee",
+ "/chunks/files.js": "/chunks/files.js?id=a769f65d00b437dca2b0",
+ "/chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/shared~chunks/share~c7960950.js": "/chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunks/shared~chunks/share~c7960950.js?id=0b4ffd66aa6a0e651137",
+ "/chunks/files~chunks/my-shared-items~chunks/recent-uploads~chunks/shared-with-me~chunks/shared/files~~34b5eb22.js": "/chunks/files~chunks/my-shared-items~chunks/recent-uploads~chunks/shared-with-me~chunks/shared/files~~34b5eb22.js?id=82400440f0711d1b1bcd",
+ "/chunks/files~chunks/my-shared-items~chunks/recent-uploads~chunks/shared-with-me~chunks/shared/files~~bf3ddedc.js": "/chunks/files~chunks/my-shared-items~chunks/recent-uploads~chunks/shared-with-me~chunks/shared/files~~bf3ddedc.js?id=1cf9edf5755b54dc18e1",
+ "/chunks/files~chunks/platform~chunks/shared~chunks/shared-with-me~chunks/shared/files~chunks/team-folders.js": "/chunks/files~chunks/platform~chunks/shared~chunks/shared-with-me~chunks/shared/files~chunks/team-folders.js?id=40eae420d1f8b5b1e885",
+ "/chunks/forgotten-password.js": "/chunks/forgotten-password.js?id=4df333fc9f392368d294",
+ "/chunks/homepage.js": "/chunks/homepage.js?id=257fc9777b770f40b1da",
+ "/chunks/installation-disclaimer.js": "/chunks/installation-disclaimer.js?id=4cf7ee6239d3f8c73ccd",
+ "/chunks/invitation.js": "/chunks/invitation.js?id=a6f3e9d30da1d4d78a31",
+ "/chunks/invoices.js": "/chunks/invoices.js?id=6bee15f9305e2031f240",
+ "/chunks/my-shared-items.js": "/chunks/my-shared-items.js?id=163e26fcb27b6b53f290",
+ "/chunks/not-found.js": "/chunks/not-found.js?id=7e3edd7e259e917223b6",
+ "/chunks/page-edit.js": "/chunks/page-edit.js?id=0c0558b2797262896c90",
+ "/chunks/pages.js": "/chunks/pages.js?id=84bf4feeb4d08bab9d86",
+ "/chunks/payments.js": "/chunks/payments.js?id=e98b388a9437b6c02534",
+ "/chunks/payments/billings.js": "/chunks/payments/billings.js?id=17ae17cca63104e07f13",
+ "/chunks/payments/settings.js": "/chunks/payments/settings.js?id=a5713497ccd6bbc35c7f",
+ "/chunks/plan.js": "/chunks/plan.js?id=6da7363ea270938af803",
+ "/chunks/plan-create/fixed.js": "/chunks/plan-create/fixed.js?id=41af62191493431d01b4",
+ "/chunks/plan-create/metered.js": "/chunks/plan-create/metered.js?id=2bae0c8763d5afea4b4e",
+ "/chunks/plan-delete.js": "/chunks/plan-delete.js?id=3c1754cbb055b9721304",
+ "/chunks/plan-settings.js": "/chunks/plan-settings.js?id=0958a54803dee3b05ec2",
+ "/chunks/plan-subscribers.js": "/chunks/plan-subscribers.js?id=ac7360e89c09b3357288",
+ "/chunks/plans.js": "/chunks/plans.js?id=014f3cf4501b851e116a",
+ "/chunks/platform.js": "/chunks/platform.js?id=1bf2c945fc6c35f60caa",
+ "/chunks/platform~chunks/shared.js": "/chunks/platform~chunks/shared.js?id=c591d64e7678aa789476",
+ "/chunks/platform~chunks/shared~chunks/shared-with-me~chunks/team-folders.js": "/chunks/platform~chunks/shared~chunks/shared-with-me~chunks/team-folders.js?id=a1049626cd9960bb3053",
+ "/chunks/profile.js": "/chunks/profile.js?id=a4a4367ee503e9f27b8a",
+ "/chunks/purchase-code.js": "/chunks/purchase-code.js?id=bc09d0416b6888d92b50",
+ "/chunks/recent-uploads.js": "/chunks/recent-uploads.js?id=abc7d016ba8b676327b2",
+ "/chunks/settings.js": "/chunks/settings.js?id=49e9cb2d2d5d7272d20e",
+ "/chunks/settings-password.js": "/chunks/settings-password.js?id=dd17676d321b00d101c6",
+ "/chunks/settings-storage.js": "/chunks/settings-storage.js?id=bc7de99dc8e0b0c1157e",
+ "/chunks/settings~chunks/settings-password.js": "/chunks/settings~chunks/settings-password.js?id=2bad11bb511160fbb1dd",
+ "/chunks/setup-wizard.js": "/chunks/setup-wizard.js?id=8e52cc8d41e535d2f467",
+ "/chunks/shared.js": "/chunks/shared.js?id=9c5edf6b014a57a4241c",
+ "/chunks/shared-with-me.js": "/chunks/shared-with-me.js?id=3d709eca42cd73a0474a",
+ "/chunks/shared-with-me~chunks/team-folders.js": "/chunks/shared-with-me~chunks/team-folders.js?id=8256c585f8adc7f51773",
+ "/chunks/shared/authenticate.js": "/chunks/shared/authenticate.js?id=4c4455872ee87b07b3b1",
+ "/chunks/shared/files.js": "/chunks/shared/files.js?id=5f5aa3c043a2033c92ea",
+ "/chunks/shared/single-file.js": "/chunks/shared/single-file.js?id=21b781acdbe2875fbd88",
+ "/chunks/sign-in.js": "/chunks/sign-in.js?id=8b0ab0994b3328ea00a4",
+ "/chunks/sign-up.js": "/chunks/sign-up.js?id=bd3671893a4b1a81e6f9",
+ "/chunks/status-check.js": "/chunks/status-check.js?id=857b2daf6c5e04d7fd01",
+ "/chunks/stripe-credentials.js": "/chunks/stripe-credentials.js?id=bd1461afd27672ef6906",
+ "/chunks/subscription-plans.js": "/chunks/subscription-plans.js?id=d414d8b45792f592d33e",
+ "/chunks/subscription-service.js": "/chunks/subscription-service.js?id=debaafa74d8526ef978b",
+ "/chunks/subscriptions.js": "/chunks/subscriptions.js?id=7a42e7023e524fd5338d",
+ "/chunks/team-folders.js": "/chunks/team-folders.js?id=66c18c9fd3a988bf0e49",
+ "/chunks/temporary-unavailable.js": "/chunks/temporary-unavailable.js?id=e6c60b0bbe93607b0b58",
+ "/chunks/trash.js": "/chunks/trash.js?id=9b7a6c372c50e2633536",
+ "/chunks/user.js": "/chunks/user.js?id=0d836c4dd2a4c9cc2c6c",
+ "/chunks/user-create.js": "/chunks/user-create.js?id=4c9957986afd7114e3c8",
+ "/chunks/user-delete.js": "/chunks/user-delete.js?id=dc77f53a78df19330b7c",
+ "/chunks/user-detail.js": "/chunks/user-detail.js?id=a1f3c8d869da0398fc57",
+ "/chunks/user-password.js": "/chunks/user-password.js?id=1de529e509a52123efbd",
+ "/chunks/user-storage.js": "/chunks/user-storage.js?id=db3c23f77b5ebef67ef4",
+ "/chunks/user-subscription.js": "/chunks/user-subscription.js?id=c309a6438193a39c240b",
+ "/chunks/users.js": "/chunks/users.js?id=5eb57fc2a86499c824d8",
"/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-email~chunks/app-index~ch~9be62a3c.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-email~chunks/app-index~ch~9be62a3c.js?id=f6dd33e4294d33d5e335",
"/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-email~chunks/app-index~ch~d86004d6.js": "/vendors~chunks/admin~chunks/admin-account~chunks/app-appearance~chunks/app-email~chunks/app-index~ch~d86004d6.js?id=b40f5f673ec2ab7de20b",
"/vendors~chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunk~40ccbae3.js": "/vendors~chunks/admin~chunks/files~chunks/my-shared-items~chunks/platform~chunks/recent-uploads~chunk~40ccbae3.js?id=ab29ab0a0c2d5a40b39d",
"/vendors~chunks/admin~chunks/platform~chunks/settings~chunks/shared.js": "/vendors~chunks/admin~chunks/platform~chunks/settings~chunks/shared.js?id=a0fa80db175709ba340a",
"/vendors~chunks/settings.js": "/vendors~chunks/settings.js?id=14f4e0c3881d22ad60af",
- "/chunks/billing.c9ad68778c4b99cb8b84.hot-update.js": "/chunks/billing.c9ad68778c4b99cb8b84.hot-update.js",
- "/chunks/dashboard~chunks/plan-subscribers~chunks/users.c9ad68778c4b99cb8b84.hot-update.js": "/chunks/dashboard~chunks/plan-subscribers~chunks/users.c9ad68778c4b99cb8b84.hot-update.js",
- "/chunks/invoices.c9ad68778c4b99cb8b84.hot-update.js": "/chunks/invoices.c9ad68778c4b99cb8b84.hot-update.js",
- "/chunks/pages.c9ad68778c4b99cb8b84.hot-update.js": "/chunks/pages.c9ad68778c4b99cb8b84.hot-update.js",
- "/chunks/plans.c9ad68778c4b99cb8b84.hot-update.js": "/chunks/plans.c9ad68778c4b99cb8b84.hot-update.js",
- "/chunks/settings.c9ad68778c4b99cb8b84.hot-update.js": "/chunks/settings.c9ad68778c4b99cb8b84.hot-update.js",
- "/chunks/subscriptions.c9ad68778c4b99cb8b84.hot-update.js": "/chunks/subscriptions.c9ad68778c4b99cb8b84.hot-update.js",
- "/chunks/user.c9ad68778c4b99cb8b84.hot-update.js": "/chunks/user.c9ad68778c4b99cb8b84.hot-update.js",
- "/chunks/user-subscription.c9ad68778c4b99cb8b84.hot-update.js": "/chunks/user-subscription.c9ad68778c4b99cb8b84.hot-update.js",
- "/chunks/platform~chunks/shared.578d256faad046db2506.hot-update.js": "/chunks/platform~chunks/shared.578d256faad046db2506.hot-update.js",
- "/chunks/files~chunks/platform~chunks/shared~chunks/shared-with-me~chunks/shared/files~chunks/team-folders.c8f44a037fa4a287995d.hot-update.js": "/chunks/files~chunks/platform~chunks/shared~chunks/shared-with-me~chunks/shared/files~chunks/team-folders.c8f44a037fa4a287995d.hot-update.js",
- "/js/main.d3f10d5bd164a2ac29f3.hot-update.js": "/js/main.d3f10d5bd164a2ac29f3.hot-update.js",
- "/js/main.92eb5a6c3e493a12a30e.hot-update.js": "/js/main.92eb5a6c3e493a12a30e.hot-update.js",
- "/js/main.a7ead845b6477829fd4f.hot-update.js": "/js/main.a7ead845b6477829fd4f.hot-update.js",
- "/js/main.efb804bdb14333e22d28.hot-update.js": "/js/main.efb804bdb14333e22d28.hot-update.js",
- "/js/main.77770ba868c4b3608fe1.hot-update.js": "/js/main.77770ba868c4b3608fe1.hot-update.js",
- "/js/main.6e6f1da160336d3eb6f6.hot-update.js": "/js/main.6e6f1da160336d3eb6f6.hot-update.js",
- "/js/main.70bbce9abf6056ef2a4e.hot-update.js": "/js/main.70bbce9abf6056ef2a4e.hot-update.js",
- "/js/main.8457a80ccd430aae41d3.hot-update.js": "/js/main.8457a80ccd430aae41d3.hot-update.js",
- "/js/main.d25de52c520148531ac2.hot-update.js": "/js/main.d25de52c520148531ac2.hot-update.js",
- "/js/main.6d42fe0ac7da26120b79.hot-update.js": "/js/main.6d42fe0ac7da26120b79.hot-update.js",
- "/js/main.9454760be21de12d83d1.hot-update.js": "/js/main.9454760be21de12d83d1.hot-update.js",
- "/js/main.0044f318c1b8ce31b297.hot-update.js": "/js/main.0044f318c1b8ce31b297.hot-update.js",
- "/js/main.8991975ceba117ae57f1.hot-update.js": "/js/main.8991975ceba117ae57f1.hot-update.js",
- "/js/main.64274f4f0fe48d3147f2.hot-update.js": "/js/main.64274f4f0fe48d3147f2.hot-update.js",
- "/js/main.3374a65da71319e6a575.hot-update.js": "/js/main.3374a65da71319e6a575.hot-update.js",
- "/js/main.844e62da81c4f8d6861d.hot-update.js": "/js/main.844e62da81c4f8d6861d.hot-update.js",
- "/js/main.8b4c6ec9b91a0a6e6dda.hot-update.js": "/js/main.8b4c6ec9b91a0a6e6dda.hot-update.js",
- "/chunks/team-folders.9358cbe2ed288ae71d16.hot-update.js": "/chunks/team-folders.9358cbe2ed288ae71d16.hot-update.js",
- "/chunks/files.c5f3cf6c3c8fb6224f15.hot-update.js": "/chunks/files.c5f3cf6c3c8fb6224f15.hot-update.js",
- "/chunks/shared-with-me.c5f3cf6c3c8fb6224f15.hot-update.js": "/chunks/shared-with-me.c5f3cf6c3c8fb6224f15.hot-update.js",
- "/chunks/shared/files.c5f3cf6c3c8fb6224f15.hot-update.js": "/chunks/shared/files.c5f3cf6c3c8fb6224f15.hot-update.js",
- "/chunks/files.757ae164d013511f98ca.hot-update.js": "/chunks/files.757ae164d013511f98ca.hot-update.js",
- "/chunks/team-folders.3ca4b57973557c860e87.hot-update.js": "/chunks/team-folders.3ca4b57973557c860e87.hot-update.js",
- "/chunks/admin~chunks/platform.1ceb1013a7cdfe69714a.hot-update.js": "/chunks/admin~chunks/platform.1ceb1013a7cdfe69714a.hot-update.js",
- "/chunks/files.1ceb1013a7cdfe69714a.hot-update.js": "/chunks/files.1ceb1013a7cdfe69714a.hot-update.js",
- "/chunks/platform.1ceb1013a7cdfe69714a.hot-update.js": "/chunks/platform.1ceb1013a7cdfe69714a.hot-update.js",
- "/chunks/shared-with-me.1ceb1013a7cdfe69714a.hot-update.js": "/chunks/shared-with-me.1ceb1013a7cdfe69714a.hot-update.js",
- "/chunks/shared/files.1ceb1013a7cdfe69714a.hot-update.js": "/chunks/shared/files.1ceb1013a7cdfe69714a.hot-update.js",
- "/chunks/team-folders.1ceb1013a7cdfe69714a.hot-update.js": "/chunks/team-folders.1ceb1013a7cdfe69714a.hot-update.js",
- "/js/main.bb3b5823197e4d826a04.hot-update.js": "/js/main.bb3b5823197e4d826a04.hot-update.js",
- "/js/main.7ec463185df154c6765a.hot-update.js": "/js/main.7ec463185df154c6765a.hot-update.js",
- "/js/main.d6cc91ca3ca36210c750.hot-update.js": "/js/main.d6cc91ca3ca36210c750.hot-update.js",
- "/js/main.73c12b2472efda107a1a.hot-update.js": "/js/main.73c12b2472efda107a1a.hot-update.js",
- "/js/main.bafc73e54b9d47e972ef.hot-update.js": "/js/main.bafc73e54b9d47e972ef.hot-update.js",
- "/js/main.3ff40bc89566efb16fbe.hot-update.js": "/js/main.3ff40bc89566efb16fbe.hot-update.js",
- "/js/main.5d31cceb42ba6cef914d.hot-update.js": "/js/main.5d31cceb42ba6cef914d.hot-update.js",
- "/js/main.ad54630ae5ca4f766bd2.hot-update.js": "/js/main.ad54630ae5ca4f766bd2.hot-update.js",
- "/js/main.6f86ea97ffc75935dbe5.hot-update.js": "/js/main.6f86ea97ffc75935dbe5.hot-update.js",
- "/js/main.441bd7768be25261d03a.hot-update.js": "/js/main.441bd7768be25261d03a.hot-update.js",
- "/js/main.cbddf57fc0c1fd9416b3.hot-update.js": "/js/main.cbddf57fc0c1fd9416b3.hot-update.js",
- "/js/main.ac9786974c1d778c9da2.hot-update.js": "/js/main.ac9786974c1d778c9da2.hot-update.js",
- "/js/main.09631dab8941a3f90ad3.hot-update.js": "/js/main.09631dab8941a3f90ad3.hot-update.js",
- "/js/main.16991895d34210d26516.hot-update.js": "/js/main.16991895d34210d26516.hot-update.js",
- "/js/main.57be6e0b39f0688d6ab6.hot-update.js": "/js/main.57be6e0b39f0688d6ab6.hot-update.js",
- "/js/main.07e8496a8807f79c9935.hot-update.js": "/js/main.07e8496a8807f79c9935.hot-update.js",
- "/js/main.2d74a3c10669ea9a5d67.hot-update.js": "/js/main.2d74a3c10669ea9a5d67.hot-update.js",
- "/js/main.24516007923af0acc93f.hot-update.js": "/js/main.24516007923af0acc93f.hot-update.js",
- "/js/main.3153d7944037905243e1.hot-update.js": "/js/main.3153d7944037905243e1.hot-update.js",
- "/js/main.dcd4c14b96fced7d43dc.hot-update.js": "/js/main.dcd4c14b96fced7d43dc.hot-update.js",
- "/js/main.08cc4828988b3049149a.hot-update.js": "/js/main.08cc4828988b3049149a.hot-update.js",
- "/js/main.8ddf469456398b3b09a9.hot-update.js": "/js/main.8ddf469456398b3b09a9.hot-update.js",
- "/js/main.7149d3c7f9dc2295dde2.hot-update.js": "/js/main.7149d3c7f9dc2295dde2.hot-update.js",
- "/js/main.7da8f08b5985f2cb1e52.hot-update.js": "/js/main.7da8f08b5985f2cb1e52.hot-update.js",
- "/js/main.a7c264d42ac3970793b6.hot-update.js": "/js/main.a7c264d42ac3970793b6.hot-update.js",
- "/js/main.e0400bbdadc0d63c2f01.hot-update.js": "/js/main.e0400bbdadc0d63c2f01.hot-update.js",
- "/chunks/files.4ef10c89ddef7d89aae8.hot-update.js": "/chunks/files.4ef10c89ddef7d89aae8.hot-update.js"
+ "/chunks/platform~chunks/shared.1767e6626e2e417bf7c6.hot-update.js": "/chunks/platform~chunks/shared.1767e6626e2e417bf7c6.hot-update.js",
+ "/chunks/platform~chunks/shared.2c0bbe6b6d648c07f5f5.hot-update.js": "/chunks/platform~chunks/shared.2c0bbe6b6d648c07f5f5.hot-update.js",
+ "/chunks/platform~chunks/shared.1dee777dc366da93e4d5.hot-update.js": "/chunks/platform~chunks/shared.1dee777dc366da93e4d5.hot-update.js",
+ "/chunks/platform~chunks/shared.5589da50214e32f01b37.hot-update.js": "/chunks/platform~chunks/shared.5589da50214e32f01b37.hot-update.js",
+ "/chunks/platform~chunks/shared.e57d10a437e00206ce14.hot-update.js": "/chunks/platform~chunks/shared.e57d10a437e00206ce14.hot-update.js",
+ "/chunks/platform~chunks/shared.00ef145b7df84d1fae81.hot-update.js": "/chunks/platform~chunks/shared.00ef145b7df84d1fae81.hot-update.js",
+ "/chunks/platform~chunks/shared.9f9a4a410abd1d6b81e1.hot-update.js": "/chunks/platform~chunks/shared.9f9a4a410abd1d6b81e1.hot-update.js",
+ "/chunks/platform~chunks/shared.d83124a9f6877c82e9bb.hot-update.js": "/chunks/platform~chunks/shared.d83124a9f6877c82e9bb.hot-update.js"
}
diff --git a/resources/js/components/FilesView/ImageMetaData.vue b/resources/js/components/FilesView/ImageMetaData.vue
index b660c327..fd92632e 100644
--- a/resources/js/components/FilesView/ImageMetaData.vue
+++ b/resources/js/components/FilesView/ImageMetaData.vue
@@ -1,109 +1,95 @@
diff --git a/resources/js/components/FilesView/InfoSidebar.vue b/resources/js/components/FilesView/InfoSidebar.vue
index 3960250a..cc0a10f2 100644
--- a/resources/js/components/FilesView/InfoSidebar.vue
+++ b/resources/js/components/FilesView/InfoSidebar.vue
@@ -151,7 +151,7 @@
return this.clipboard[0]
},
canShowMetaData() {
- return this.clipboard[0].data.attributes.metadata && this.clipboard[0].data.attributes.metadata.ExifImageWidth
+ return this.clipboard[0].data.relationships.metadata
},
isLocked() {
return this.clipboard[0].data.relationships.shared.protected
diff --git a/src/App/Users/Models/UserSetting.php b/src/App/Users/Models/UserSetting.php
index 6188d6c4..8f76c04a 100644
--- a/src/App/Users/Models/UserSetting.php
+++ b/src/App/Users/Models/UserSetting.php
@@ -108,6 +108,8 @@ class UserSetting extends Model
static::creating(function ($user) {
$user->id = Str::uuid();
$user->color = config('vuefilemanager.colors')[rand(0, 5)];
+ $user->emoji_type = 'twemoji';
+ $user->theme_mode = 'system';
});
}
}
diff --git a/src/Domain/Files/Actions/StoreFileExifMetadataAction.php b/src/Domain/Files/Actions/StoreFileExifMetadataAction.php
new file mode 100644
index 00000000..01886c4d
--- /dev/null
+++ b/src/Domain/Files/Actions/StoreFileExifMetadataAction.php
@@ -0,0 +1,41 @@
+exif()->create([
+ 'date_time_original' => $data->DateTimeOriginal ?? null,
+ 'artist' => $data->OwnerName ?? null,
+ 'width' => $data->COMPUTED->Width ?? null,
+ 'height' => $data->COMPUTED->Height ?? null,
+ 'x_resolution' => $data->XResolution ?? null,
+ 'y_resolution' => $data->YResolution ?? null,
+ 'color_space' => $data->ColorSpace ?? null,
+ 'camera' => $data->Make ?? null,
+ 'model' => $data->Model ?? null,
+ 'aperture_value' => $data->ApertureValue ?? null,
+ 'exposure_time' => $data->ExposureTime ?? null,
+ 'focal_length' => $data->FocalLength ?? null,
+ 'iso' => $data->ISOSpeedRatings ?? null,
+ 'aperture_f_number' => $data->COMPUTED->ApertureFNumber ?? null,
+ 'ccd_width' => $data->COMPUTED->CCDWidth ?? null,
+ 'longitude' => $data->GPSLongitude ?? null,
+ 'latitude' => $data->GPSLatitude ?? null,
+ 'longitude_ref' => $data->GPSLongitudeRef ?? null,
+ 'latitude_ref' => $data->GPSLatitudeRef ?? null
+ ]);
+ }
+
+ }
+}
diff --git a/src/Domain/Files/Actions/UploadFileAction.php b/src/Domain/Files/Actions/UploadFileAction.php
index bc267e25..50a915b9 100644
--- a/src/Domain/Files/Actions/UploadFileAction.php
+++ b/src/Domain/Files/Actions/UploadFileAction.php
@@ -11,6 +11,7 @@ use Domain\Files\Models\File as UserFile;
use Domain\Traffic\Actions\RecordUploadAction;
use App\Users\Exceptions\InvalidUserActionException;
use Illuminate\Contracts\Filesystem\FileNotFoundException;
+use Domain\Files\Actions\StoreFileExifMetadataAction;
class UploadFileAction
{
@@ -19,6 +20,7 @@ class UploadFileAction
public ProcessImageThumbnailAction $createImageThumbnail,
public GetFileParentId $getFileParentId,
public MoveFileToExternalStorageAction $moveFileToExternalStorage,
+ public StoreFileExifMetadataAction $storeExifMetadata,
) {
}
@@ -57,8 +59,6 @@ class UploadFileAction
// If last then process file
if ($request->boolean('is_last')) {
- $metadata = get_image_meta_data($file);
-
$disk_local = Storage::disk('local');
// Get user data
@@ -90,18 +90,23 @@ class UploadFileAction
// Store user upload size
($this->recordUpload)($fileSize, $user->id);
- // Return new file
- return UserFile::create([
+ // Create new file
+ $item = UserFile::create([
'mimetype' => get_file_type_from_mimetype($file_mimetype),
'type' => get_file_type($file_mimetype),
'parent_id' => ($this->getFileParentId)($request, $user->id),
- 'metadata' => $metadata,
'name' => $request->input('filename'),
'basename' => $fileName,
'author' => $shared ? 'visitor' : 'user',
'filesize' => $fileSize,
'user_id' => $user->id,
]);
+
+ // Store exif metadata for files
+ ($this->storeExifMetadata)($item, $file);
+
+ // Return new file
+ return $item;
}
}
}
diff --git a/src/Domain/Files/Models/Exif.php b/src/Domain/Files/Models/Exif.php
new file mode 100644
index 00000000..2af4554b
--- /dev/null
+++ b/src/Domain/Files/Models/Exif.php
@@ -0,0 +1,44 @@
+ 'array',
+ 'latitude' => 'array',
+ ];
+
+ /**
+ * Get parent
+ */
+ public function file(): HasOne
+ {
+ return $this->HasOne(File::class, 'id', 'file_id');
+ }
+
+ public static function boot()
+ {
+ parent::boot();
+
+ static::creating(function ($model) {
+ $model->id = (string) Str::uuid();
+ });
+ }
+}
diff --git a/src/Domain/Files/Models/File.php b/src/Domain/Files/Models/File.php
index c7250b82..f7e3f7d5 100644
--- a/src/Domain/Files/Models/File.php
+++ b/src/Domain/Files/Models/File.php
@@ -27,7 +27,6 @@ use Illuminate\Database\Eloquent\Factories\HasFactory;
* @property string thumbnail
* @property string filesize
* @property string type
- * @property array metadata
* @property string basename
* @property string name
* @property string mimetype
@@ -54,10 +53,6 @@ class File extends Model
'file_url',
];
- protected $casts = [
- 'metadata' => 'array',
- ];
-
public array $sortable = [
'name',
'created_at',
@@ -178,6 +173,11 @@ class File extends Model
return $this->hasOne(User::class, 'id', 'user_id');
}
+ public function exif(): HasOne
+ {
+ return $this->hasOne(Exif::class);
+ }
+
public function toSearchableArray(): array
{
$name = mb_convert_encoding(
@@ -202,5 +202,11 @@ class File extends Model
static::creating(function ($file) {
$file->id = (string) Str::uuid();
});
+
+ static::deleting(function($file) {
+ if($file->isForceDeleting()) {
+ $file->exif()->forceDelete();
+ };
+ });
}
}
diff --git a/src/Domain/Files/Resources/FileResource.php b/src/Domain/Files/Resources/FileResource.php
index c89a66c3..4516bae3 100644
--- a/src/Domain/Files/Resources/FileResource.php
+++ b/src/Domain/Files/Resources/FileResource.php
@@ -31,7 +31,6 @@ class FileResource extends JsonResource
'mimetype' => $this->mimetype,
'file_url' => $this->file_url,
'thumbnail' => $this->thumbnail,
- 'metadata' => $this->metadata,
'parent_id' => $this->parent_id,
'updated_at' => $this->updated_at,
'created_at' => Carbon::parse($this->created_at)->diffForHumans(),
@@ -71,6 +70,27 @@ class FileResource extends JsonResource
],
],
]),
+ $this->mergeWhen($this->exif, fn() => [
+ 'metadata' => [
+ 'date_time_original' => format_date($this->exif->date_time_original) ,
+ 'artist' => $this->exif->artist ,
+ 'height' => $this->exif->height,
+ 'width' => $this->exif->width,
+ 'x_resolution' => substr($this->exif->x_resolution, 0, strrpos( $this->exif->x_resolution, '/')),
+ 'y_resolution' => substr($this->exif->y_resolution, 0, strrpos( $this->exif->y_resolution, '/')) ,
+ 'color_space' => $this->exif->color_space ,
+ 'camera' => $this->exif->camera,
+ 'model' => $this->exif->model ,
+ 'aperture_value' => intval($this->exif->aperture_value) / 100 ,
+ 'exposure_time' => $this->exif->exposure_time ,
+ 'focal_length' => $this->exif->focal_length ,
+ 'iso' => $this->exif->iso ,
+ 'aperture_f_number' => $this->exif->aperture_f_number ,
+ 'ccd_width' => $this->exif->ccd_width ,
+ 'longitude' => format_gps_coordinates($this->exif->longitude, $this->exif->longitude_ref) ,
+ 'latitude' => format_gps_coordinates($this->exif->latitude, $this->exif->latitude_ref) ,
+ ]
+ ])
],
],
];
diff --git a/src/Support/helpers.php b/src/Support/helpers.php
index 7c393867..53c43c09 100644
--- a/src/Support/helpers.php
+++ b/src/Support/helpers.php
@@ -1068,4 +1068,21 @@ if (! function_exists('replace_occurrence')) {
});
}
}
+
+ if(! function_exists('format_gps_coordinates')) {
+ /**
+ * Format GPS coordinates
+ */
+ function format_gps_coordinates($coordinates, $ref)
+ {
+ if($coordinates && $ref) {
+
+ return
+ explode('/',$coordinates[0])[0] . '°' .
+ explode('/', $coordinates[1])[0] . "'" .
+ substr(explode(',', $coordinates[2])[0], 0, 5) / 1000 . '"' .
+ $ref;
+ }
+ };
+ }
}