From 4569cae57f127afd093794310ccd290d2d9fdf36 Mon Sep 17 00:00:00 2001
From: Marius Burkard <m.burkard@pixcept.de>
Date: Wed, 20 Apr 2016 10:58:46 -0400
Subject: [PATCH] Merge branch 'stable-3.1'

---
 interface/lib/classes/listform.inc.php |   51 +++++++++++++++++++++++++++++++++++++++++----------
 1 files changed, 41 insertions(+), 10 deletions(-)

diff --git a/interface/lib/classes/listform.inc.php b/interface/lib/classes/listform.inc.php
index 8f5bd86..af6c3ff 100644
--- a/interface/lib/classes/listform.inc.php
+++ b/interface/lib/classes/listform.inc.php
@@ -199,13 +199,15 @@
 				$searchval = $_SESSION['search'][$list_name][$search_prefix.$field];
 				// IDN
 				if($searchval != ''){
-					foreach($i['filters'] as $searchval_filter) {
-						if($searchval_filter['event'] == 'SHOW') {
-							switch ($searchval_filter['type']) {
-							case 'IDNTOUTF8':
-								$searchval = $app->functions->idn_encode($searchval);
-								//echo $searchval;
-								break;
+					if(is_array($i['filters'])) {
+						foreach($i['filters'] as $searchval_filter) {
+							if($searchval_filter['event'] == 'SHOW') {
+								switch ($searchval_filter['type']) {
+								case 'IDNTOUTF8':
+									$searchval = $app->functions->idn_encode($searchval);
+									//echo $searchval;
+									break;
+								}
 							}
 						}
 					}
@@ -255,10 +257,23 @@
 						$searchval = $year.'-'.$month.'-'.$day;
 					}
 				}
+				
+				if($i['datatype'] == 'BOOLEAN' && $searchval != ''){
+					if (!function_exists('boolval')) {
+						$searchval = (bool) $searchval;
+						if($searchval === true){
+							$searchval = 'TRUE';
+						} else {
+							$searchval = 'FALSE';
+						}
+					} else {
+						$searchval = boolval($searchval)? 'TRUE' : 'FALSE';
+					}
+				}
 
 				// if($_REQUEST[$search_prefix.$field] != '') $sql_where .= " $field ".$i["op"]." '".$i["prefix"].$_REQUEST[$search_prefix.$field].$i["suffix"]."' and";
 				if(isset($searchval) && $searchval != ''){
-					$sql_where .= " ".($table != ''? $table.'.' : $this->listDef['table'].'.')."$field ".$i['op']." '".$app->db->quote($i['prefix'].$searchval.$i['suffix'])."' and";
+					$sql_where .= " ".($table != ''? $table.'.' : $this->listDef['table'].'.')."$field ".$i['op']." ".($i['datatype'] == 'BOOLEAN'? "" : "'").$app->db->quote($i['prefix'].$searchval.$i['suffix']).($i['datatype'] == 'BOOLEAN'? "" : "'")." and";
 				}
 			}
 		}
@@ -382,7 +397,7 @@
 		if(isset($vars['show_page_back']) && $vars['show_page_back'] == 1){
 			$content .= '<li><a href="#" data-load-content="'.$vars['list_file'].'?page=0'.$vars['page_params'].'" aria-label="First">
 			<span aria-hidden="true">&laquo;</span></a></li>';
-			$content .= '<li><a href="#" data-load-content='.$vars['list_file'].'?page='.$vars['last_page'].$vars['page_params'].'" aria-label="Previous">
+			$content .= '<li><a href="#" data-load-content="'.$vars['list_file'].'?page='.$vars['last_page'].$vars['page_params'].'" aria-label="Previous">
 			<span aria-hidden="true">&lsaquo;</span></a></li>';
 		}
 		$prev = -1;
@@ -499,6 +514,14 @@
 					case 'CURRENCY':
 						$record[$key] = $app->functions->currency_format($record[$key]);
 						break;
+						
+					case 'BOOLEAN':
+						if (!function_exists('boolval')) {
+							$record[$key] = (bool) $record[$key];
+						} else {
+							$record[$key] = boolval($record[$key]);
+						}
+						break;
 
 					default:
 						$record[$key] = htmlentities(stripslashes($record[$key]), ENT_QUOTES, $conf["html_content_encoding"]);
@@ -540,7 +563,7 @@
 					break;
 
 				case 'DATE':
-					if($record[$key] != '' && $record[$key] != '0000-00-00') {
+					if($record[$key] != '' && !is_null($record[$key]) && $record[$key] != '0000-00-00') {
 						$record[$key] = $record[$key];
 					}
 					break;
@@ -562,6 +585,14 @@
 				case 'CURRENCY':
 					$record[$key] = str_replace(',', '.', $record[$key]);
 					break;
+				
+				case 'BOOLEAN':
+					if (!function_exists('boolval')) {
+						$record[$key] = (bool) $record[$key];
+					} else {
+						$record[$key] = boolval($record[$key]);
+					}
+					break;
 				}
 			}
 		}

--
Gitblit v1.9.1