public function testGetEffectivePlacedAttributes() { Yii::app()->user->userModel = User::getByUsername('super'); $viewClassName = 'ContactEditAndDetailsView'; $modelClassName = 'Contact'; $designerRules = DesignerRulesFactory::createDesignerRulesByView($viewClassName); $attributesLayoutAdapter = AttributesLayoutAdapterUtil::makeByViewAndModelAndDesignerRules($viewClassName, $modelClassName, $designerRules); $this->assertFalse(in_array('industry', $attributesLayoutAdapter->getEffectivePlacedAttributes())); $this->assertTrue(in_array('firstName', $attributesLayoutAdapter->getEffectivePlacedAttributes())); $this->assertTrue(in_array('lastName', $attributesLayoutAdapter->getEffectivePlacedAttributes())); $this->assertTrue(in_array('source', $attributesLayoutAdapter->getEffectivePlacedAttributes())); }
/** * @param string $modelClassName * @param string $attributeName */ public static function resolveToRemoveAttributeAsMissingRequiredAttribute($modelClassName, $attributeName) { assert('is_string($modelClassName)'); assert('is_string($attributeName)'); $modules = Module::getModuleObjects(); foreach ($modules as $module) { try { if ($module::getPrimaryModelName() == $modelClassName) { $viewClassNames = $module::getViewClassNames(); foreach ($viewClassNames as $viewClassName) { $classToEvaluate = new ReflectionClass($viewClassName); if (is_subclass_of($viewClassName, 'MetadataView') && !$classToEvaluate->isAbstract() && $viewClassName::getDesignerRulesType() != null) { $designerRules = DesignerRulesFactory::createDesignerRulesByView($viewClassName); if ($designerRules->allowEditInLayoutTool() && $designerRules->requireAllRequiredFieldsInLayout()) { $attributesLayoutAdapter = AttributesLayoutAdapterUtil::makeByViewAndModelAndDesignerRules($viewClassName, $modelClassName, $designerRules); if (!in_array($attributeName, $attributesLayoutAdapter->getEffectivePlacedAttributes())) { self::removeAttributeAsMissingRequiredAttribute(get_class($module), $viewClassName); } } } } } } catch (NotSupportedException $e) { } } }