protected function addMemberAccountFields($page) { // create default field records $memberFields = singleton('Member')->getMemberFormFields()->dataFields(); $pageFieldNames = array(); foreach ($page->Fields() as $pageField) { $pageFieldNames[] = $pageField->MemberField; } foreach ($memberFields as $memberField) { if (!in_array($memberField->name, $pageFieldNames)) { $profileField = new MembersAccountField(); $profileField->MemberField = $memberField->name; $profileField->AccountPageID = $page->ID; $profileField->write(); } else { // remove field from $pageFieldNmes $key = array_search($memberField->name, $pageFieldNames); unset($pageFieldNames[$key]); } } // for each remaining item in $pageFieldNames delete the MemberAccountField foreach ($pageFieldNames as $name) { $toRemove = MembersAccountField::get()->filter('MemberField', $name); foreach ($toRemove as $removeField) { $removeField->delete(); } } }