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(); }