From aa370627b211a51dc46891cfa4b6e3d2ef3e52db Mon Sep 17 00:00:00 2001
From: mcramer <m.cramer@pixcept.de>
Date: Tue, 16 Jul 2013 10:45:17 -0400
Subject: [PATCH] - Fixed FS#2924 - the month will not set automatically in the autoresponder by click now Along with this fixed some display problems with the combo boxes introduced in 3.0.5. Some fields were not correctly displayed with the predefined values if value and text of the underlying option element differ.
---
interface/lib/classes/listform.inc.php | 127 +++++++++++++++++++++++++++++++++---------
1 files changed, 100 insertions(+), 27 deletions(-)
diff --git a/interface/lib/classes/listform.inc.php b/interface/lib/classes/listform.inc.php
index 66b952e..b3a59e9 100644
--- a/interface/lib/classes/listform.inc.php
+++ b/interface/lib/classes/listform.inc.php
@@ -126,7 +126,7 @@
public function getSearchSQL($sql_where = '')
{
- global $db;
+ global $app, $db;
//* Get config variable
$list_name = $this->listDef['name'];
@@ -151,9 +151,10 @@
}
//* Store field in session
- if(isset($_REQUEST[$search_prefix.$field])){
+ if(isset($_REQUEST[$search_prefix.$field]) && !stristr($_REQUEST[$search_prefix.$field],"'")){
$_SESSION['search'][$list_name][$search_prefix.$field] = $_REQUEST[$search_prefix.$field];
- }
+ if(preg_match("/['\\\\]/", $_SESSION['search'][$list_name][$search_prefix.$field])) $_SESSION['search'][$list_name][$search_prefix.$field] = '';
+ }
if(isset($i['formtype']) && $i['formtype'] == 'SELECT'){
if(is_array($i['value'])) {
@@ -179,9 +180,10 @@
if(@is_array($this->listDef['item'])) {
foreach($this->listDef['item'] as $i) {
$field = $i['field'];
+ $table = $i['table'];
// if($_REQUEST[$search_prefix.$field] != '') $sql_where .= " $field ".$i["op"]." '".$i["prefix"].$_REQUEST[$search_prefix.$field].$i["suffix"]."' and";
if(isset($_SESSION['search'][$list_name][$search_prefix.$field]) && $_SESSION['search'][$list_name][$search_prefix.$field] != ''){
- $sql_where .= " $field ".$i['op']." '".$i['prefix'].$_SESSION['search'][$list_name][$search_prefix.$field].$i['suffix']."' and";
+ $sql_where .= " ".($table != ''? $table.'.' : $this->listDef['table'].'.')."$field ".$i['op']." '".$app->db->quote($i['prefix'].$_SESSION['search'][$list_name][$search_prefix.$field].$i['suffix'])."' and";
}
}
}
@@ -191,11 +193,16 @@
public function getPagingSQL($sql_where = '1')
{
global $app, $conf;
+
+ //* Add Global Limit from selectbox
+ if(!empty($_POST['search_limit']) AND $app->functions->intval($_POST['search_limit'])){
+ $_SESSION['search']['limit'] = $app->functions->intval($_POST['search_limit']);
+ }
//* Get Config variables
$list_name = $this->listDef['name'];
$search_prefix = $this->listDef['search_prefix'];
- $records_per_page = $this->listDef['records_per_page'];
+ $records_per_page = (empty($_SESSION['search']['limit']) ? $app->functions->intval($this->listDef['records_per_page']) : $app->functions->intval($_SESSION['search']['limit'])) ;
$table = $this->listDef['table'];
//* set PAGE to zero, if in session not set
@@ -204,14 +211,14 @@
}
//* set PAGE to worth request variable "PAGE" - ? setze page auf wert der request variablen "page"
- if(isset($_REQUEST["page"])) $_SESSION["search"][$list_name]["page"] = $_REQUEST["page"];
+ if(isset($_REQUEST["page"])) $_SESSION["search"][$list_name]["page"] = $app->functions->intval($_REQUEST["page"]);
//* PAGE to 0 set, if look for themselves ? page auf 0 setzen, wenn suche sich ge�ndert hat.
if($this->searchChanged == 1) $_SESSION['search'][$list_name]['page'] = 0;
- $sql_von = $_SESSION['search'][$list_name]['page'] * $records_per_page;
- $record_count = $app->db->queryOneRecord("SELECT count(*) AS anzahl FROM $table WHERE $sql_where");
- $pages = intval(($record_count['anzahl'] - 1) / $records_per_page);
+ $sql_von = $app->functions->intval($_SESSION['search'][$list_name]['page'] * $records_per_page);
+ $record_count = $app->db->queryOneRecord("SELECT count(*) AS anzahl FROM $table".($app->listform->listDef['additional_tables'] != ''? ','.$app->listform->listDef['additional_tables'] : '')." WHERE $sql_where");
+ $pages = $app->functions->intval(($record_count['anzahl'] - 1) / $records_per_page);
$vars['list_file'] = $_SESSION['s']['module']['name'].'/'.$this->listDef['file'];
@@ -237,21 +244,65 @@
public function getPagingHTML($vars)
{
global $app;
- $content = '<a href="'."javascript:loadContent('".$vars['list_file'].'?page=0'.$vars['page_params']."');".'">'
- .'<img src="themes/'.$_SESSION['s']['theme'].'/icons/x16/arrow_stop_180.png"></a> ';
+
+ // we want to show at max 17 page numbers (8 left, current, 8 right)
+ $show_pages_count = 17;
+
+ $show_pages = array(0); // first page
+ if($vars['pages'] > 0) $show_pages[] = $vars['pages']; // last page
+ for($p = $vars['page'] - 2; $p <= $vars['page'] + 2; $p++) { // surrounding pages
+ if($p > 0 && $p < $vars['pages']) $show_pages[] = $p;
+ }
+
+ $l_start = $vars['page'] - 13;
+ $l_start -= ($l_start % 10) + 1;
+ $h_end = $vars['page'] + 23;
+ $h_end -= ($h_end % 10) + 1;
+ for($p = $l_start; $p <= $h_end; $p += 10) { // surrounding pages
+ if($p > 0 && $p < $vars['pages'] && !in_array($p, $show_pages, true) && count($show_pages) < $show_pages_count) $show_pages[] = $p;
+ }
+
+ $l_start = $vars['page'] - 503;
+ $l_start -= ($l_start % 100) + 1;
+ $h_end = $vars['page'] + 603;
+ $h_end -= ($h_end % 100) + 1;
+ for($p = $l_start; $p <= $h_end; $p += 100) { // surrounding pages
+ if($p > 0 && $p < $vars['pages'] && !in_array($p, $show_pages, true) && count($show_pages) < $show_pages_count) $show_pages[] = $p;
+ }
+
+ $l_start = $vars['page'] - 203;
+ $l_start -= ($l_start % 25) + 1;
+ $h_end = $vars['page'] + 228;
+ $h_end -= ($h_end % 25) + 1;
+ for($p = $l_start; $p <= $h_end; $p += 25) { // surrounding pages
+ if($p > 0 && $p < $vars['pages'] && abs($p - $vars['page']) > 30 && !in_array($p, $show_pages, true) && count($show_pages) < $show_pages_count) $show_pages[] = $p;
+ }
+
+ sort($show_pages);
+ $show_pages = array_unique($show_pages);
+
//* Show Back
if(isset($vars['show_page_back']) && $vars['show_page_back'] == 1){
- $content .= '<a href="'."javascript:loadContent('".$vars['list_file'].'?page='.$vars['last_page'].$vars['page_params']."');".'">'
- .'<img src="themes/'.$_SESSION['s']['theme'].'/icons/x16/arrow_180.png"></a> ';
+ $content = '<a class="btn-page first-page" href="'."javascript:loadContent('".$vars['list_file'].'?page=0'.$vars['page_params']."');".'">'
+ .'<img src="themes/'.$_SESSION['s']['theme'].'/icons/x16/arrow_stop_180.png"></a> ';
+ $content .= '<a class="btn-page previous-page" href="'."javascript:loadContent('".$vars['list_file'].'?page='.$vars['last_page'].$vars['page_params']."');".'">'
+ .'<img src="themes/'.$_SESSION['s']['theme'].'/icons/x16/arrow_180.png"></a> ';
}
- $content .= ' '.$this->lng('page_txt').' '.$vars['next_page'].' '.$this->lng('page_of_txt').' '.$vars['max_pages'].' ';
+ $content .= ' '.$this->lng('page_txt').' ';
+ $prev = -1;
+ foreach($show_pages as $p) {
+ if($prev != -1 && $p > $prev + 1) $content .= '<span class="page-spacer">...</span>';
+ $content .= '<a class="link-page' . ($p == $vars['page'] ? ' current-page' : '') . '" href="'."javascript:loadContent('".$vars['list_file'].'?page='.$p.$vars['page_params']."');".'">'. ($p+1) .'</a>';
+ $prev = $p;
+ }
+ //.$vars['next_page'].' '.$this->lng('page_of_txt').' '.$vars['max_pages'].' ';
//* Show Next
if(isset($vars['show_page_next']) && $vars['show_page_next'] == 1){
- $content .= '<a href="'."javascript:loadContent('".$vars['list_file'].'?page='.$vars['next_page'].$vars['page_params']."');".'">'
+ $content .= '<a class="btn-page next-page" href="'."javascript:loadContent('".$vars['list_file'].'?page='.$vars['next_page'].$vars['page_params']."');".'">'
.'<img src="themes/'.$_SESSION['s']['theme'].'/icons/x16/arrow.png"></a> ';
- }
- $content .= '<a href="'."javascript:loadContent('".$vars['list_file'].'?page='.$vars['pages'].$vars['page_params']."');".'">'
+ $content .= '<a class="btn-page last-page" href="'."javascript:loadContent('".$vars['list_file'].'?page='.$vars['pages'].$vars['page_params']."');".'">'
.'<img src="themes/'.$_SESSION['s']['theme'].'/icons/x16/arrow_stop.png"></a>';
+ }
return $content;
}
@@ -281,10 +332,15 @@
public function decode($record)
{
- global $conf;
- if(is_array($record)) {
+ global $conf, $app;
+ if(is_array($record) && count($record) > 0 && is_array($this->listDef['item'])) {
foreach($this->listDef['item'] as $field){
$key = $field['field'];
+ //* Apply filter to record value.
+ if(isset($field['filters']) && is_array($field['filters'])) {
+ $app->uses('tform');
+ $record[$key] = $app->tform->filterField($key, (isset($record[$key]))?$record[$key]:'', $field['filters'], 'SHOW');
+ }
if(isset($record[$key])) {
switch ($field['datatype']){
case 'VARCHAR':
@@ -295,17 +351,27 @@
case 'DATETSTAMP':
if ($record[$key] > 0) {
// is value int?
- if (ereg("^[0-9]+[.]?[0-9]*$", $record[$key], $p)) {
+ if (preg_match("/^[0-9]+[\.]?[0-9]*$/", $record[$key], $p)) {
$record[$key] = date($this->lng('conf_format_dateshort'), $record[$key]);
} else {
$record[$key] = date($this->lng('conf_format_dateshort'), strtotime($record[$key]));
}
}
break;
+ case 'DATETIMETSTAMP':
+ if ($record[$key] > 0) {
+ // is value int?
+ if (preg_match("/^[0-9]+[\.]?[0-9]*$/", $record[$key], $p)) {
+ $record[$key] = date($this->lng('conf_format_datetime'), $record[$key]);
+ } else {
+ $record[$key] = date($this->lng('conf_format_datetime'), strtotime($record[$key]));
+ }
+ }
+ break;
case 'DATE':
if ($record[$key] > 0) {
// is value int?
- if (ereg("^[0-9]+[.]?[0-9]*$", $record[$key], $p)) {
+ if (preg_match("/^[0-9]+[\.]?[0-9]*$/", $record[$key], $p)) {
$record[$key] = date($this->lng('conf_format_dateshort'), $record[$key]);
} else {
$record[$key] = date($this->lng('conf_format_dateshort'), strtotime($record[$key]));
@@ -316,7 +382,7 @@
case 'DATETIME':
if ($record[$key] > 0) {
// is value int?
- if (ereg("^[0-9]+[.]?[0-9]*$", $record[$key], $p)) {
+ if (preg_match("/^[0-9]+[\.]?[0-9]*$/", $record[$key], $p)) {
$record[$key] = date($this->lng('conf_format_datetime'), $record[$key]);
} else {
$record[$key] = date($this->lng('conf_format_datetime'), strtotime($record[$key]));
@@ -325,7 +391,7 @@
break;
case 'INTEGER':
- $record[$key] = intval($record[$key]);
+ $record[$key] = $app->functions->intval($record[$key]);
break;
case 'DOUBLE':
@@ -333,7 +399,7 @@
break;
case 'CURRENCY':
- $record[$key] = number_format($record[$key], 2, ',', '');
+ $record[$key] = $app->functions->currency_format($record[$key]);
break;
default:
@@ -347,6 +413,7 @@
public function encode($record)
{
+ global $app;
if(is_array($record)) {
foreach($this->listDef['item'] as $field){
$key = $field['field'];
@@ -355,7 +422,7 @@
case 'VARCHAR':
case 'TEXT':
if(!is_array($record[$key])) {
- $record[$key] = mysql_real_escape_string($record[$key]);
+ $record[$key] = $app->db->quote($record[$key]);
} else {
$record[$key] = implode($this->tableDef[$key]['separator'],$record[$key]);
}
@@ -364,6 +431,12 @@
case 'DATETSTAMP':
if($record[$key] > 0) {
$record[$key] = date('Y-m-d',strtotime($record[$key]));
+ }
+ break;
+
+ case 'DATETIMETSTAMP':
+ if($record[$key] > 0) {
+ $record[$key] = date('Y-m-d H:i:s',strtotime($record[$key]));
}
break;
@@ -380,11 +453,11 @@
break;
case 'INTEGER':
- $record[$key] = intval($record[$key]);
+ $record[$key] = $app->functions->intval($record[$key]);
break;
case 'DOUBLE':
- $record[$key] = mysql_real_escape_string($record[$key]);
+ $record[$key] = $app->db->quote($record[$key]);
break;
case 'CURRENCY':
--
Gitblit v1.9.1