<?php

class BandForm extends BaseBandForm
{
  public function 
configure()
  {
    
$this->embedForm('members', new BandMembersForm($this->object));
  }

  public function 
updateObjectEmbeddedForms($values$forms null)
  {
    if (
is_array($forms))
    {
      foreach (
$forms as $key => $form)
      {
        if (
$form instanceof EmbeddedBandMemberForm)
        {
          
$formValues = isset($values[$key]) ? $values[$key] : array();

          if (
EmbeddedBandMemberForm::formValuesAreBlank($formValues))
          {
            if (
$id $form->getObject()->getId())
            {
              
$this->object->unlink('Members'$id);
              
$form->getObject()->delete();
            }

            unset(
$forms[$key]);
          }
        }
      }
    }

    return 
parent::updateObjectEmbeddedForms($values$forms);
  }

  public function 
saveEmbeddedForms($con null$forms null)
  {
    if (
is_array($forms))
    {
      foreach (
$forms as $key => $form)
      {
        if (
$form instanceof EmbeddedBandMemberForm)
        {
          if (
$form->getObject()->isModified())
          {
            
$form->getObject()->Band $this->object;
          }
          else
          {
            unset(
$forms[$key]);
          }
        }
      }
    }

    return 
parent::saveEmbeddedForms($con$forms);
  }

  public function 
setNumMembers($numMembers)
  {
    
$this->embedForm('members', new BandMembersForm($this->object$numMembers));
  }

  public function 
bind(array $taintedValues null, array $taintedFiles null)
  {
    if (isset(
$taintedValues['members']) && is_array($taintedValues['members']))
    {
      
$this->setNumMembers(count($taintedValues['members']));
    }

    return 
parent::bind($taintedValues$taintedFiles);
  }
}