public function setProperty($propertyName, $value)
{
if (!is_object($this->contentObjectProxy)) {
switch ($this->getNodeType()->getPropertyType($propertyName)) {
case 'references':
$nodeIdentifiers = array();
if (is_array($value)) {
foreach ($value as $nodeIdentifier) {
if ($nodeIdentifier instanceof NodeInterface || $nodeIdentifier instanceof AbstractNodeData) {
$nodeIdentifiers[] = $nodeIdentifier->getIdentifier();
} elseif (preg_match(UuidValidator::PATTERN_MATCH_UUID, $nodeIdentifier) !== 0) {
$nodeIdentifiers[] = $nodeIdentifier;
}
}
}
$value = $nodeIdentifiers;
break;
case 'reference':
$nodeIdentifier = null;
if ($value instanceof NodeInterface || $value instanceof AbstractNodeData) {
$nodeIdentifier = $value->getIdentifier();
} elseif (preg_match(UuidValidator::PATTERN_MATCH_UUID, $value) !== 0) {
$nodeIdentifier = $value;
}
$value = $nodeIdentifier;
break;
}
$this->persistRelatedEntities($value);
if (isset($this->properties[$propertyName]) && $this->properties[$propertyName] === $value) {
return;
}
$this->properties[$propertyName] = $value;
$this->addOrUpdate();
} elseif (ObjectAccess::isPropertySettable($this->contentObjectProxy->getObject(), $propertyName)) {
$contentObject = $this->contentObjectProxy->getObject();
ObjectAccess::setProperty($contentObject, $propertyName, $value);
$this->updateContentObject($contentObject);
}
}