Changeset 661
- Timestamp:
- 11/27/07 23:14:35 (1 year ago)
- Files:
-
- trunk/lib/jelix-scripts/commands/createdao.cmd.php (modified) (1 diff)
- trunk/lib/jelix-scripts/commands/createdao.cmd.php (modified) (1 diff)
- trunk/lib/jelix-scripts/commands/createform.cmd.php (modified) (1 diff)
- trunk/lib/jelix-scripts/commands/createform.cmd.php (modified) (1 diff)
- trunk/lib/jelix/dao/jDaoFactoryBase.class.php (modified) (2 diffs)
- trunk/lib/jelix/dao/jDaoFactoryBase.class.php (modified) (2 diffs)
- trunk/lib/jelix/dao/jDaoGenerator.class.php (modified) (5 diffs)
- trunk/lib/jelix/dao/jDaoGenerator.class.php (modified) (5 diffs)
- trunk/lib/jelix/dao/jDaoProperty.class.php (modified) (3 diffs)
- trunk/lib/jelix/dao/jDaoProperty.class.php (modified) (3 diffs)
- trunk/lib/jelix/forms/jFormsBase.class.php (modified) (5 diffs)
- trunk/lib/jelix/forms/jFormsBase.class.php (modified) (5 diffs)
- trunk/lib/jelix/plugins/db/pgsql/pgsql.daobuilder.php (modified) (1 diff)
- trunk/lib/jelix/plugins/db/pgsql/pgsql.daobuilder.php (modified) (1 diff)
- trunk/testapp/install/install.mysql.sql (modified) (1 diff)
- trunk/testapp/install/install.mysql.sql (modified) (1 diff)
- trunk/testapp/install/install.pgsql.sql (modified) (1 diff)
- trunk/testapp/install/install.pgsql.sql (modified) (1 diff)
- trunk/testapp/modules/testapp/daos/products.dao.xml (modified) (1 diff)
- trunk/testapp/modules/testapp/daos/products.dao.xml (modified) (1 diff)
- trunk/testapp/modules/testapp/forms/products.form.xml (modified) (1 diff)
- trunk/testapp/modules/testapp/forms/products.form.xml (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/lib/jelix-scripts/commands/createdao.cmd.php
r640 r661 123 123 $type='time'; 124 124 break; 125 case 'bool': 126 case 'boolean': 127 $type='boolean'; 128 break; 125 129 default: 126 130 $type=''; trunk/lib/jelix-scripts/commands/createdao.cmd.php
r640 r661 123 123 $type='time'; 124 124 break; 125 case 'bool': 126 case 'boolean': 127 $type='boolean'; 128 break; 125 129 default: 126 130 $type=''; trunk/lib/jelix-scripts/commands/createform.cmd.php
r650 r661 126 126 $tag='textarea'; 127 127 break; 128 case 'boolean': 129 $tag='checkbox'; 130 break; 128 131 } 129 132 if($datatype != '') trunk/lib/jelix-scripts/commands/createform.cmd.php
r650 r661 126 126 $tag='textarea'; 127 127 break; 128 case 'boolean': 129 $tag='checkbox'; 130 break; 128 131 } 129 132 if($datatype != '') trunk/lib/jelix/dao/jDaoFactoryBase.class.php
r654 r661 78 78 protected $_deleteByAfterEvent = false; 79 79 80 protected $trueValue = 1; 81 protected $falseValue = 0; 80 82 /** 81 83 * @param jDbConnection $conn the database connection … … 414 416 } 415 417 break; 418 case 'boolean': 419 if($value === null) 420 $value = 'NULL'; 421 elseif ($value === true|| strtolower($value)=='true'|| $value =='1') 422 $value = $this->trueValue; 423 else 424 $value = $this->falseValue; 425 break; 416 426 default: 417 427 $value = $this->_conn->quote ($value); trunk/lib/jelix/dao/jDaoFactoryBase.class.php
r654 r661 78 78 protected $_deleteByAfterEvent = false; 79 79 80 protected $trueValue = 1; 81 protected $falseValue = 0; 80 82 /** 81 83 * @param jDbConnection $conn the database connection … … 414 416 } 415 417 break; 418 case 'boolean': 419 if($value === null) 420 $value = 'NULL'; 421 elseif ($value === true|| strtolower($value)=='true'|| $value =='1') 422 $value = $this->trueValue; 423 else 424 $value = $this->falseValue; 425 break; 416 426 default: 417 427 $value = $this->_conn->quote ($value); trunk/lib/jelix/dao/jDaoGenerator.class.php
r660 r661 50 50 protected $aliasWord = ' AS '; 51 51 52 protected $trueValue = 1; 53 protected $falseValue = 0; 54 52 55 /** 53 56 * constructor … … 115 118 $src[] = ' protected $_DaoRecordClassName=\''.$this->_DaoRecordClassName.'\';'; 116 119 $src[] = ' protected $_daoSelector = \''.jDaoCompiler::$daoId.'\';'; 120 121 if($this->trueValue != 1){ 122 $src[]=' protected $trueValue ='.var_export($this->trueValue,true).';'; 123 $src[]=' protected $falseValue ='.var_export($this->falseValue,true).';'; 124 } 117 125 118 126 if($this->_datasParser->hasEvent('deletebefore') || $this->_datasParser->hasEvent('delete')) … … 827 835 return intval($value); 828 836 break; 837 case 'boolean': 838 return $this->getBooleanValue($value); 839 break; 829 840 default: 830 841 if(strpos($value,"'") !== false){ … … 879 890 $expr=$forCondition.'(is_numeric ('.$expr.') ? '.$expr.' : intval('.$expr.'))'; 880 891 break; 892 case 'boolean': 893 if($checknull){ 894 $expr= '('.$expr.' === null ? \''.$opnull.'NULL\' : '.$forCondition.'('.$expr.'?\''.$this->trueValue.'\':\''.$this->falseValue.'\'))'; 895 }else{ 896 $expr= $forCondition.'('.$expr.'?\''.$this->trueValue.'\':\''.$this->falseValue.'\')'; 897 } 898 break; 881 899 default: 882 900 if($checknull){ … … 896 914 return ' $record->'.$pkai->name.'= $this->_conn->lastInsertId();'; 897 915 } 916 917 protected function getBooleanValue($value){ 918 return (strtolower($value)=='true'|| $value =='1'|| $value=='t'?$this->trueValue:$this->falseValue); 919 } 920 898 921 899 922 } trunk/lib/jelix/dao/jDaoGenerator.class.php
r660 r661 50 50 protected $aliasWord = ' AS '; 51 51 52 protected $trueValue = 1; 53 protected $falseValue = 0; 54 52 55 /** 53 56 * constructor … … 115 118 $src[] = ' protected $_DaoRecordClassName=\''.$this->_DaoRecordClassName.'\';'; 116 119 $src[] = ' protected $_daoSelector = \''.jDaoCompiler::$daoId.'\';'; 120 121 if($this->trueValue != 1){ 122 $src[]=' protected $trueValue ='.var_export($this->trueValue,true).';'; 123 $src[]=' protected $falseValue ='.var_export($this->falseValue,true).';'; 124 } 117 125 118 126 if($this->_datasParser->hasEvent('deletebefore') || $this->_datasParser->hasEvent('delete')) … … 827 835 return intval($value); 828 836 break; 837 case 'boolean': 838 return $this->getBooleanValue($value); 839 break; 829 840 default: 830 841 if(strpos($value,"'") !== false){ … … 879 890 $expr=$forCondition.'(is_numeric ('.$expr.') ? '.$expr.' : intval('.$expr.'))'; 880 891 break; 892 case 'boolean': 893 if($checknull){ 894 $expr= '('.$expr.' === null ? \''.$opnull.'NULL\' : '.$forCondition.'('.$expr.'?\''.$this->trueValue.'\':\''.$this->falseValue.'\'))'; 895 }else{ 896 $expr= $forCondition.'('.$expr.'?\''.$this->trueValue.'\':\''.$this->falseValue.'\')'; 897 } 898 break; 881 899 default: 882 900 if($checknull){ … … 896 914 return ' $record->'.$pkai->name.'= $this->_conn->lastInsertId();'; 897 915 } 916 917 protected function getBooleanValue($value){ 918 return (strtolower($value)=='true'|| $value =='1'|| $value=='t'?$this->trueValue:$this->falseValue); 919 } 920 898 921 899 922 } trunk/lib/jelix/dao/jDaoProperty.class.php
r660 r661 84 84 */ 85 85 function __construct ($aParams, $def){ 86 $needed = array('name', 'fieldname', 'table', 'datatype', 'required', 'minlength',87 'maxlength', 'regexp', 'sequence', 'default');86 $needed = array('name', 'fieldname', 'table', 'datatype', 'required', 87 'minlength', 'maxlength', 'regexp', 'sequence', 'default'); 88 88 89 89 $params = $def->getAttr($aParams, $needed); … … 118 118 $params['datatype']=trim(strtolower($params['datatype'])); 119 119 120 if (!in_array ($params['datatype'], array ('autoincrement', 'bigautoincrement', 'int', 'datetime', 'time', 121 'integer', 'varchar', 'string', 'text', 'varchardate', 'date', 'numeric', 'double', 'float'))){ 122 throw new jDaoXmlException ('wrong.attr', array($params['datatype'], $this->fieldName,'property')); 120 if (!in_array ($params['datatype'], 121 array ('autoincrement', 'bigautoincrement', 'int', 122 'datetime', 'time', 'integer', 'varchar', 'string', 123 'text', 'varchardate', 'date', 'numeric', 'double', 124 'float', 'boolean'))){ 125 throw new jDaoXmlException ('wrong.attr', array($params['datatype'], 126 $this->fieldName, 127 'property')); 123 128 } 124 129 $this->datatype = strtolower($params['datatype']); 125 $this->needsQuotes = in_array ($params['datatype'], array ('string', 'varchar', 'text', 'date', 'datetime', 'time')); 130 $this->needsQuotes = in_array ($params['datatype'], 131 array ('string', 'varchar', 'text', 'date', 'datetime', 'time')); 126 132 127 133 $this->isPK = in_array($this->fieldName, $tables[$this->table]['pk']); … … 151 157 case 'float': 152 158 $this->defaultValue = doubleval($params['default']); 159 break; 160 case 'boolean': 161 $v = $params['default']; 162 $this->defaultValue = ($v =='1'|| $v=='t'|| strtolower($v) =='true'); 153 163 break; 154 164 default: trunk/lib/jelix/dao/jDaoProperty.class.php
r660 r661 84 84 */ 85 85 function __construct ($aParams, $def){ 86 $needed = array('name', 'fieldname', 'table', 'datatype', 'required', 'minlength',87 'maxlength', 'regexp', 'sequence', 'default');86 $needed = array('name', 'fieldname', 'table', 'datatype', 'required', 87 'minlength', 'maxlength', 'regexp', 'sequence', 'default'); 88 88 89 89 $params = $def->getAttr($aParams, $needed); … … 118 118 $params['datatype']=trim(strtolower($params['datatype'])); 119 119 120 if (!in_array ($params['datatype'], array ('autoincrement', 'bigautoincrement', 'int', 'datetime', 'time', 121 'integer', 'varchar', 'string', 'text', 'varchardate', 'date', 'numeric', 'double', 'float'))){ 122 throw new jDaoXmlException ('wrong.attr', array($params['datatype'], $this->fieldName,'property')); 120 if (!in_array ($params['datatype'], 121 array ('autoincrement', 'bigautoincrement', 'int', 122 'datetime', 'time', 'integer', 'varchar', 'string', 123 'text', 'varchardate', 'date', 'numeric', 'double', 124 'float', 'boolean'))){ 125 throw new jDaoXmlException ('wrong.attr', array($params['datatype'], 126 $this->fieldName, 127 'property')); 123 128 } 124 129 $this->datatype = strtolower($params['datatype']); 125 $this->needsQuotes = in_array ($params['datatype'], array ('string', 'varchar', 'text', 'date', 'datetime', 'time')); 130 $this->needsQuotes = in_array ($params['datatype'], 131 array ('string', 'varchar', 'text', 'date', 'datetime', 'time')); 126 132 127 133 $this->isPK = in_array($this->fieldName, $tables[$this->table]['pk']); … … 151 157 case 'float': 152 158 $this->defaultValue = doubleval($params['default']); 159 break; 160 case 'boolean': 161 $v = $params['default']; 162 $this->defaultValue = ($v =='1'|| $v=='t'|| strtolower($v) =='true'); 153 163 break; 154 164 default: trunk/lib/jelix/forms/jFormsBase.class.php
r660 r661 150 150 $daorec = $dao->get($key); 151 151 if(!$daorec) { 152 if(is_array($key)) $key = var_export($key,true); 153 throw new jExceptionForms('jelix~formserr.bad.formid.for.dao', array($daoSelector, $key, $this->_sel)); 152 if(is_array($key)) 153 $key = var_export($key,true); 154 throw new jExceptionForms('jelix~formserr.bad.formid.for.dao', 155 array($daoSelector, $key, $this->_sel)); 154 156 } 155 157 … … 157 159 foreach($this->_controls as $name=>$ctrl){ 158 160 if(isset($prop[$name])) { 159 if($ctrl->datatype instanceof jDatatypeLocaleDateTime && $prop[$name]['datatype'] == 'datetime') { 161 if($ctrl->datatype instanceof jDatatypeLocaleDateTime 162 && $prop[$name]['datatype'] == 'datetime') { 160 163 if($daorec->$name != '') { 161 164 $dt = new jDateTime(); … … 165 168 $this->_container->datas[$name] =''; 166 169 } 167 }elseif($ctrl->datatype instanceof jDatatypeLocaleDate && $prop[$name]['datatype'] == 'date') { 170 }elseif($ctrl->datatype instanceof jDatatypeLocaleDate 171 && $prop[$name]['datatype'] == 'date') { 168 172 if($daorec->$name != '') { 169 173 $dt = new jDateTime(); … … 173 177 $this->_container->datas[$name] =''; 174 178 } 179 }elseif($ctrl->type=='checkbox' && $prop[$name]['datatype'] == 'boolean') { 180 if($daorec->$name == 'TRUE'|| $daorec->$name == 't'|| $daorec->$name == '1'||$daorec->$name == true){ 181 $this->_container->datas[$name] = $ctrl->valueOnCheck; 182 }else { 183 $this->_container->datas[$name] = $ctrl->valueOnUncheck; 184 } 175 185 }else{ 176 186 $this->_container->datas[$name] = $daorec->$name; … … 223 233 $daorec->$name = null; 224 234 }else if($daorec->$name == '' && $prop[$name]['defaultValue'] !== null 225 && in_array($prop[$name]['datatype'], array('int','integer','double','float'))) { 235 && in_array($prop[$name]['datatype'], 236 array('int','integer','double','float'))) { 226 237 $daorec->$name = $prop[$name]['defaultValue']; 227 }else if($ctrl->datatype instanceof jDatatypeLocaleDateTime && $prop[$name]['datatype'] == 'datetime') { 238 239 }else if( $prop[$name]['datatype'] == 'boolean'){ 240 $daorec->$name = ($daorec->$name == '1'|| $daorec->$name == 'true' 241 || $daorec->$name == 't'); 242 243 }else if($ctrl->datatype instanceof jDatatypeLocaleDateTime 244 && $prop[$name]['datatype'] == 'datetime') { 228 245 $dt = new jDateTime(); 229 246 $dt->setFromString($daorec->$name, jDateTime::LANG_DTFORMAT); 230 247 $daorec->$name = $dt->toString(jDateTime::DB_DTFORMAT); 231 }elseif($ctrl->datatype instanceof jDatatypeLocaleDate && $prop[$name]['datatype'] == 'date') { 248 249 }elseif($ctrl->datatype instanceof jDatatypeLocaleDate 250 && $prop[$name]['datatype'] == 'date') { 232 251 $dt = new jDateTime(); 233 252 $dt->setFromString($daorec->$name, jDateTime::LANG_DFORMAT); trunk/lib/jelix/forms/jFormsBase.class.php
r660 r661 150 150 $daorec = $dao->get($key); 151 151 if(!$daorec) { 152 if(is_array($key)) $key = var_export($key,true); 153 throw new jExceptionForms('jelix~formserr.bad.formid.for.dao', array($daoSelector, $key, $this->_sel)); 152 if(is_array($key)) 153 $key = var_export($key,true); 154 throw new jExceptionForms('jelix~formserr.bad.formid.for.dao', 155 array($daoSelector, $key, $this->_sel)); 154 156 } 155 157 … … 157 159 foreach($this->_controls as $name=>$ctrl){ 158 160 if(isset($prop[$name])) { 159 if($ctrl->datatype instanceof jDatatypeLocaleDateTime && $prop[$name]['datatype'] == 'datetime') { 161 if($ctrl->datatype instanceof jDatatypeLocaleDateTime 162 && $prop[$name]['datatype'] == 'datetime') { 160 163 if($daorec->$name != '') { 161 164 $dt = new jDateTime(); … … 165 168 $this->_container->datas[$name] =''; 166 169 } 167 }elseif($ctrl->datatype instanceof jDatatypeLocaleDate && $prop[$name]['datatype'] == 'date') { 170 }elseif($ctrl->datatype instanceof jDatatypeLocaleDate 171 && $prop[$name]['datatype'] == 'date') { 168 172 if($daorec->$name != '') { 169 173 $dt = new jDateTime(); … … 173 177 $this->_container->datas[$name] =''; 174 178 } 179 }elseif($ctrl->type=='checkbox' && $prop[$name]['datatype'] == 'boolean') { 180 if($daorec->$name == 'TRUE'|| $daorec->$name == 't'|| $daorec->$name == '1'||$daorec->$name == true){ 181 $this->_container->datas[$name] = $ctrl->valueOnCheck; 182 }else { 183 $this->_container->datas[$name] = $ctrl->valueOnUncheck; 184 } 175 185 }else{ 176 186 $this->_container->datas[$name] = $daorec->$name; … … 223 233 $daorec->$name = null; 224 234 }else if($daorec->$name == '' && $prop[$name]['defaultValue'] !== null 225 && in_array($prop[$name]['datatype'], array('int','integer','double','float'))) { 235 && in_array($prop[$name]['datatype'], 236 array('int','integer','double','float'))) { 226 237 $daorec->$name = $prop[$name]['defaultValue']; 227 }else if($ctrl->datatype instanceof jDatatypeLocaleDateTime && $prop[$name]['datatype'] == 'datetime') { 238 239 }else if( $prop[$name]['datatype'] == 'boolean'){ 240 $daorec->$name = ($daorec->$name == '1'|| $daorec->$name == 'true' 241 || $daorec->$name == 't'); 242 243 }else if($ctrl->datatype instanceof jDatatypeLocaleDateTime 244 && $prop[$name]['datatype'] == 'datetime') { 228 245 $dt = new jDateTime(); 229 246 $dt->setFromString($daorec->$name, jDateTime::LANG_DTFORMAT); 230 247 $daorec->$name = $dt->toString(jDateTime::DB_DTFORMAT); 231 }elseif($ctrl->datatype instanceof jDatatypeLocaleDate && $prop[$name]['datatype'] == 'date') { 248 249 }elseif($ctrl->datatype instanceof jDatatypeLocaleDate 250 && $prop[$name]['datatype'] == 'date') { 232 251 $dt = new jDateTime(); 233 252 $dt->setFromString($daorec->$name, jDateTime::LANG_DFORMAT); trunk/lib/jelix/plugins/db/pgsql/pgsql.daobuilder.php
r631 r661 18 18 19 19 protected $propertiesListForInsert = 'PrimaryFieldsExcludeAutoIncrement'; 20 20 21 protected $trueValue = 'TRUE'; 22 23 protected $falseValue = 'FALSE'; 24 21 25 function __construct($factoryClassName, $recordClassName, $daoDefinition){ 22 26 parent::__construct($factoryClassName, $recordClassName, $daoDefinition); trunk/lib/jelix/plugins/db/pgsql/pgsql.daobuilder.php
r631 r661 18 18 19 19 protected $propertiesListForInsert = 'PrimaryFieldsExcludeAutoIncrement'; 20 20 21 protected $trueValue = 'TRUE'; 22 23 protected $falseValue = 'FALSE'; 24 21 25 function __construct($factoryClassName, $recordClassName, $daoDefinition){ 22 26 parent::__construct($factoryClassName, $recordClassName, $daoDefinition); trunk/testapp/install/install.mysql.sql
r639 r661 146 146 `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , 147 147 `name` VARCHAR( 150 ) NOT NULL , 148 `price` FLOAT default '0' 148 `price` FLOAT default '0', 149 `promo` BOOL NOT NULL 149 150 ) TYPE = MYISAM ; 150 151 trunk/testapp/install/install.mysql.sql
r639 r661 146 146 `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY , 147 147 `name` VARCHAR( 150 ) NOT NULL , 148 `price` FLOAT default '0' 148 `price` FLOAT default '0', 149 `promo` BOOL NOT NULL 149 150 ) TYPE = MYISAM ; 150 151 trunk/testapp/install/install.pgsql.sql
r639 r661 6 6 id integer NOT NULL, 7 7 name character varying(150) NOT NULL, 8 price real DEFAULT 0 8 price real DEFAULT 0, 9 promo boolean NOT NULL 9 10 ); 10 11 trunk/testapp/install/install.pgsql.sql
r639 r661 6 6 id integer NOT NULL, 7 7 name character varying(150) NOT NULL, 8 price real DEFAULT 0 8 price real DEFAULT 0, 9 promo boolean NOT NULL 9 10 ); 10 11 trunk/testapp/modules/testapp/daos/products.dao.xml
r576 r661 8 8 <property name="name" fieldname="name" datatype="string" required="true"/> 9 9 <property name="price" fieldname="price" datatype="float"/> 10 <property name="promo" fieldname="promo" datatype="boolean"/> 10 11 </record> 11 12 </dao> trunk/testapp/modules/testapp/daos/products.dao.xml
r576 r661 8 8 <property name="name" fieldname="name" datatype="string" required="true"/> 9 9 <property name="price" fieldname="price" datatype="float"/> 10 <property name="promo" fieldname="promo" datatype="boolean"/> 10 11 </record> 11 12 </dao> trunk/testapp/modules/testapp/forms/products.form.xml
r641 r661 9 9 <label>Price</label> 10 10 </input> 11 <checkbox ref="promo"> 12 <label>Promotion</label> 13 </checkbox> 14 11 15 12 16 <submit ref="valid"> trunk/testapp/modules/testapp/forms/products.form.xml
r641 r661 9 9 <label>Price</label> 10 10 </input> 11 <checkbox ref="promo"> 12 <label>Promotion</label> 13 </checkbox> 14 11 15 12 16 <submit ref="valid">
