protected function processRemoteOwnerRelations($object, $toDelete, $toAdd, $ownerFieldName)
{
$getter = "get" . ucfirst($ownerFieldName);
$setter = "set" . ucfirst($ownerFieldName);
foreach ($toDelete as $id) {
$owner = Object::getById($id);
//TODO: lock ?!
if (method_exists($owner, $getter)) {
$currentData = $owner->{$getter}();
if (is_array($currentData)) {
for ($i = 0; $i < count($currentData); $i++) {
if ($currentData[$i]->getId() == $object->getId()) {
unset($currentData[$i]);
$owner->{$setter}($currentData);
$owner->setUserModification($this->getUser()->getId());
$owner->save();
Logger::debug("Saved object id [ " . $owner->getId() . " ] by remote modification through [" . $object->getId() . "], Action: deleted [ " . $object->getId() . " ] from [ {$ownerFieldName}]");
break;
}
}
}
}
}
foreach ($toAdd as $id) {
$owner = Object::getById($id);
//TODO: lock ?!
if (method_exists($owner, $getter)) {
$currentData = $owner->{$getter}();
$currentData[] = $object;
$owner->{$setter}($currentData);
$owner->setUserModification($this->getUser()->getId());
$owner->save();
Logger::debug("Saved object id [ " . $owner->getId() . " ] by remote modification through [" . $object->getId() . "], Action: added [ " . $object->getId() . " ] to [ {$ownerFieldName} ]");
}
}
}