Re: DOFormBuilder update-freeze Problem
| From: | Alexander Petri | 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.