⚝
One Hat Cyber Team
⚝
Your IP:
216.73.216.19
Server IP:
178.33.27.10
Server:
Linux cpanel.dev-unit.com 3.10.0-1160.108.1.el7.x86_64 #1 SMP Thu Jan 25 16:17:31 UTC 2024 x86_64
Server Software:
Apache/2.4.57 (Unix) OpenSSL/1.0.2k-fips
PHP Version:
8.2.11
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
home
/
id
/
dalily.dev-unit.com
/
app
/
Observers
/
View File Name :
FieldObserver.php
<?php /* * LaraClassifier - Classified Ads Web Application * Copyright (c) BeDigit. All Rights Reserved * * Website: https://laraclassifier.com * Author: Mayeul Akpovi (BeDigit - https://bedigit.com) * * LICENSE * ------- * This software is provided under a license agreement and may only be used or copied * in accordance with its terms, including the inclusion of the above copyright notice. * As this software is sold exclusively on CodeCanyon, * please review the full license details here: https://codecanyon.net/licenses/standard */ namespace App\Observers; use App\Helpers\Common\Files\Storage\StorageDisk; use App\Models\CategoryField; use App\Models\Field; use App\Models\FieldOption; use App\Models\PostValue; class FieldObserver { /** * Listen to the Entry updating event. * * @param Field $field * @return void */ public function updating(Field $field) { // Get the original object values $original = $field->getOriginal(); // Get the original field type value $originalFieldType = $original['type'] ?? null; // Check if the field type changed $isFieldTypeChanged = (!empty($originalFieldType) && !empty($field->type) && $originalFieldType != $field->type); if ($isFieldTypeChanged) { // Storage Disk Init. $disk = StorageDisk::getDisk(); // Get fields types having options or file upload $fieldTypesHavingOptions = ['checkbox_multiple', 'radio', 'select']; // Check if field type has changed from type with options to type without options $isFieldTypeChangedToFieldWithoutOptions = ( in_array($originalFieldType, $fieldTypesHavingOptions) && !in_array($field->type, $fieldTypesHavingOptions) ); if ($isFieldTypeChangedToFieldWithoutOptions) { // Delete all the Custom Field's options $options = FieldOption::where('field_id', $field->id); if ($options->count() > 0) { foreach ($options->cursor() as $option) { $option->delete(); } } // Delete all Posts Custom Field's Values $postValues = PostValue::where('field_id', $field->id)->get(); if ($postValues->count() > 0) { foreach ($postValues as $postValue) { $postValue->delete(); } } } else { // Delete all Posts Custom Field's Values $postValues = PostValue::where('field_id', $field->id)->get(); if ($postValues->count() > 0) { foreach ($postValues as $postValue) { // If field is of type 'file', remove files (if exists) if ($field->type == 'file') { if (!empty($postValue->value)) { if ($disk->exists($postValue->value)) { $disk->delete($postValue->value); } } } // Delete the Post's value for this field $postValue->delete(); } } } } } /** * Listen to the Entry deleting event. * * @param Field $field * @return void */ public function deleting($field) { // Delete all Categories Custom Fields $catFields = CategoryField::where('field_id', $field->id)->get(); if ($catFields->count() > 0) { foreach ($catFields as $catField) { $catField->delete(); } } // Delete all the Custom Field's options $fieldOptions = FieldOption::where('field_id', $field->id)->get(); if ($fieldOptions->count() > 0) { foreach ($fieldOptions as $fieldOption) { $fieldOption->delete(); } } // Delete all Posts Custom Field's Values $postValues = PostValue::where('field_id', $field->id)->get(); if ($postValues->count() > 0) { foreach ($postValues as $postValue) { $postValue->delete(); } } } }