public function onConfigUpdate(FlexiFormConfig $config, DataObject $flexi) { $fields = $flexi->FlexiFormFields(); $requested_groups = (array) Controller::curr()->getRequest()->requestVar('FlexiFormMailChimpGroups'); $current_groups = array(); // remove non requested groups from field list foreach ($fields as $field) { if ($field->is_a('FlexiMailChimpInterestGroupField')) { if (in_array($field->InterestGroupID, $requested_groups)) { $current_groups[] = $field->InterestGroupID; } else { $fields->remove($field); $field->delete(); } } } // calculate groups that need to be added to field list $new_groups = array_diff($requested_groups, $current_groups); if (!empty($new_groups)) { $client = new FlexiFormMailChimpClient($flexi->FlexiFormSetting('MailChimpApiKey')->getValue()); $list_id = $flexi->FlexiFormSetting('MailChimpListID')->getValue(); $groups = $this->getInterestGroups($list_id, $client); foreach ($new_groups as $group_id) { if ($group = $groups->find('id', $group_id)) { $options = array(); foreach ($group['groups'] as $option) { // mailchimp subscribe API uses names vs. IDs... //$options[$option['id']] = $option['name']; $options[$option['name']] = $option['name']; } $field = FlexiFormUtil::CreateFlexiField('FlexiMailChimpInterestGroupField', array('Name' => $group['name'], 'InterestGroupID' => $group['id'], 'InterestGroupFormField' => $group['form_field'], 'Readonly' => true, 'Options' => $options)); $fields->add($field, array('Prompt' => $group['name'])); } } } return parent::onConfigUpdate($config, $flexi); }
public function onSuccess(FlexiForm $form, DataObject $flexi) { return $flexi->FlexiFormSetting('SuccessMessage'); }