protected function enrichElegantModel(ElegantModelInterface $elegantModel)
 {
     $reflection = new ReflectionClass($elegantModel->getClassName());
     $method = $reflection->getMethod('getAttachedFiles');
     $fields = $method->invoke($reflection->newInstance());
     foreach (array_keys($fields) as &$field) {
         if (!$this->staplerFieldsPresent($elegantModel, $field)) {
             continue;
         }
         $this->replaceMetaFields($elegantModel, $field);
         $elegantModel->addField(new StaplerImageField(['name' => $field]), true);
     }
 }
 protected function enrichElegantModel(ElegantModelInterface $elegantModel)
 {
     $class = new ReflectionClass($elegantModel->getClassName());
     $property = $class->getProperty('translatedAttributes');
     $translatedAttributes = $property->getValue($class->newInstance()) ?: [];
     if (!($translatedModel = $this->getTranslatedModel($class))) {
         return;
     }
     // Hide translatedModel
     $translatedModel->setHidden(true);
     // Decorate translated attribute field
     foreach ($translatedAttributes as $attribute) {
         if ($translatedModel->hasField($attribute)) {
             $elegantModel->addField(new TranslatableField([], $translatedModel->getField($attribute)), true);
         }
     }
 }
 public function isAvailableInModel(ElegantModelInterface $elegantModel)
 {
     $class = new ReflectionClass($elegantModel->getClassName());
     $extensionAvailable = false;
     // Check current class has reflected trait
     if ($this->hasReflectedTrait($class)) {
         $extensionAvailable = true;
     } else {
         // Check parent classes, since ReflectionClass::getTraits doesn't
         // check inherited traits (https://bugs.php.net/bug.php?id=61554)
         while ($parent = $class->getParentClass()) {
             if ($this->hasReflectedTrait($parent)) {
                 $extensionAvailable = true;
                 break;
             }
             $class = $parent;
         }
     }
     if ($extensionAvailable) {
         $this->enrichElegantModel($elegantModel);
     }
     return $extensionAvailable;
 }
 public function model()
 {
     return $this->elegantModel->getClassName();
 }