/** * {@inheritdoc} */ public function match(ModelInterface $model = null, PropertyValueBag $input = null, PropertyInterface $property = null, LegendInterface $legend = null) { if ($property === null) { return false; } /** @var $model \MetaModels\DcGeneral\Data\Model */ $nativeItem = $model->getItem(); $metaModel = $nativeItem->getMetaModel(); if ($metaModel->hasVariants() && !$nativeItem->isVariantBase()) { return !in_array($property->getName(), array_keys($metaModel->getInVariantAttributes())); } return true; }
/** * Check if two models have the same values in all properties. * * @param ModelInterface $objModel1 The first model to compare. * * @param ModelInterface $objModel2 The second model to compare. * * @return boolean True - If both models are same, false if not. * * @throws \InvalidArgumentException If not both models are compatible with this data provider. */ public function sameModels($objModel1, $objModel2) { if (!($objModel1 instanceof Model && $objModel2 instanceof Model)) { throw new \InvalidArgumentException('Passed models are not valid.'); } $objNative1 = $objModel1->getItem(); $objNative2 = $objModel2->getItem(); if ($objNative1->getMetaModel() != $objNative2->getMetaModel()) { return false; } foreach ($objNative1->getMetaModel()->getAttributes() as $objAttribute) { if ($objNative1->get($objAttribute->getColName()) != $objNative2->get($objAttribute->getColName())) { return false; } } return true; }