Changeset View
Changeset View
Standalone View
Standalone View
src/app/Observers/SharedFolderSettingObserver.php
<?php | <?php | ||||
namespace App\Observers; | namespace App\Observers; | ||||
use App\Backends\LDAP; | |||||
use App\SharedFolderSetting; | use App\SharedFolderSetting; | ||||
class SharedFolderSettingObserver | class SharedFolderSettingObserver | ||||
{ | { | ||||
/** | /** | ||||
* Handle the shared folder setting "created" event. | * Handle the shared folder setting "created" event. | ||||
* | * | ||||
* @param \App\SharedFolderSetting $folderSetting Settings object | * @param \App\SharedFolderSetting $folderSetting Settings object | ||||
* | * | ||||
* @return void | * @return void | ||||
*/ | */ | ||||
public function created(SharedFolderSetting $folderSetting) | public function created(SharedFolderSetting $folderSetting) | ||||
{ | { | ||||
if (in_array($folderSetting->key, LDAP::SHARED_FOLDER_SETTINGS)) { | $this->dispatchUpdateJob($folderSetting); | ||||
\App\Jobs\SharedFolder\UpdateJob::dispatch($folderSetting->shared_folder_id); | |||||
} | |||||
} | } | ||||
/** | /** | ||||
* Handle the shared folder setting "updated" event. | * Handle the shared folder setting "updated" event. | ||||
* | * | ||||
* @param \App\SharedFolderSetting $folderSetting Settings object | * @param \App\SharedFolderSetting $folderSetting Settings object | ||||
* | * | ||||
* @return void | * @return void | ||||
*/ | */ | ||||
public function updated(SharedFolderSetting $folderSetting) | public function updated(SharedFolderSetting $folderSetting) | ||||
{ | { | ||||
if (in_array($folderSetting->key, LDAP::SHARED_FOLDER_SETTINGS)) { | $this->dispatchUpdateJob($folderSetting); | ||||
\App\Jobs\SharedFolder\UpdateJob::dispatch($folderSetting->shared_folder_id); | |||||
} | |||||
} | } | ||||
/** | /** | ||||
* Handle the shared folder setting "deleted" event. | * Handle the shared folder setting "deleted" event. | ||||
* | * | ||||
* @param \App\SharedFolderSetting $folderSetting Settings object | * @param \App\SharedFolderSetting $folderSetting Settings object | ||||
* | * | ||||
* @return void | * @return void | ||||
*/ | */ | ||||
public function deleted(SharedFolderSetting $folderSetting) | public function deleted(SharedFolderSetting $folderSetting) | ||||
{ | { | ||||
if (in_array($folderSetting->key, LDAP::SHARED_FOLDER_SETTINGS)) { | $this->dispatchUpdateJob($folderSetting); | ||||
\App\Jobs\SharedFolder\UpdateJob::dispatch($folderSetting->shared_folder_id); | } | ||||
/** | |||||
* Dispatch shared folder update job (if needed). | |||||
* | |||||
* @param \App\SharedFolderSetting $folderSetting Settings object | |||||
*/ | |||||
private function dispatchUpdateJob(SharedFolderSetting $folderSetting): void | |||||
{ | |||||
if ((\config('app.with_ldap') && in_array($folderSetting->key, \App\Backends\LDAP::SHARED_FOLDER_SETTINGS)) | |||||
|| in_array($folderSetting->key, \App\Backends\IMAP::SHARED_FOLDER_SETTINGS) | |||||
) { | |||||
$props = [$folderSetting->key => $folderSetting->getOriginal('value')]; | |||||
\App\Jobs\SharedFolder\UpdateJob::dispatch($folderSetting->shared_folder_id, $props); | |||||
} | } | ||||
} | } | ||||
} | } |