Hi Zonky,
Ja, das habe ich tatsächlich herausgefunden ;-). Hier mal mein bisheriger Lösungsweg. Funktioniert soweit ganz gut.
PHP-Code:
use ContaoCommunityAlliance\DcGeneral\Event\PostPersistModelEvent;
return [
PostPersistModelEvent::NAME => [
function (PostPersistModelEvent $event) {
if ('BE' !== TL_MODE || 'mm_company' !== $event->getEnvironment()
->getDataDefinition()
->getBasicDefinition()
->getDataProvider()) {
return;
}
$model = $event->getModel();
$companyid = $model->getItem()->get('id');
$objMember = \MemberModel::findBy('assoccompany',$companyid);
while($objMember->next()){
if($objMember->groups){
//Gruppen-Array wird pro Mitglied eingelesen.
$arrGroup = deserialize($objMember->groups);
//Zu löschende Teilmenge der Mitgliedergruppen-ID bei betreffendem Mitglied (gewisse zugewiesene dürfen nicht gelöscht werden!)
$delGroup = array(1,3,4);
//Teilmenge Mitgliedergruppen-ID werden aus Gruppen-Array gelöscht.
if(is_array($arrGroup)){
foreach($delGroup as $delValue){
if (($key = array_search($delValue, $arrGroup)) !== false) {
unset($arrGroup[$key]);
}
}
}
//Mitgliedergruppen-Auswahl des Unternehmens wird eingelesen und
//Gruppen-Array hinzugefügt.
$selGroup = deserialize($model->getItem()->get('membergroup'));
$arrGroup[] = $selGroup["id"];
//Gruppen-Array wird beim Mitglied gespeichert.
$objMember->groups = serialize($arrGroup);
$objMember->save();
}
}
}
],
];
Lesezeichen