From 286d1bf1b746b49e43fd674bbc47afd25adfbedb Mon Sep 17 00:00:00 2001 From: tbrehm <t.brehm@ispconfig.org> Date: Sun, 31 Jan 2010 12:33:18 -0500 Subject: [PATCH] Fixed: FS#1053 - Syntax Error in form_list.php --- interface/lib/classes/tform.inc.php | 191 ++++++++++++++++++++++++++++++++++++++++------- 1 files changed, 163 insertions(+), 28 deletions(-) diff --git a/interface/lib/classes/tform.inc.php b/interface/lib/classes/tform.inc.php index 04104de..31916ac 100644 --- a/interface/lib/classes/tform.inc.php +++ b/interface/lib/classes/tform.inc.php @@ -131,6 +131,9 @@ $wb = array(); include_once(ISPC_ROOT_PATH.'/lib/lang/'.$_SESSION['s']['language'].'.lng'); + + if(is_array($wb)) $wb_global = $wb; + if($module == '') { $lng_file = "lib/lang/".$_SESSION["s"]["language"]."_".$this->formDef["name"].".lng"; if(!file_exists($lng_file)) $lng_file = "lib/lang/en_".$this->formDef["name"].".lng"; @@ -140,6 +143,12 @@ if(!file_exists($lng_file)) $lng_file = "../$module/lib/lang/en_".$this->formDef["name"].".lng"; include($lng_file); } + + if(is_array($wb_global)) { + $wb = array_merge($wb_global,$wb); + } + if(isset($wb_global)) unset($wb_global); + $this->wordbook = $wb; return true; @@ -428,6 +437,20 @@ } $new_record[$key] = $out; break; + + case 'DATETIME': + if (strtotime($val) !== false) { + $dt_value = $val; + } elseif ( isset($field['default']) && (strtotime($field['default']) !== false) ) { + $dt_value = $field['default']; + } else { + $dt_value = 0; + } + + $display_seconds = (isset($field['display_seconds']) && $field['display_seconds'] == true) ? true : false; + + $new_record[$key] = $this->_getDateTimeHTML($key, $dt_value, $display_seconds); + break; default: $new_record[$key] = htmlspecialchars($record[$key]); @@ -520,6 +543,13 @@ } $new_record[$key] = $out; break; + + case 'DATETIME': + $dt_value = (isset($field['default'])) ? $field['default'] : 0; + $display_seconds = (isset($field['display_seconds']) && $field['display_seconds'] == true) ? true : false; + + $new_record[$key] = $this->_getDateTimeHTML($key, $dt_value, $display_seconds); + break; default: $new_record[$key] = htmlspecialchars($field['default']); @@ -584,6 +614,18 @@ break; case 'CURRENCY': $new_record[$key] = str_replace(",",".",$record[$key]); + break; + + case 'DATETIME': + if (is_array($record[$key])) + { + $filtered_values = array_map(create_function('$item','return (int)$item;'), $record[$key]); + extract($filtered_values, EXTR_PREFIX_ALL, '_dt'); + + if ($_dt_day != 0 && $_dt_month != 0 && $_dt_year != 0) { + $new_record[$key] = date( 'Y-m-d H:i:s', mktime($_dt_hour, $_dt_minute, $_dt_second, $_dt_month, $_dt_day, $_dt_year) ); + } + } break; } @@ -667,7 +709,7 @@ } break; case 'ISEMAIL': - if(!preg_match("/^\w+[\w.-]*\w+@\w+[\w.-]*\w+\.[a-z]{2,10}$/i", $field_value)) { + if(!preg_match("/^\w+[\w.-]*\w{0,}@\w+[\w.-]*\w+\.[a-z]{2,10}$/i", $field_value)) { $errmsg = $validator['errmsg']; if(isset($this->wordbook[$errmsg])) { $this->errorMessage .= $this->wordbook[$errmsg]."<br />\r\n"; @@ -783,8 +825,10 @@ $sql_insert_key .= "`$key`, "; if($field['encryption'] == 'CRYPT') { $salt="$1$"; - for ($n=0;$n<11;$n++) { - $salt.=chr(mt_rand(64,126)); + $base64_alphabet='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + for ($n=0;$n<8;$n++) { + //$salt.=chr(mt_rand(64,126)); + $salt.=$base64_alphabet[mt_rand(0,63)]; } $salt.="$"; // $salt = substr(md5(time()),0,2); @@ -816,8 +860,10 @@ if($field['formtype'] == 'PASSWORD') { if(isset($field['encryption']) && $field['encryption'] == 'CRYPT') { $salt="$1$"; - for ($n=0;$n<11;$n++) { - $salt.=chr(mt_rand(64,126)); + $base64_alphabet='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'; + for ($n=0;$n<8;$n++) { + //$salt.=chr(mt_rand(64,126)); + $salt.=$base64_alphabet[mt_rand(0,63)]; } $salt.="$"; // $salt = substr(md5(time()),0,2); @@ -928,6 +974,9 @@ foreach( $this->formDef["tabs"] as $key => $tab) { $tab['name'] = $key; + // Translate the title of the tab + $tab['title'] = $this->lng($tab['title']); + if($tab['name'] == $active_tab) { // If module is set, then set the template path relative to the module.. @@ -935,8 +984,7 @@ // Generate the template if it does not exist yet. - // Translate the title of the tab - $tab['title'] = $this->lng($tab['title']); + if(!is_file($tab["template"])) { $app->uses('tform_tpl_generator'); @@ -984,7 +1032,11 @@ function datalogSave($action,$primary_id, $record_old, $record_new) { global $app,$conf; - + + $app->db->datalogSave($this->formDef['db_table'], $action, $this->formDef['db_table_idx'], $primary_id, $record_old, $record_new); + return true; + + /* // Add backticks for incomplete table names. if(stristr($this->formDef['db_table'],'.')) { $escape = ''; @@ -993,26 +1045,6 @@ } $this->diffrec = array(); - /* - if(is_array($record_new) && count($record_new) > 0) { - foreach($record_new as $key => $val) { - if(@$record_old[$key] != $val) { - // Record has changed - $diffrec[$key] = array('old' => @$record_old[$key], - 'new' => $val); - } - } - } elseif(is_array($record_old)) { - foreach($record_old as $key => $val) { - if($record_new[$key] != $val) { - // Record has changed - $diffrec[$key] = array('new' => $record_new[$key], - 'old' => $val); - } - } - } - $this->diffrec = $diffrec; - */ // Full diff records for ISPConfig, they have a different format then the simple diffrec $diffrec_full = array(); @@ -1065,6 +1097,7 @@ } return true; + */ } @@ -1256,7 +1289,109 @@ return $diffrec; } + + /** + * Generate HTML for DATETIME fields. + * + * @access private + * @param string $form_element Name of the form element. + * @param string $default_value Selected value for fields. + * @param bool $display_secons Include seconds selection. + * @return string HTML + */ + function _getDateTimeHTML($form_element, $default_value, $display_seconds=false) + { + $_datetime = strtotime($default_value); + $_showdate = ($_datetime === false) ? false : true; + $dselect = array('day','month','year','hour','minute'); + if ($display_seconds === true) { + $dselect[] = 'second'; + } + + $out = ''; + + foreach ($dselect as $dt_element) + { + $dt_options = array(); + $dt_space = 1; + + switch ($dt_element) { + case 'day': + for ($i = 1; $i <= 31; $i++) { + $dt_options[] = array('name' => sprintf('%02d', $i), + 'value' => sprintf('%d', $i)); + } + $selected_value = date('d', $_datetime); + break; + + case 'month': + for ($i = 1; $i <= 12; $i++) { + $dt_options[] = array('name' => strftime('%b', mktime(0, 0, 0, $i, 1, 2000)), + 'value' => strftime('%m', mktime(0, 0, 0, $i, 1, 2000))); + } + $selected_value = date('n', $_datetime); + break; + + case 'year': + $start_year = strftime("%Y"); + $years = range((int)$start_year, (int)($start_year+3)); + + foreach ($years as $year) { + $dt_options[] = array('name' => $year, + 'value' => $year); + } + $selected_value = date('Y', $_datetime); + $dt_space = 2; + break; + + case 'hour': + foreach(range(0, 23) as $hour) { + $dt_options[] = array('name' => sprintf('%02d', $hour), + 'value' => sprintf('%d', $hour)); + } + $selected_value = date('G', $_datetime); + break; + + case 'minute': + foreach(range(0, 59) as $minute) { + if (($minute % 5) == 0) { + $dt_options[] = array('name' => sprintf('%02d', $minute), + 'value' => sprintf('%d', $minute)); + } + } + $selected_value = (int)floor(date('i', $_datetime)); + break; + + case 'second': + foreach(range(0, 59) as $second) { + $dt_options[] = array('name' => sprintf('%02d', $second), + 'value' => sprintf('%d', $second)); + } + $selected_value = (int)floor(date('s', $_datetime)); + break; + } + + $out .= "<select name=\"".$form_element."[$dt_element]\" id=\"".$form_element."_$dt_element\" class=\"selectInput\" style=\"width: auto; float: none;\">"; + if (!$_showdate) { + $out .= "<option value=\"-\" selected=\"selected\">--</option>" . PHP_EOL; + } else { + $out .= "<option value=\"-\">--</option>" . PHP_EOL; + } + + foreach ($dt_options as $dt_opt) { + if ( $_showdate && ($selected_value == $dt_opt['value']) ) { + $out .= "<option value=\"{$dt_opt['value']}\" selected=\"selected\">{$dt_opt['name']}</option>" . PHP_EOL; + } else { + $out .= "<option value=\"{$dt_opt['value']}\">{$dt_opt['name']}</option>" . PHP_EOL; + } + } + + $out .= '</select>' . str_repeat(' ', $dt_space); + } + + return $out; + } } ?> \ No newline at end of file -- Gitblit v1.9.1