<?php

class KataoSubscribeForm extends BaseKataoMemberForm {
    public function configure() {
        unset($this->validatorSchema['is_anonymous'], $this->validatorSchema['katao_node_id'], $this->validatorSchema['accounting_code'], $this->validatorSchema['accounting_code_sol'], $this->validatorSchema['initial_amount'], $this->validatorSchema['is_referer'], $this->validatorSchema['is_delegate'], $this->validatorSchema['katao_member_id'], $this->validatorSchema['user_status'], $this->validatorSchema['katao_index'], $this->validatorSchema['created_at'], $this->validatorSchema['updated_at'],$this->validatorSchema['user_birthday'],$this->validatorSchema['user_situation'],$this->validatorSchema['parrain_name']);
        unset($this->widgetSchema['is_anonymous'], $this->widgetSchema['katao_node_id'], $this->widgetSchema['accounting_code'], $this->widgetSchema['accounting_code_sol'], $this->widgetSchema['initial_amount'], $this->widgetSchema['is_referer'], $this->widgetSchema['is_delegate'], $this->widgetSchema['katao_member_id'], $this->widgetSchema['user_status'], $this->widgetSchema['katao_index'], $this->widgetSchema['created_at'], $this->widgetSchema['updated_at'], $this->widgetSchema['user_birthday'], $this->widgetSchema['user_situation'], $this->widgetSchema['parrain_name']);

        $this->widgetSchema->setLabels(array(
                'first_name' => 'Prénom',
                'last_name' => 'Nom',
                ));

        $katao_member = new KataoMember();
        $katao_user = new KataoUser();

        $this->widgetSchema['user_email'] = new sfWidgetFormInput();
        $this->validatorSchema['user_email'] = new sfValidatorString(array('max_length' => 255));
        $this->widgetSchema->setLabel('user_email', 'Email');

        $this->widgetSchema['user_phone'] = new sfWidgetFormInput();
        $this->validatorSchema['user_phone'] = new sfValidatorString(array('max_length' => 255));
        $this->widgetSchema->setLabel('user_phone', 'Téléphone');

        $this->widgetSchema['user_fax'] = new sfWidgetFormInput();
        $this->validatorSchema['user_fax'] = new sfValidatorString(array('max_length' => 255, 'required' => false));
        $this->widgetSchema->setLabel('user_fax', 'Fax');

        $this->widgetSchema['user_address1'] = new sfWidgetFormInput();
        $this->validatorSchema['user_address1'] = new sfValidatorString(array('max_length' => 255));
        $this->widgetSchema->setLabel('user_address1', 'Adresse');

        $this->widgetSchema['user_address2'] = new sfWidgetFormInput();
        $this->validatorSchema['user_address2'] = new sfValidatorString(array('max_length' => 255, 'required' => false));
        $this->widgetSchema->setLabel('user_address2', 'Complément');

        $this->widgetSchema['user_zip'] = new sfWidgetFormInput();
        $this->validatorSchema['user_zip'] = new sfValidatorString(array('max_length' => 255, 'required' => false));
        $this->widgetSchema->setLabel('user_zip', 'Code postal');

        $this->widgetSchema['user_city'] = new sfWidgetFormInput();
        $this->validatorSchema['user_city'] = new sfValidatorString(array('max_length' => 255));
        $this->widgetSchema->setLabel('user_city', 'Ville');

        $this->widgetSchema['user_login'] = new sfWidgetFormInput();
        $this->validatorSchema['user_login'] = new sfValidatorString(array('max_length' => 255));
        $this->widgetSchema->setLabel('user_login', 'Login');

        $this->widgetSchema['user_password'] = new sfWidgetFormInputPassword(array(), array('autocomplete' => 'off'));
        $this->validatorSchema['user_password'] = new sfValidatorString(array('required' => false));
        $this->widgetSchema->setLabel('user_password', 'Mot de passe');
        $this->setDefault('user_password', '');

        $this->widgetSchema['user_password_confirmation'] = new sfWidgetFormInputPassword(array(), array('autocomplete' => 'off'));
        $this->validatorSchema['user_password_confirmation'] = new sfValidatorString(array('required' => false));
        $this->widgetSchema->setLabel('user_password_confirmation', 'Confirmation');
        $this->setDefault('user_password_confirmation', '');

        $this->widgetSchema['no_spam'] = new sfWidgetFormInputHidden();
        $this->setDefault('no_spam', '');

        $this->validatorSchema->setPostValidator(new sfValidatorSchemaCompare('user_password', sfValidatorSchemaCompare::EQUAL, 'user_password_confirmation'));
    }

    protected function doSave($con = null) {
        $katao_user = new KataoUser();
        $katao_user->setStatus(KataoUser::STATUS_PENDING);
        $katao_user->setEmail($this->getValue('user_email'));
        $katao_user->setPhone($this->getValue('user_phone'));
        $katao_user->setFax($this->getValue('user_fax'));
        $katao_user->setAddress1($this->getValue('user_address1'));
        $katao_user->setAddress2($this->getValue('user_address2'));
        $katao_user->setZip($this->getValue('user_zip'));
        $katao_user->setCity($this->getValue('user_city'));
        $katao_user->setLogin($this->getValue('user_login'));
        if ($this->getValue('user_password') && $this->getValue('user_password_confirmation') && $this->getValue('user_password') == $this->getValue('user_password_confirmation')) {
            $katao_user->setPassword($this->getValue('user_password'));
        }
        $katao_user->save($con);

        $this->getObject()->setKataoNodeRelatedByKataoNodeId(sfContext::getInstance()->getUser()->getActiveNode()?sfContext::getInstance()->getUser()->getActiveNode():KataoNodePeer::getDefaultOne());
        $this->getObject()->setIsMember(false);

        $return = parent::doSave($con);

        $katao_user->setKataoMember($this->getObject());
        $katao_user->save();

        return $return;
    }
}