115 lines
3.5 KiB
PHP
115 lines
3.5 KiB
PHP
<?php
|
|
|
|
namespace App\Observers;
|
|
|
|
use App\SharedFile;
|
|
use App\User;
|
|
|
|
class SharedFileObserver
|
|
{
|
|
/**
|
|
* Handle the shared file "created" event.
|
|
*
|
|
* @param \App\SharedFile $sharedFile
|
|
* @return void
|
|
*/
|
|
public function created(SharedFile $sharedFile)
|
|
{
|
|
if($sharedFile->department_id!=null)
|
|
{
|
|
$users = User::where('department_id', $sharedFile->department->id)->pluck('id')->toArray();
|
|
$files = SharedFile::where('shared_by', auth()->user()->id)->where('path_to_root', 'LIKE', '%;'. $sharedFile->file_id .';%')
|
|
->where(function($q) use($sharedFile, $users){
|
|
$q->orWhere('department_id', $sharedFile->department_id)
|
|
->orWhereIn('user_id', $users);
|
|
})->get();
|
|
|
|
foreach($files as $file)
|
|
{
|
|
$file->delete();
|
|
}
|
|
}
|
|
else if($sharedFile->user_id!=null)
|
|
{
|
|
$files = SharedFile::where('shared_by', auth()->user()->id)->where('user_id', $sharedFile->user_id)->where('path_to_root', 'LIKE', '%;'. $sharedFile->file_id .';%')->get();
|
|
foreach($files as $file)
|
|
{
|
|
$file->delete();
|
|
}
|
|
}
|
|
|
|
if(($sharedFile->permission == 1) && SharedFile::where('file_id', $sharedFile->file_id)->where('user_id', $sharedFile->user_id)->where('department_id', $sharedFile->department_id)->where('permission', 2)->exist())
|
|
$sharedFile->delete();
|
|
else if($sharedFile->permission == 2)
|
|
if(SharedFile::where('file_id', $sharedFile->file_id)->where('user_id', $sharedFile->user_id)->where('department_id', $sharedFile->department_id)->where('permission', 1)->exist())
|
|
SharedFile::where('file_id', $sharedFile->file_id)->where('user_id', $sharedFile->user_id)->where('department_id', $sharedFile->department_id)->where('permission', 1)->delete();
|
|
|
|
|
|
if($sharedFile->path_to_root == "")
|
|
{
|
|
$sharedFile->show_home = 1;
|
|
$sharedFile->saveWithoutEvents();
|
|
}
|
|
else
|
|
{
|
|
$found=false;
|
|
$shares = SharedFile::where('department_id', $sharedFile->department_id)->where('user_id', $sharedFile->user_id)->where('file_id', $sharedFile->file_id)->get(['id', 'show_home']);
|
|
foreach($shares as $share)
|
|
{
|
|
if(preg_match("/;".$share->file_id.";/", $sharedFile->path_to_root))
|
|
$found=true;
|
|
}
|
|
if($found == false)
|
|
{
|
|
$sharedFile->show_home = 1;
|
|
$sharedFile->saveWithoutEvents();
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* Handle the shared file "updated" event.
|
|
*
|
|
* @param \App\SharedFile $sharedFile
|
|
* @return void
|
|
*/
|
|
public function updated(SharedFile $sharedFile)
|
|
{
|
|
//
|
|
}
|
|
|
|
/**
|
|
* Handle the shared file "deleted" event.
|
|
*
|
|
* @param \App\SharedFile $sharedFile
|
|
* @return void
|
|
*/
|
|
public function deleted(SharedFile $sharedFile)
|
|
{
|
|
//
|
|
}
|
|
|
|
/**
|
|
* Handle the shared file "restored" event.
|
|
*
|
|
* @param \App\SharedFile $sharedFile
|
|
* @return void
|
|
*/
|
|
public function restored(SharedFile $sharedFile)
|
|
{
|
|
//
|
|
}
|
|
|
|
/**
|
|
* Handle the shared file "force deleted" event.
|
|
*
|
|
* @param \App\SharedFile $sharedFile
|
|
* @return void
|
|
*/
|
|
public function forceDeleted(SharedFile $sharedFile)
|
|
{
|
|
//
|
|
}
|
|
}
|