/**
  * Get a set of all the {@link MemberProfileFields} available, automatically synced with the
  * state of the Member object.
  *
  * @return DataObjectSet
  */
 public function getProfileFields()
 {
     $set = $this->Fields();
     $fields = singleton('Member')->getMemberFormFields()->dataFields();
     $setNames = $set->map('ID', 'MemberField');
     $fieldNames = array_keys($fields);
     foreach ($set as $field) {
         if (!in_array($field->MemberField, $fieldNames)) {
             $set->remove($field);
         }
     }
     foreach ($fields as $name => $field) {
         if (in_array($name, $setNames)) {
             continue;
         }
         $profileField = new MemberProfileField();
         $profileField->MemberField = $name;
         $profileField->ProfilePageID = $this->ID;
         if (array_key_exists($name, self::$profile_field_defaults)) {
             $profileField->update(self::$profile_field_defaults[$name]);
         }
         $profileField->write();
         $set->add($profileField);
     }
     return $set;
 }