示例#1
0
 protected static function bootUpload()
 {
     static::updating(function (Model $model) {
         foreach ($model->getUploadFields() as $key) {
             $originalValue = array_get($model->original, $key);
             if (!empty($originalValue) and $originalValue != $model->attributes[$key] and file_exists($filePath = public_path($originalValue))) {
                 unlink($filePath);
             }
         }
     });
     static::saving(function (Model $model) {
         foreach ($model->getUploadFields() as $key) {
             if ($model->{$key} instanceof UploadedFile) {
                 $model->attachFile($key, $model->{$key});
             }
         }
     });
     static::deleting(function (Model $model) {
         if (in_array(\Illuminate\Database\Eloquent\SoftDeletes::class, trait_uses_recursive($model)) && !$model->forceDeleting) {
             return;
         }
         foreach ($model->getUploadFields() as $key) {
             $filePath = $model->{$key . '_path'};
             if (!empty($filePath) and file_exists($filePath)) {
                 unlink($model->{$key . '_path'});
             }
         }
     });
 }
示例#2
0
 /**
  * Returns all traits used by a trait and its traits.
  *
  * @param  string  $trait
  * @return array
  */
 function trait_uses_recursive($trait)
 {
     $traits = class_uses($trait);
     foreach ($traits as $trait) {
         $traits += trait_uses_recursive($trait);
     }
     return $traits;
 }
 /**
  * Returns all traits used by a class, it's subclasses and trait of their traits
  *
  * @param  string  $class
  * @return array
  */
 function class_uses_recursive($class)
 {
     $results = [];
     foreach (array_merge([$class => $class], class_parents($class)) as $class) {
         $results += trait_uses_recursive($class);
     }
     return array_unique($results);
 }