/**
  * set relations / tags / alarms / grants
  * 
  * @param   Tinebase_Record_Interface $updatedRecord   the just updated record
  * @param   Tinebase_Record_Interface $record          the update record
  * @param   boolean $returnUpdatedRelatedData
  * @return  Tinebase_Record_Interface
  */
 protected function _setRelatedData($updatedRecord, $record, $returnUpdatedRelatedData = false)
 {
     $updatedRecord->grants = $record->grants;
     $this->setGrants($updatedRecord);
     return parent::_setRelatedData($updatedRecord, $record, $returnUpdatedRelatedData);
 }
 /**
  * set relations / tags / alarms
  *
  * @param   Tinebase_Record_Interface $updatedRecord the just updated record
  * @param   Tinebase_Record_Interface $record the update record
  * @param   Tinebase_Record_Interface $currentRecord   the original record if one exists
  * @param   boolean                   $returnUpdatedRelatedData
  * @return  Tinebase_Record_Interface
  */
 protected function _setRelatedData(Tinebase_Record_Interface $updatedRecord, Tinebase_Record_Interface $record, Tinebase_Record_Interface $currentRecord = null, $returnUpdatedRelatedData = FALSE)
 {
     /** @var Addressbook_Model_List $record */
     if (isset($record->memberroles)) {
         // get migration
         // TODO add generic helper fn for this?
         $memberrolesToSet = !$record->memberroles instanceof Tinebase_Record_RecordSet ? new Tinebase_Record_RecordSet('Addressbook_Model_ListMemberRole', $record->memberroles, true) : $record->memberroles;
         foreach ($memberrolesToSet as $memberrole) {
             foreach (array('contact_id', 'list_role_id', 'list_id') as $field) {
                 if (isset($memberrole[$field]['id'])) {
                     $memberrole[$field] = $memberrole[$field]['id'];
                 }
             }
         }
         $currentMemberroles = $this->_getMemberRoles($record);
         $diff = $currentMemberroles->diff($memberrolesToSet);
         if (count($diff['added']) > 0) {
             $diff['added']->list_id = $updatedRecord->getId();
             foreach ($diff['added'] as $memberrole) {
                 $this->_getMemberRolesBackend()->create($memberrole);
             }
         }
         if (count($diff['removed']) > 0) {
             $this->_getMemberRolesBackend()->delete($diff['removed']->getArrayOfIds());
         }
     }
     $result = parent::_setRelatedData($updatedRecord, $record, $currentRecord, $returnUpdatedRelatedData);
     return $result;
 }
 /**
  * set relations / tags / alarms / grants
  * 
  * @param   Tinebase_Record_Interface $updatedRecord   the just updated record
  * @param   Tinebase_Record_Interface $record          the update record
  * @param   Tinebase_Record_Interface $currentRecord   the original record if one exists
  * @param   boolean $returnUpdatedRelatedData
  * @return  Tinebase_Record_Interface
  */
 protected function _setRelatedData(Tinebase_Record_Interface $updatedRecord, Tinebase_Record_Interface $record, Tinebase_Record_Interface $currentRecord = null, $returnUpdatedRelatedData = FALSE)
 {
     $updatedRecord->grants = $record->grants;
     $this->setGrants($updatedRecord);
     return parent::_setRelatedData($updatedRecord, $record, $currentRecord, $returnUpdatedRelatedData);
 }