| v1.34 issue with audit_logging and getFieldspec_original [message #1304] | 
			Thu, 03 April 2008 19:09   | 
		 
		
			
				
				
				
					
						  
						cpscdave
						 Messages: 20 Registered: June 2006 
						
					 | 
					Junior Member  | 
					 | 
		 
		 
	 | 
 
	
		Hi Tony,  
I have not verified if this is also in 1.35.  
 
We are running Apache 2.2.4 and PHP 5.2.0  
 
What appears to be happening is when I set $table->audit_logging = false; or 
$table->audit_logging = 0;  
 
All is fine until  
_dml_insertRecord 
... 
  $DML->fieldspec     = $this->getFieldSpec_original(); 
 
In here  
        if (!empty($this->audit_logging)) { 
        	$save_audit_logging = $this->audit_logging; 
        } // if 
 
Is not saving the audit_logging, and then it gets turned back on.  
 
I did some tests: 
if( $this->tablename   == 'history')
      {
	print "\nIN HISTORY al\n";
	print "\nal: {$this->audit_logging}al\n";
	//exit;
	
	if(!empty($this->audit_logging))
	{
	  print "is not empty would save \n";
	}
	else
	{
	  print "is empty will NOT save\n";
	}
	if(isset($this->audit_logging))
	{
	  print "is set\n";
	}
	else
	{
	  print "is not set\n";
	}
	if($this->audit_logging===false)
	{
	  print "is false\n";
	}
	else
	{
	  print "is not false\n";
	}
	exit;
      }
 
outputs when I do $table->audit_logging = false; 
is empty will NOT save 
is set 
is false 
 
outputs when I do $table->audit_logging = 0; 
is empty will NOT save 
is set 
is not false 
 
outputs when I do $table->audit_logging = true; 
is not empty would save 
is set 
is not false 
 
Prehaps the code should be changed to: 
 
  if ($this->audit_logging===false) {
        	$save_audit_logging = $this->audit_logging;
        } // if
 
 
Is there a standard for setting variables within Radicore?  
Should we be using true/false, 1/0, unset()? 
 
Thanks,  
SoftElephant
		
		
		
 |  
	| 
		
	 | 
 
 
 | 
	
		
		
			| Re: v1.34 issue with audit_logging and getFieldspec_original [message #1307 is a reply to message #1304] | 
			Fri, 04 April 2008 06:07   | 
		 
		
			
				
				
				
					
						  
						AJM
						 Messages: 2386 Registered: April 2006  Location: Surrey, UK
						
					 | 
					Senior Member  | 
					 | 
		 
		 
	 | 
 
	
		Yes, this is in fact a bug. After doing my own testing my own solution is as follows: 
 
In the getFieldSpec_original() method change both occurrences of 
if (!empty($this->audit_logging)) {
 to
if (is_bool($this->audit_logging)) { 
I shall include this fix in the next release. 
 
The only 'standard' for setting variables in Radicore is to use the correct data type otherwise the results may be unpredictable. 
 
In the case of some of the options which go into the $fieldspec array, they are switched on with: 
$this->fieldspec['column']['keyword'] = 'y';
  
and switched off with 
unset($this->fieldspec['column']['keyword']);
  
In these cases using  
$this->fieldspec['column']['keyword'] = 'n';
  
will not have any effect as it is the existence of the keyword, not its value, that is checked.
		
		
  Tony Marston 
http://www.tonymarston.net 
http://www.radicore.org
		
 |  
	| 
		
	 | 
 
 
 |