/** * @param DataTypeDefinition $dataTypeDefinition * @param array $values * * @return mixed */ public function getClippingDefinition($dataTypeDefinition, $values = array(), $attributes = array()) { if ($this->definition->getPropertyName()) { $value = null; if (strpos($this->definition->getPropertyName(), '.') !== false) { $attribute = array_pop(explode('.', $this->definition->getPropertyName())); if (array_key_exists($attribute, $attributes)) { $value = $attributes[$attribute]; } } else { if (array_key_exists($this->definition->getPropertyName(), $values)) { $value = $values[$this->definition->getPropertyName()]; } } $clippingName = $this->definition->getClippingName($value); } else { $clippingName = $this->definition->getClippingName(); } if ($dataTypeDefinition->hasClippingDefinition($clippingName)) { $clippingDefinition = $dataTypeDefinition->getClippingDefinition($clippingName); if ($this->definition->hasWorkspacesRestriction()) { if (!in_array($this->context->getCurrentWorkspace(), $this->definition->getWorkspaces())) { return false; } } if ($this->definition->hasLanguagesRestriction()) { if (!in_array($this->context->getCurrentLanguage(), $this->definition->getLanguages())) { return false; } } return $clippingDefinition; } else { return false; } }