public function save_contributor($contributor) { if (!isset($_POST['podlove_contributor'])) { return; } if (!isset($_POST['podlove_contributor']['services']) && !isset($_POST['podlove_contributor']['donations'])) { return; } $delete_service = function ($type) use($contributor) { foreach (\Podlove\Modules\Social\Model\ContributorService::all("WHERE `contributor_id` = " . $contributor->id) as $ContributorService) { $service = \Podlove\Modules\Social\Model\Service::find_by_id($ContributorService->service_id); if ($service->category == $type) { $ContributorService->delete(); } } }; foreach (array('donations', 'services') as $type) { $position = 0; if (isset($_POST['podlove_contributor'][$type])) { $delete_service($type == 'donations' ? 'donation' : 'social'); foreach ($_POST['podlove_contributor'][$type] as $service_appearance) { foreach ($service_appearance as $service_id => $service) { $c = new \Podlove\Modules\Social\Model\ContributorService(); $c->position = $position; $c->contributor_id = $contributor->id; $c->service_id = $service_id; $c->value = $service['value']; $c->title = $service['title']; $c->save(); } $position++; } } } }