Re: DOFormBuilder update-freeze Problem

From: Date: Wed, 01 Dec 2004 19:36:04 +0000
Subject: Re: DOFormBuilder update-freeze Problem
References: 1  Groups: php.pear.general 
Request: Send a blank email to pear-general+get-15954@lists.php.net to get a copy of this message
hmm does nobody have any suggestions to my problem? i figured out that it is not the problem of $form->freeze(); if i run the code without it its the same problem it must be somewhere in my DO: <?php /** * Table Definition for Ac_user */ require_once 'DB/DataObject.php'; class do_Ac_user extends DB_DataObject {
    ###START_AUTOCODE
    /* the code below is auto generated do not remove the above tag */
    var $__table = 'Ac_user';                   // table name
    var $id;                              // int(11)  not_null primary_key auto_increment
    var $kartennummer;                    // string(10)  not_null
    var $kb_id;                           // int(11)  not_null
    var $username;                        // string(50)  not_null multiple_key
    var $password;                        // string(32)  multiple_key
    var $anrede;                          // string(20)
    var $firma;                           // string(250)
    var $vorname;                         // string(50)
    var $nachname;                        // string(50)
    var $strasse;                         // string(100)
    var $plz;                             // string(20)
    var $ort;                             // string(50)
    var $land_iso3166;                    // string(2)
    var $gebdat;                          // date(10)
    var $email;                           // string(100)
    var $telefon;                         // string(30)
    var $telefax;                         // string(30)
    var $mobil;                           // string(30)
    var $personalnummer;                  // string(20)
    var $login_status;                    // int(1)  not_null
    var $quelle;                          // int(4)  not_null
    var $get_newsletter;                  // int(1)  not_null
    var $newsletter_per_post;             // int(1)  not_null
    var $einladungen_zu_veranstaltungen;    // int(1)  not_null
    var $date_added;                      // datetime(19)  not_null
    var $date_updated;                    // datetime(19)  not_null
    var $password_updated;                // datetime(19)  not_null
    var $fragebogen_updated;              // datetime(19)  not_null
    /* Static get */
    function staticGet($k,$v=NULL) { return DB_DataObject::staticGet('do_Ac_user',$k,$v); }
    /* the code above is auto generated do not remove the tag below */
    ###END_AUTOCODE
function getCustomForm($action=false, $target='_self',$formName='CustomerForm', $method='post'){ if (!$action) { $action = $_SERVER['REQUEST_URI']; } $form =& new CustomSmarty($formName, $method, $action,$target); return $form; }
    function update($do = false) {
    	if(isset($this->bitmask_kt)){
    		$bitmusterKT=$this->bitmask_kt;
    		unset($this->bitmask_kt);
    	}
    	if(isset($this->bitmask_ki)){
    		$bitmusterKI=$this->bitmask_ki;
    		unset($this->bitmask_ki);
    	}    	
    	
if (isset($this->pwd_2)) unset($this->pwd_2); if (isset($this->fr_1)) unset($this->fr_1);
        if (is_object($do) && isset($do->pwd_2))   unset($do->pwd_2);
if (is_object($do) && isset($do->fr_1)) unset($do->fr_1); require_once 'DB/DataObject/Cast.php'; switch ($this->formMode){ case "firstLogin": $this->date_updated = DB_DataObject_Cast::sql('NOW()'); $this->password_updated = DB_DataObject_Cast::sql('NOW()'); break; case "changeUserdata": $this->date_updated = DB_DataObject_Cast::sql('NOW()'); break; case "changePassword": $this->password_updated = DB_DataObject_Cast::sql('NOW()'); break; } $this->login_status=3; parent::update(); if(($this->formMode=="changeUserdata" || $this->formMode=="firstLogin" ) && $this->quelle==1){ $upd=true; if(getBitmuster($this->id,'kt_id','Ac_user_to_kt')==$bitmusterKT && getBitmuster($this->id,'ki_id','Ac_user_to_ki')==$bitmusterKI) $upd=false; if($upd)updateFragebogenChanges($this->id); }
    }
// Formularaufbau
    function preGenerateForm(&$fb) {
    	
    	$this->fb_preDefElements['password'] 	= HTML_QuickForm::createElement('password', 'password', $GLOBALS["langStr"][LANG]["password"],'');
        $this->fb_preDefElements['pwd_2'] 		= HTML_QuickForm::createElement('password', 'pwd_2', $GLOBALS["langStr"][LANG]["password_wdh"],'');
        $this->fb_preDefElements['pwd_old'] 	= HTML_QuickForm::createElement('password', 'pwd_old', $GLOBALS["langStr"][LANG]["old_password_wdh"],'');
        $this->fb_preDefElements['personalnummer'] 	= HTML_QuickForm::createElement('static', 'personalnummer', $GLOBALS["langStr"][LANG]["personalnummer"],'');
        //$this->fb_preDefElements['gebdat'] 		= HTML_QuickForm::createElement('date', 'gebdat', $GLOBALS["langStr"][LANG]["gebdat"],array('minYear'=>1900,'maxYear'=>1990,'language'=>'de')); 
    	switch ($this->formMode){
    		//////////////////////////////////////////////////////////////
    		//////////////////////////////////////////////////////////////
			//////////////////////////////////////////////////////////////    		
    		case "firstLogin": // einfacher Login !!!
// Felder anzeigen $this->fb_preDefElements['h2'] = HTML_QuickForm::createElement('image', 'h2', '../img/speichern_'.LANG.'.gif','');
    		 $ftr=array('h2','anrede','firma','vorname','nachname','strasse','plz','ort','land_iso3166',
					 'email','telefon','telefax','mobil','pwd_2','password','get_newsletter');
    			
// Felder Sortierung $pdo_2=array('anrede','firma','vorname','nachname','strasse','plz','ort', 'land_iso3166', 'email','telefon','telefax','mobil'); // Spezialfelder für jede entsprechende Quelle switch($this->quelle){ case 0: $ftr=array_merge($ftr,array('personalnummer')); $pdo=array('password','pwd_2','get_newsletter'); $pdo=array_merge($pdo,$pdo_2); $pdo=array_merge($pdo,array('personalnummer','h2')); break; case 1: $ftr=array_merge($ftr,array('newsletter_per_post','__crossLink_Ac_user_to_kt','__crossLink_Ac_user_to_ki','einladungen_zu_veranstaltungen')); $pdo=array('password','pwd_2','get_newsletter','newsletter_per_post'); $pdo=array_merge($pdo,array('__crossLink_Ac_user_to_kt','__crossLink_Ac_user_to_ki','einladungen_zu_veranstaltungen')); $pdo=array_merge($pdo,$pdo_2); $pdo=array_merge($pdo,array('h2')); break; } $this->fb_fieldsToRender=$ftr; $this->fb_preDefOrder=$pdo;
    		 $this->fb_formHeaderText=$GLOBALS["langStr"][LANG]["header_text_1"];
break;
    		//////////////////////////////////////////////////////////////
    		//////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////
    		case "changePassword":
				$this->fb_preDefElements['h2'] 	= HTML_QuickForm::createElement('image', 'h2', '../img/speichern_'.LANG.'.gif','');
    			$this->fb_formHeaderText=$GLOBALS["langStr"][LANG]["header_text_1"];
$this->fb_fieldsToRender=array('pwd_2','password','pwd_old','h2');
$this->fb_preDefOrder=array('password','pwd_2','pwd_old','h2');  		    		
    		break;
    		//////////////////////////////////////////////////////////////
    		//////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////
    		case "changeUserdata":
    			$this->fb_preDefElements['h2'] 	= HTML_QuickForm::createElement('image', 'h2', '../img/speichern_'.LANG.'.gif','');
$ftr=array('h2','anrede','firma','vorname','nachname','strasse','plz','ort','land_iso3166', 'email','telefon','telefax','mobil','get_newsletter','newsletter_per_post');
    		 $pdo=array('anrede','firma','vorname','nachname','strasse','plz','ort',
'land_iso3166', 'email','telefon','telefax','mobil');
    		
    		
		    	switch($this->quelle){
case 0: $ftr=array_merge($ftr,array('personalnummer')); $pdo=array_merge($pdo,array('personalnummer','get_newsletter','h2')); break; case 1: $ftr=array_merge($ftr,array('__crossLink_Ac_user_to_kt','__crossLink_Ac_user_to_ki','einladungen_zu_veranstaltungen','bitmask_kt','bitmask_ki')); $pdo=array_merge($pdo,array('get_newsletter','newsletter_per_post','__crossLink_Ac_user_to_kt','__crossLink_Ac_user_to_ki','einladungen_zu_veranstaltungen','h2')); break; }
    			$this->fb_fieldsToRender=$ftr;
$this->fb_preDefOrder=$pdo;
$this->fb_formHeaderText=$GLOBALS["langStr"][LANG]["header_text_2"];    		
break;
    	}
    	
    	
    	$this->fb_fieldLabels=array('anrede'						 =>$GLOBALS["langStr"][LANG]['anrede'],
'firma' =>$GLOBALS["langStr"][LANG]['firma'], 'vorname' =>$GLOBALS["langStr"][LANG]['vorname'], 'nachname' =>$GLOBALS["langStr"][LANG]['nachname'], 'strasse' =>$GLOBALS["langStr"][LANG]['strasse'], 'plz' =>$GLOBALS["langStr"][LANG]['plz'], 'ort' =>$GLOBALS["langStr"][LANG]['ort'], 'land_iso3166' =>$GLOBALS["langStr"][LANG]['land_iso3166'], 'gebdat' =>$GLOBALS["langStr"][LANG]['gebdat'], 'email' =>$GLOBALS["langStr"][LANG]['email'], 'telefon' =>$GLOBALS["langStr"][LANG]['telefon'], 'telefax' =>$GLOBALS["langStr"][LANG]['telefax'], 'mobil' =>$GLOBALS["langStr"][LANG]['mobil'], 'personalnummer' =>$GLOBALS["langStr"][LANG]['personalnummer'], 'get_newsletter' =>$GLOBALS["langStr"][LANG]['get_newsletter'],
    								'newsletter_per_post'			 =>$GLOBALS["langStr"][LANG]['newsletter_per_post'],
    								'einladungen_zu_veranstaltungen' =>$GLOBALS["langStr"][LANG]['einladungen_zu_veranstaltungen'],									
									'__crossLink_Ac_user_to_ki' =>$GLOBALS["langStr"][LANG]['__crossLink_Ac_user_to_ki'],
									'__crossLink_Ac_user_to_kt' =>$GLOBALS["langStr"][LANG]['__crossLink_Ac_user_to_kt']
); $this->fb_enumOptions = array( 'get_newsletter' => array($GLOBALS["langStr"][LANG]['yes'], $GLOBALS["langStr"][LANG]['no']), 'newsletter_per_post' => array($GLOBALS["langStr"][LANG]['per_mail'], $GLOBALS["langStr"][LANG]['per_post_1'].'<br>'.$GLOBALS["langStr"][LANG]['per_post_2']), 'einladungen_zu_veranstaltungen'=> array($GLOBALS["langStr"][LANG]['yes'], $GLOBALS["langStr"][LANG]['no']) ); } function postGenerateForm(&$form) { if($this->formMode != "changeUserdata"){ $hh =& HTML_QuickForm::createElement('header', 'hb', $GLOBALS["langStr"][LANG]['header_text_2']); $form->insertElementBefore($hh, 'anrede'); } if($this->formMode == "changeUserdata" && $this->quelle==1){ $bitmask_kt =& HTML_QuickForm::createElement('hidden', 'bitmask_kt'); $form->insertElementBefore($bitmask_kt, 'anrede'); $bitmask_ki =&HTML_QuickForm::createElement('hidden', 'bitmask_ki'); $form->insertElementBefore($bitmask_ki, 'bitmask_kt'); $form->setDefaults(array( 'bitmask_kt' => getBitmuster($this->id,'kt_id','Ac_user_to_kt'), 'bitmask_ki' => getBitmuster($this->id,'ki_id','Ac_user_to_ki') ) ); } $hb =& HTML_QuickForm::createElement('header', 'hh', $GLOBALS["langStr"][LANG]['header_text_3']); $form->insertElementBefore($hb, '__crossLink_Ac_user_to_kt'); $form->setDefaults(array("password"=>"")); $form->addRule('password',$GLOBALS["langStr"][LANG]['rules_pwd_1'],'required'); $form->addRule('password',$GLOBALS["langStr"][LANG]['rules_pwd_2'],'minlength',6); $form->addRule('password',$GLOBALS["langStr"][LANG]['rules_pwd_3'],'maxlength',30); $form->addRule(array('password', 'pwd_2'),$GLOBALS["langStr"][LANG]['rules_pwd_4'], 'compare', null, 'server'); $form->addRule('pwd_old', $GLOBALS["langStr"][LANG]['rules_pwd_5'], 'eq', 'abc', 'server'); $form->addRule('vorname', $GLOBALS["langStr"][LANG]['rules_vorname_1'],'required'); $form->addRule('vorname', $GLOBALS["langStr"][LANG]['rules_vorname_2'],'minlength', 2); $form->addRule('nachname', $GLOBALS["langStr"][LANG]['rules_nachname_1'],'required'); $form->addRule('nachname', $GLOBALS["langStr"][LANG]['rules_nachname_2'],'minlength', 2); $form->addRule('strasse', $GLOBALS["langStr"][LANG]['rules_strasse_1'],'required'); $form->addRule('strasse', $GLOBALS["langStr"][LANG]['rules_strasse_2'],'minlength', 2); $form->addRule('plz', $GLOBALS["langStr"][LANG]['rules_plz_1'],'required'); $form->addRule('plz', $GLOBALS["langStr"][LANG]['rules_plz_2'],'minlength', 5); $form->addRule('plz', $GLOBALS["langStr"][LANG]['rules_plz_3'],'maxlength', 10); $form->addRule('ort', $GLOBALS["langStr"][LANG]['rules_ort_1'],'required'); $form->addRule('ort', $GLOBALS["langStr"][LANG]['rules_ort_2'],'minlength', 2); $form->addRule('land_iso3166',$GLOBALS["langStr"][LANG]["rules_land_iso3166_1"] ,'required'); $form->addRule('land_iso3166',$GLOBALS["langStr"][LANG]["rules_land_iso3166_2"],'maxlength', 3); if($this->quelle==0){ $form->addRule('email',$GLOBALS["langStr"][LANG]["rules_email_2"],'required'); } $form->addRule('email',$GLOBALS["langStr"][LANG]["rules_email_1"],'email'); $form->applyFilter('__ALL__', 'trim'); $form->setRequiredNote($GLOBALS["langStr"][LANG]['required_note']); } // Virtuelle Felder !!! function table() {
        return array_merge(parent::table(), array(	
        											'h2' 			=> 	DB_DATAOBJECT_STR,
'h3' => DB_DATAOBJECT_STR, 'pwd_2' => DB_DATAOBJECT_STR, 'pwd_old' => DB_DATAOBJECT_STR, 'bitmask_kt' => DB_DATAOBJECT_STR, 'bitmask_ki' => DB_DATAOBJECT_STR ));
    }
    var	$fb_crossLinks = array(	array('table' => 'Ac_user_to_ki'),
array('table' => 'Ac_user_to_kt') ); var $fb_enumFields = array('get_newsletter','newsletter_per_post','einladungen_zu_veranstaltungen'); var $fb_linkElementTypes = array( 'get_newsletter' => 'radio', 'newsletter_per_post' => 'radio', 'einladungen_zu_veranstaltungen' => 'radio' ); var $fb_crossLinkSeparator=""; var $fb_createSubmit=false; //var $langStr = $GLOBALS["langStr"][LANG]; } function getBitmuster($userId,$toIdName,$tabelle){ // Funktion zum require_once("DB.php"); $db =& DB::connect($GLOBALS["dsn"]); $query="SELECT * FROM $tabelle WHERE user_id=".$userId." ORDER BY ".$toIdName; $res =& $db->query($query); $arr=array(); while($row =& $res->fetchRow(DB_FETCHMODE_ASSOC) ){ $arr[]=$row[$toIdName]; } return implode($arr,","); } function updateFragebogenChanges($userId){ // Updaten von Feld fragebogen_update require_once("DB.php"); $db =& DB::connect($GLOBALS["dsn"]); $query="UPDATE Ac_user SET fragebogen_updated=NOW() WHERE id=".$userId; $res =& $db->query($query); if (DB::isError($res)) {
	    return false;
}else{ return true; } } ?> Alexander Petri wrote:
i have a problem with my Form that has a crosslinkTable everything works fine but if i call: if($form->validate()){
    $form->process(array(&$builder,'processForm'),false);
    $form->freeze();
    $smarty->assign('userdataChanged', true);
} FB shows all changes, but not the changes in my CrosslinkTable it shows the state before update, but if i call the EditData Form again: the changes in crosslinks are saved as i prefered.


« previous php.pear.general (#15954) next »