| version 1.14, 2002/10/17 21:06:46 |
version 1.15, 2002/10/18 20:58:11 |
|
|
| * http://www.platon.sk/projects/phpMyEdit/ |
* http://www.platon.sk/projects/phpMyEdit/ |
| */ |
*/ |
| |
|
| /* $Platon: phpWebFileManager/index.php,v 1.32 2002/10/16 21:19:20 nepto Exp $ */ |
/* $Platon: phpMyEdit/phpMyEdit.class.php,v 1.14 2002/10/17 21:06:46 nepto Exp $ */ |
| |
|
| /* phpMyEdit intro {{{ */ |
/* phpMyEdit intro {{{ */ |
| /* |
/* |
| Line 101 if (@require_once dirname(__FILE__).'/ti |
|
| Line 101 if (@require_once dirname(__FILE__).'/ti |
|
| $phpMyEdit_timer = new timerClass(); |
$phpMyEdit_timer = new timerClass(); |
| } |
} |
| |
|
| #function debug_var($name,$val) /* {{{ */ |
|
| #{ |
|
| # if (is_array($val)) { |
|
| # echo "<pre>$name\n"; |
|
| # print_r($val); |
|
| # echo "</pre>\n"; |
|
| # } else { |
|
| # echo "$name::$val::<br>\n"; |
|
| # } |
|
| #} /* }}} */ |
|
| |
|
| if (! function_exists('array_search')) { /* {{{ */ |
if (! function_exists('array_search')) { /* {{{ */ |
| function array_search($needle, $haystack) |
function array_search($needle, $haystack) |
| { |
{ |
|
|
| |
|
| var $logtable; // name of optional logtable |
var $logtable; // name of optional logtable |
| var $navigation; // navigation style |
var $navigation; // navigation style |
| |
|
| |
function debug_var($name, $val) /* {{{ */ |
| |
{ |
| |
if (is_array($val) || is_object($val)) { |
| |
echo "<pre>$name\n"; |
| |
ob_start(); |
| |
//print_r($val); |
| |
var_dump($val); |
| |
$content = ob_get_contents(); |
| |
ob_end_clean(); |
| |
echo htmlspecialchars($content); |
| |
echo "</pre>\n"; |
| |
} else { |
| |
echo 'debug_var()::<i>'.htmlspecialchars($name).'</i>::<b>' |
| |
.htmlspecialchars($val).'</b>::'."<br>\n"; |
| |
} |
| |
} /* }}} */ |
| |
|
| function myquery($qry, $line = 0, $debug = 0) /* {{{ */ |
function myquery($qry, $line = 0, $debug = 0) /* {{{ */ |
| { |
{ |
|
|
| $mc = $this->web2plain($$lc); // get the comparison operator for numeric/date types |
$mc = $this->web2plain($$lc); // get the comparison operator for numeric/date types |
| $type = $this->fdd[$k]['type']; |
$type = $this->fdd[$k]['type']; |
| |
|
| if ($m != '') { |
if ($m == '') { |
| if (is_array($m)) { // multiple selection has been used |
continue; |
| if (!in_array('*',$m)) { // one '*' in a multiple selection is all you need |
} |
| $qf_op = ''; |
if (is_array($m)) { // multiple selection has been used |
| foreach (array_keys($m) as $key) { |
if (!in_array('*',$m)) { // one '*' in a multiple selection is all you need |
| if ($qf_op == '') { |
$qf_op = ''; |
| $qf_op = 'IN'; |
foreach (array_keys($m) as $key) { |
| $qf_val = "'".addslashes($m[$key])."'"; |
if ($qf_op == '') { |
| $afilter =" IN ('".addslashes($m[$key])."'"; |
$qf_op = 'IN'; |
| } else { |
$qf_val = "'".addslashes($m[$key])."'"; |
| $afilter = $afilter.",'".addslashes($m[$key])."'"; |
$afilter =" IN ('".addslashes($m[$key])."'"; |
| $qf_val .= ",'".addslashes($m[$key])."'"; |
} else { |
| } |
$afilter = $afilter.",'".addslashes($m[$key])."'"; |
| |
$qf_val .= ",'".addslashes($m[$key])."'"; |
| } |
} |
| $afilter = $afilter.')'; |
|
| // XXX: $dont_desc and $dont_cols hack |
|
| $dont_desc = isset($this->fdd[$k]['values']['description']); |
|
| $dont_cols = isset($this->fdd[$k]['values']['column']); |
|
| $qo[$this->fqn($k, false, $dont_desc, $dont_cols)] = |
|
| array( 'oper' => $qf_op, 'value' => '('.$qf_val.')'); |
|
| } |
} |
| } else { |
$afilter = $afilter.')'; |
| $afilter = $m; |
// XXX: $dont_desc and $dont_cols hack |
| if ($afilter != '*') { |
$dont_desc = isset($this->fdd[$k]['values']['description']); |
| /* XXX: This is ugly fqn() hack. We must pass third |
$dont_cols = isset($this->fdd[$k]['values']['column']); |
| $dont_desc parameter to fqn() method, as far as we |
$qo[$this->fqn($k, false, $dont_desc, $dont_cols)] = |
| want to return not description column, but ID one. */ |
array( 'oper' => $qf_op, 'value' => '('.$qf_val.')'); |
| if ($this->fdd[$k]['values']['description']) { |
} |
| // DEBUG |
} else { |
| // echo htmlspecialchars(' k = '.$k.' | fqn($k) = '.$this->fqn($k, false, true)); |
$afilter = $m; |
| $qo[$this->fqn($k, false, true, true)] = |
if ($afilter != '*') { |
| array('oper' => '=', 'value' => "'".$afilter."'"); |
/* XXX: This is ugly fqn() hack. We must pass third |
| } elseif ($this->fdd[$k]['values']['column']) { |
$dont_desc parameter to fqn() method, as far as we |
| $qo[$this->fqn($k, false, true, true)] = |
want to return not description column, but ID one. */ |
| array('oper' => '=', 'value' => "'".$afilter."'"); |
if ($this->fdd[$k]['values']['description']) { |
| } elseif ($this->col_is_string($k)) { |
// DEBUG |
| // massage the filter for a string comparison |
// echo htmlspecialchars(' k = '.$k.' | fqn($k) = '.$this->fqn($k, false, true)); |
| if (($afilter != '') AND ($afilter != '*')) { |
$qo[$this->fqn($k, false, true, true)] = |
| $afilter = addslashes(addslashes('%' |
array('oper' => '=', 'value' => "'".$afilter."'"); |
| .str_replace('*', '%', $afilter).'%')); |
} elseif ($this->fdd[$k]['values']['column']) { |
| $qo[$this->fqn($k)] = |
$qo[$this->fqn($k, false, true, true)] = |
| array('oper' => 'like', 'value' => "'".$afilter."'"); |
array('oper' => '=', 'value' => "'".$afilter."'"); |
| } |
} elseif ($this->col_is_string($k)) { |
| } elseif ($this->col_is_number($k) && ($$lc != '')) { |
// massage the filter for a string comparison |
| if ($$lc != '') { |
if (($afilter != '') AND ($afilter != '*')) { |
| $qo[$this->fqn($k)] = |
$afilter = addslashes(addslashes('%' |
| array('oper' => $mc, 'value' => $afilter); |
.str_replace('*', '%', $afilter).'%')); |
| } |
|
| } elseif ($this->col_is_date($k)) { |
|
| #if ($$lc != '') { |
|
| # $val = $this->gather_date_fields_into_type($$l,$type); |
|
| # $val = $this->mdate_set(date($this->mdate_masks[$type],$this->mdate_getFromPost($k)),$type); |
|
| # $val = $this->mdate_getFromPost($k); |
|
| # if ($val != '') { |
|
| # $qo[$this->fqn($k)] = |
|
| # array( 'oper' => $mc, 'value' => '"'.$val.'"'); |
|
| # } |
|
| #} |
|
| # massage the filter for a string comparison |
|
| if (($afilter != '') AND ($afilter != '*')) { |
|
| $afilter = addslashes(addslashes('%' |
|
| .str_replace ('*', '%', $afilter).'%')); |
|
| $qo[$this->fqn($k)] = |
|
| array('oper' => 'like', 'value' => "'".$afilter."'"); |
|
| } |
|
| } elseif($this->col_has_values($k)) { |
|
| //debug_var('col_is_string',$this->fdd[$k]['name'].'::'.$this->fdd[$k]['type']); |
|
| $qo[$this->fqn($k)] = |
$qo[$this->fqn($k)] = |
| array( 'oper' => '=', 'value' => "'".$afilter."'"); |
array('oper' => 'like', 'value' => "'".$afilter."'"); |
| } else { |
} |
| // unknown (to mysql/php interface) field type massage the filter for a string comparison |
} elseif ($this->col_is_number($k) && ($$lc != '')) { |
| $afilter = addslashes(addslashes('%'.str_replace ('*', '%', $afilter).'%')); |
if ($$lc != '') { |
| |
$qo[$this->fqn($k)] = |
| |
array('oper' => $mc, 'value' => $afilter); |
| |
} |
| |
} elseif ($this->col_is_date($k)) { |
| |
#if ($$lc != '') { |
| |
# $val = $this->gather_date_fields_into_type($$l,$type); |
| |
# $val = $this->mdate_set(date($this->mdate_masks[$type],$this->mdate_getFromPost($k)),$type); |
| |
# $val = $this->mdate_getFromPost($k); |
| |
# if ($val != '') { |
| |
# $qo[$this->fqn($k)] = |
| |
# array( 'oper' => $mc, 'value' => '"'.$val.'"'); |
| |
# } |
| |
#} |
| |
# massage the filter for a string comparison |
| |
if (($afilter != '') AND ($afilter != '*')) { |
| |
$afilter = addslashes(addslashes('%' |
| |
.str_replace ('*', '%', $afilter).'%')); |
| $qo[$this->fqn($k)] = |
$qo[$this->fqn($k)] = |
| array('oper' => 'like', 'value' => "'".$afilter."'"); |
array('oper' => 'like', 'value' => "'".$afilter."'"); |
| } |
} |
| |
} elseif($this->col_has_values($k)) { |
| |
//debug_var('col_is_string',$this->fdd[$k]['name'].'::'.$this->fdd[$k]['type']); |
| |
$qo[$this->fqn($k)] = |
| |
array( 'oper' => '=', 'value' => "'".$afilter."'"); |
| |
} else { |
| |
// unknown (to mysql/php interface) field type massage the filter for a string comparison |
| |
$afilter = addslashes(addslashes('%'.str_replace ('*', '%', $afilter).'%')); |
| |
$qo[$this->fqn($k)] = |
| |
array('oper' => 'like', 'value' => "'".$afilter."'"); |
| } |
} |
| } |
} |
| } // if |
} |
| } // for |
} // for |
| |
|
| $this->query_opts = $qo; |
$this->query_opts = $qo; |
|
|
| function copy_operation() { return $this->operation == $this->labels['Copy'] && $this->add_enabled(); } |
function copy_operation() { return $this->operation == $this->labels['Copy'] && $this->add_enabled(); } |
| function delete_operation() { return $this->operation == $this->labels['Delete'] && $this->delete_enabled(); } |
function delete_operation() { return $this->operation == $this->labels['Delete'] && $this->delete_enabled(); } |
| function view_operation() { return $this->operation == $this->labels['View'] && $this->view_enabled(); } |
function view_operation() { return $this->operation == $this->labels['View'] && $this->view_enabled(); } |
| function filter_operation() { return isset($this->filter) && $this->filter_enabled(); } |
function filter_operation() { return $this->fl && $this->filter_enabled(); } // huh?! XXX FIXME |
| |
|
| function processed($k) /* {{{ */ |
function processed($k) /* {{{ */ |
| { |
{ |
|
|
| } // if elseif else |
} // if elseif else |
| echo '</td>'."\n"; |
echo '</td>'."\n"; |
| } // display_change_field($row, $k) /* }}} */ |
} // display_change_field($row, $k) /* }}} */ |
| |
|
| |
function display_delete_field($row, $k) /* {{{ */ |
| |
{ |
| |
echo '<td>'; |
| |
if ($row["qf$k"] === null) { |
| |
echo $this->fdd[$k]['values2'][$row['qf'.$k.'_idx']]; |
| |
} else if ($row["qf$k"] == '') { |
| |
echo ' '; |
| |
} else { |
| |
echo nl2br($this->htmlDisplay($this->fdd[$k], $row["qf$k"])); |
| |
} |
| |
echo '</td>'."\n"; |
| |
} /* }}} */ |
| |
|
| function htmlHidden($name,$value) /* {{{ */ |
function htmlHidden($name,$value) /* {{{ */ |
| { |
{ |
|
|
| return $ret; |
return $ret; |
| } /* }}} */ |
} /* }}} */ |
| |
|
| function display_delete_field($row, $k) /* {{{ */ |
|
| |
function get_qf_hidden_fields() /* {{{ */ |
| { |
{ |
| echo '<td>'; |
/* If the filter input boxes are not displayed, we need to preserve |
| if ($row["qf$k"] === null) { |
the filter by its emulaion. */ |
| echo $this->fdd[$k]['values2'][$row['qf'.$k.'_idx']]; |
$this->qfn = ''; |
| } else if ($row["qf$k"] == '') { |
$hidden_qfs = ''; |
| echo ' '; |
for ($k = 0; $k < $this->num_fds; $k++) { |
| } else { |
$l = 'qf'.$k; |
| echo nl2br($this->htmlDisplay($this->fdd[$k], $row["qf$k"])); |
$lc = 'qf'.$k.'_comp'; |
| |
$$l = $this->get_cgi_var($l); |
| |
$$lc = $this->get_cgi_var($lc); |
| |
$m = $this->web2plain($$l); // get the field name and value |
| |
$mc = $this->web2plain($$lc); // get the comparison operator for numeric/date types |
| |
|
| |
if (!isset($m)) { |
| |
continue; |
| |
} |
| |
if (is_array($m)) { // multiple selection has been used |
| |
if (!in_array('*',$m)) {// one '*' in a multiple selection is all you need |
| |
for ($n=0; $n<count($m); $n++) { |
| |
if ($this->plain2web($m[$n]) != '') { |
| |
$this->qfn = $this->qfn.'&qf'.$k.'['.$n.']=' |
| |
.$this->plain2web($m[$n]); } |
| |
$hidden_qfs .= '<input type="hidden" name="qf'.$k.'['.$n |
| |
.']" value="'.$this->plain2web($m[$n]).'">'."\n"; |
| |
} |
| |
} |
| |
} else { |
| |
// query field comparison operator (if any) |
| |
if ($this->plain2web($mc) != '') { |
| |
$this->qfn = $this->qfn.'&qf'.$k.'_comp='.$this->plain2web($mc); |
| |
$hidden_qfs .= '<input type="hidden" name="'.$lc.'" value="'.$mc.'">'."\n"; |
| |
} |
| |
// preserve query field & value |
| |
if ($this->plain2web($m) != '') { |
| |
$this->qfn = $this->qfn.'&qf'.$k.'='.$this->plain2web($m); |
| |
$hidden_qfs .= '<input type="hidden" name="'.$l.'" value="'.$m.'">'."\n"; |
| |
} |
| |
} |
| } |
} |
| echo '</td>'."\n"; |
return $hidden_qfs; |
| } /* }}} */ |
} /* }}} */ |
| |
|
| function web2plain($x) /* {{{ */ |
function web2plain($x) /* {{{ */ |
|
|
| // display page and records statistics |
// display page and records statistics |
| echo '<td align=right style="text-align:right;border:0;padding:0;" nowrap>' . "\n"; |
echo '<td align=right style="text-align:right;border:0;padding:0;" nowrap>' . "\n"; |
| if ($listall) { |
if ($listall) { |
| echo $this->labels['Page'].': 1 of 1'; |
echo $this->labels['Page'].': 1 '.$this->labels['of'].' 1'; |
| } else { |
} else { |
| echo $this->labels['Page'].': '; |
echo $this->labels['Page'].': '; |
| echo (($this->fm/$this->inc)+1).' '.$this->labels['of']; |
echo (($this->fm/$this->inc)+1); |
| echo ' '.max(1,ceil($total_recs/abs($this->inc))); |
echo ' '.$this->labels['of'].' '; |
| |
echo max(1,ceil($total_recs/abs($this->inc))); |
| } |
} |
| echo ' '.$this->labels['Records'].': '.$total_recs; |
echo ' '.$this->labels['Records'].': '.$total_recs; |
| echo '</td></tr></table>'."\n"; |
echo '</td></tr></table>'."\n"; |
|
|
| $this->fm += $this->inc; |
$this->fm += $this->inc; |
| } |
} |
| |
|
| // Process filters |
|
| |
|
| if (!isset ($this->fl)) { |
|
| $this->fl = 0; |
|
| } // by default, no filters |
|
| |
|
| // filter switch has been pressed |
|
| if (isset ($this->sw)) { |
|
| if ($this->sw == $this->labels['Search']) { |
|
| $this->fl = 1; |
|
| } |
|
| if ($this->sw == $this->labels['Hide']) { |
|
| $this->fl = 0; |
|
| } |
|
| } |
|
| |
|
| /* |
/* |
| * If user is allowed to Change/Delete records, we need an extra column |
* If user is allowed to Change/Delete records, we need an extra column |
| * to allow users to select a record |
* to allow users to select a record |
| */ |
*/ |
| |
|
| $select_recs = (($this->change_enabled() |
$select_recs = $this->key != '' && |
| or $this->delete_enabled() |
($this->change_enabled() || $this->delete_enabled() || $this->view_enabled()); |
| or $this->view_enabled()) |
|
| and ($this->key != '')); |
|
| |
|
| //echo "sfn::".$this->sfn."::<br>\n"; |
//echo "sfn::".$this->sfn."::<br>\n"; |
| |
|
| // Default is to sort on first displayed field |
// Default is to sort on first displayed field |
| if (! is_numeric($this->sfn) && ! $this->initial_sort_suppressed() |
if (! is_numeric($this->sfn) && ! $this->initial_sort_suppressed() |
| && ! isset($this->default_sort_columns)) { |
&& ! isset($this->default_sort_columns)) { |
| $k = 0; |
for ($k = 0; ! $this->displayed[$k]; $k++); |
| while (! $this->displayed[$k]) { |
|
| $k++; |
|
| } |
|
| $this->sfn = $k; |
$this->sfn = $k; |
| } |
} |
| |
|
|
|
| ''=>'','%3C'=>'%3C','%3C%3D'=>'%3C%3D', |
''=>'','%3C'=>'%3C','%3C%3D'=>'%3C%3D', |
| '%3D'=>'%3D','%3E%3D'=>'%3E%3D','%3E'=>'%3E'); |
'%3D'=>'%3D','%3E%3D'=>'%3E%3D','%3E'=>'%3E'); |
| echo '<form action="'.$this->page_name.'" method="POST">'."\n"; |
echo '<form action="'.$this->page_name.'" method="POST">'."\n"; |
| echo ' <input type="hidden" name="sfn" value="'; |
echo '<input type="hidden" name="sfn" value="'; |
| echo ($this->sort_asc?'':'-').$this->sfn.'" />'."\n"; |
echo ($this->sort_asc?'':'-').$this->sfn.'" />'."\n"; |
| echo ' <input type="hidden" name="fl" value="'.$this->fl.'" />'."\n"; |
echo '<input type="hidden" name="fl" value="'.$this->fl.'" />'."\n"; |
| |
|
| |
$prev_qfn = $this->qfn; |
| |
$hidden_qfs = $this->get_qf_hidden_fields(); |
| |
// if sort sequence has changed, restart listing |
| |
$this->qfn != $prev_qfn && $this->fm = 0; |
| |
|
| |
if (0) { // TODO: delete me! |
| |
echo '$this->qfn vs. $prev_qfn comparsion:::::'; |
| |
echo '<b>'.htmlspecialchars($this->qfn).'</b>:::::'; |
| |
echo '<b>'.htmlspecialchars($prev_qfn).'</b>:::::<br>'; |
| |
echo 'comparsion <u>'.($this->qfn == $prev_qfn ? 'proved' : 'failed').'</u>'; |
| |
echo '<hr>'; |
| |
} |
| |
|
| //display buttons at top of page - sparky |
//display buttons at top of page - sparky |
| // setup query to get num_rows |
// setup query to get num_rows |
| $total_recs = 0; |
$total_recs = 0; |
| $count_parts = array( |
$count_parts = array( |
| 'type' => 'select', |
'type' => 'select', |
| 'select' => 'count(*) as num_rows', |
'select' => 'count(*) as num_rows', |
| 'from' => $this->create_join_clause(), |
'from' => $this->create_join_clause(), |
| 'where' => $this->make_where_from_query_opts() |
'where' => $this->make_where_from_query_opts()); |
| ); |
$res = $this->myquery($this->query_make($count_parts), __LINE__); |
| $res = $this->myquery($this->query_make($count_parts),__LINE__); |
|
| $row = @mysql_fetch_array($res, MYSQL_ASSOC); |
$row = @mysql_fetch_array($res, MYSQL_ASSOC); |
| $total_recs = $row['num_rows']; |
$total_recs = $row['num_rows']; |
| |
|
|
|
| echo '<hr>'."\n"; |
echo '<hr>'."\n"; |
| } |
} |
| |
|
| // if the filter input boxes are not displayed, we need to preserve the filter |
|
| if (!$this->fl) { |
if (!$this->fl) { |
| for ($k = 0; $k < $this->num_fds; $k++) { |
echo($hidden_qfs); |
| $l = 'qf'.$k; |
|
| $lc = 'qf'.$k.'_comp'; |
|
| $$l = $this->get_cgi_var($l); |
|
| $$lc = $this->get_cgi_var($lc); |
|
| $m = $this->web2plain($$l); // get the field name and value |
|
| $mc = $this->web2plain($$lc); // get the comparison operator for numeric/date types |
|
| |
|
| if (isset($m)) { |
|
| if (is_array($m)) { // multiple selection has been used |
|
| if (!in_array('*',$m)) {// one '*' in a multiple selection is all you need |
|
| for ($n=0; $n<count($m); $n++) { |
|
| if ($this->plain2web($m[$n]) != '') { |
|
| echo ' <input type="hidden" name="qf'.$k.'['.$n |
|
| .']" value="'.$this->plain2web($m[$n]).'">'."\n"; |
|
| } |
|
| } |
|
| } |
|
| } else { |
|
| // query field comparison operator (if any) |
|
| if ($this->plain2web($mc) != '') { |
|
| $this->qfn = $this->qfn.'&qf'.$k.'_comp='.$this->plain2web($mc); |
|
| echo ' <input type="hidden" name="'.$lc.'" value="'.$mc.'">'."\n"; |
|
| } |
|
| // preserve query field & value |
|
| if ($this->plain2web($m) != '') { |
|
| $this->qfn = $this->qfn.'&qf'.$k.'='.$this->plain2web($m); |
|
| echo ' <input type="hidden" name="'.$l.'" value="'.$m.'">'."\n"; |
|
| } |
|
| } |
|
| } |
|
| } |
|
| } |
|
| |
|
| /* |
|
| * Set up the URLs which allow sorting by clicking on column headings |
|
| */ |
|
| $prev_qfn = $this->qfn; |
|
| $this->qfn = ''; |
|
| for ($k = 0; $k < $this->num_fds; $k++) { |
|
| $l = 'qf'.$k; |
|
| $lc = 'qf'.$k.'_comp'; |
|
| $$l = $this->get_cgi_var($l); |
|
| $$lc = $this->get_cgi_var($lc); |
|
| $m = $this->web2plain($$l); // get the field name and value |
|
| $mc = $this->web2plain($$lc); // get the comparison operator for numeric/date types |
|
| |
|
| if (isset ($m)) { |
|
| if (is_array($m)) { // multiple selection has been used |
|
| if (!in_array('*',$m)) { // one '*' in a multiple selection is all you need |
|
| for ($n=0; $n<count($m); $n++) { |
|
| if ($this->plain2web($m[$n]) != '') { |
|
| $this->qfn = $this->qfn.'&qf'.$k.'['.$n.']=' |
|
| .$this->plain2web($m[$n]); } |
|
| } |
|
| } |
|
| } else { |
|
| if ($this->plain2web($m)!='') { |
|
| if ($$lc) { |
|
| $this->qfn .= '&'.$lc.'='.$$lc; |
|
| } |
|
| $this->qfn = $this->qfn.'&qf'.$k.'='.$this->plain2web($m); |
|
| |
|
| /* |
|
| // check for multipart date/time/datetime/timestamp/years |
|
| $qfyear = "qf".$k."_ye"; |
|
| $qfhour = "qf".$k."_ho"; |
|
| global $$qfyear,$$qfhour; |
|
| if ($$qfyear || $$qfhour) { |
|
| // we have a multi part date/time thingy |
|
| $qfmont = "qf".$k."_mo"; |
|
| $qfday = "qf".$k."_da"; |
|
| $qfminu = "qf".$k."_mi"; |
|
| $qfsec = "qf".$k."_se"; |
|
| global $$qfmont,$$qfday,$$qfminu,$$qfsec; |
|
| foreach ( |
|
| array( |
|
| $qfyear=>$$qfyear,$qfmonth=>$$qfmonth, |
|
| $qfday=>$$qfday,$qfhour=>$$qfhour, |
|
| $qfminute=>$$qfminute,$qfsecond=>$$qfsecond |
|
| ) as $qfk => $qfv |
|
| ) |
|
| if ($qfv) |
|
| $this->qfn .= "&$qfk=".$this->plain2web($qfv); |
|
| } |
|
| */ |
|
| } |
|
| } |
|
| } |
|
| } |
} |
| echo ' <input type="hidden" name="qfn" value="'.htmlspecialchars($this->qfn).'" />'."\n"; |
echo '<input type=hidden name=qfn value="'.htmlspecialchars($this->qfn).'">'."\n"; |
| |
echo '<input type=hidden name=fm value="'.htmlspecialchars($this->fm).'">'."\n"; |
| // if sort sequence has changed, restart listing |
echo '<table width="100%" border="1" cellpadding="1" cellspacing="0"'; |
| if ($this->qfn != $prev_qfn) { |
|
| $this->fm = 0; |
|
| //var_dump($this->qfn); |
|
| //var_dump($prev_qfn); |
|
| } |
|
| |
|
| echo ' <input type="hidden" name="fm" value="'.$this->fm.'" />'."\n"; |
|
| |
|
| //$this->print_nav_buttons(); |
|
| |
|
| echo ' <table width="100%" border="1" cellpadding="1" cellspacing="0"'; |
|
| echo ' summary="'.$this->tb.'">'."\n"; |
echo ' summary="'.$this->tb.'">'."\n"; |
| echo ' <tr>'."\n"; |
echo '<tr>'."\n"; |
| |
|
| /* |
/* |
| * System (navigation, selection) columns counting |
* System (navigation, selection) columns counting |
| */ |
*/ |
| $sys_cols = 0; |
$sys_cols = 0; |
| $sys_cols += intval($this->filter_enabled() || $select_recs); |
$sys_cols += intval($this->filter_enabled() || $select_recs); |
| if ($sys_cols > 0) { |
if ($sys_cols > 0) { |
| $sys_cols += intval($this->nav_buttons() |
$sys_cols += intval($this->nav_buttons() |
|
|
| */ |
*/ |
| if ($sys_cols) { |
if ($sys_cols) { |
| echo '<th colspan='.$sys_cols.' align="center">'; |
echo '<th colspan='.$sys_cols.' align="center">'; |
| if ($this->filter_enabled ()) { |
if ($this->filter_enabled()) { |
| echo '<input type="submit" name="sw" value="' |
echo '<input type="submit" name="sw" value="' |
| .($this->fl ? $this->labels['Hide'] : $this->labels['Search']).'">'; |
.($this->fl ? $this->labels['Hide'] : $this->labels['Search']).'">'; |
| } else { |
} else { |
|
|
| $sort_field = $this->fqn($this->sfn); |
$sort_field = $this->fqn($this->sfn); |
| $sort_field_w = $this->fdd[$this->sfn]['name']; |
$sort_field_w = $this->fdd[$this->sfn]['name']; |
| } |
} |
| if ( ! $this->sort_asc) { |
if (! $this->sort_asc) { |
| $sort_field .= ' DESC'; |
$sort_field .= ' DESC'; |
| $sort_field_w .= ' descending'; |
$sort_field_w .= ' descending'; |
| } |
} |
| $raw_sort_fields[] = $raw_sort_field; |
$raw_sort_fields[] = $raw_sort_field; |
| $sort_fields[] = $sort_field; |
$sort_fields[] = $sort_field; |
| $sort_fields_w[] = $sort_field_w; |
$sort_fields_w[] = $sort_field_w; |
| } |
} |
| if (isset($this->default_sort_columns)) { |
if (isset($this->default_sort_columns)) { |
| foreach ($this->default_sort_columns as $dsc) { |
foreach ($this->default_sort_columns as $dsc) { |
| if (substr($dsc,0,1)=='-') { |
if (substr($dsc, 0, 1) == '-') { |
| $field = substr($dsc,1); |
$field = substr($dsc, 1); |
| $desc = true; |
$desc = true; |
| } else { |
} else { |
| $field = $dsc; |
$field = $dsc; |
| $desc = false; |
$desc = false; |
| } |
} |
| $raw_candidate = $this->fqn($field); |
$raw_candidate = $this->fqn($field); |
| $candidate = $this->fqn($field,true); |
$candidate = $this->fqn($field,true); |
| $sort_field_w = $this->fdd[$field]['name']; |
$sort_field_w = $this->fdd[$field]['name']; |
| if ($desc) { |
if ($desc) { |
| $candidate .= ' DESC'; |
$candidate .= ' DESC'; |
| $sort_field_w .= ' descending'; |
$sort_field_w .= ' descending'; |
| } |
} |
| if (! in_array($raw_candidate,$raw_sort_fields)) { |
if (! in_array($raw_candidate,$raw_sort_fields)) { |
| $sort_fields[] = $candidate; |
$sort_fields[] = $candidate; |
| $sort_fields_w[] = $sort_field_w; |
$sort_fields_w[] = $sort_field_w; |
| } |
} |
| } |
} |
|
|
| !isset ($this->fdd[$fd]['options']) |
!isset ($this->fdd[$fd]['options']) |
| ) |
) |
| */ |
*/ |
| if ($this->displayed[$k]) { |
if (! $this->displayed[$k]) { |
| if ($this->fdd[$fd]['select'] == 'D' or $this->fdd[$fd]['select'] == 'M') { |
continue; |
| /* |
} |
| * Multiple fields processing - default size is 2 and array required for values |
if ($this->fdd[$fd]['select'] == 'D' or $this->fdd[$fd]['select'] == 'M') { |
| */ |
/* |
| $multiple = $this->fdd[$fd]['select'] == 'M'; |
* Multiple fields processing - default size is 2 and array required for values |
| $selected = $m; |
*/ |
| $x = isset($this->fdd[$k]['values']['table']) || !$this->col_has_values($k) |
$multiple = $this->fdd[$fd]['select'] == 'M'; |
| ? $this->set_values_from_table($k, array('*' => '*')) |
$selected = $m; |
| : array('*' => '*') + (array) $this->fdd[$k]['values2'] + (array) $this->fdd[$k]['values']; |
$x = isset($this->fdd[$k]['values']['table']) || !$this->col_has_values($k) |
| echo $this->htmlSelect($l, $x, $selected, $multiple); |
? $this->set_values_from_table($k, array('*' => '*')) |
| } elseif ($this->fdd[$fd]['select'] == 'T') { |
: array('*' => '*') + (array) $this->fdd[$k]['values2'] + (array) $this->fdd[$k]['values']; |
| // this is where we put the comparison selects |
echo $this->htmlSelect($l, $x, $selected, $multiple); |
| if (! $this->password($k) && ! $this->hidden($k)) { |
} elseif ($this->fdd[$fd]['select'] == 'T') { |
| if ($this->col_is_string($k)) { |
// this is where we put the comparison selects |
| // it's treated as a string |
if (! $this->password($k) && ! $this->hidden($k)) { |
| echo '<input type="text" name="qf'.$k.'"'; |
if ($this->col_is_string($k)) { |
| echo ' value="'.stripslashes($m).'"'; |
// it's treated as a string |
| if ($type != 'blob') { |
echo '<input type="text" name="qf'.$k.'"'; |
| echo ' size="'.min($this->fdd[$k]['maxlen'],20).'"'; |
echo ' value="'.stripslashes($m).'"'; |
| echo ' maxlength="'.$this->fdd[$k]['maxlen'].'"'; |
if ($type != 'blob') { |
| } |
echo ' size="'.min($this->fdd[$k]['maxlen'],20).'"'; |
| echo '/>'; |
echo ' maxlength="'.$this->fdd[$k]['maxlen'].'"'; |
| } elseif ($this->col_is_date($k)) { |
|
| // it's a date |
|
| //echo $this->htmlSelect($l.'_comp',$comp_ops,$$lc); |
|
| // first get any date elements that were passed in |
|
| //$filter_val = $this->gather_search_date_fields_into_mysql_timestamp('qf'.$k); |
|
| // display the search formlet |
|
| //if ($mc) { |
|
| // //echo $this->display_search_field_date($type,'qf'.$k,$filter_val,$this->fdd[$k]['datemask']); |
|
| // //echo $this->mdate_displayForm($filter_val,$type,'qf'.$k,$this->fdd[$k]['datemask'],true); |
|
| // echo $this->mdate_disperse($k,true,$filter_val); |
|
| //} |
|
| //else { |
|
| // //echo $this->display_search_field_date( $type,'qf'.$k,'',$this->fdd[$k]['datemask']); |
|
| // echo $this->mdate_displayForm('',$type,'qf'.$k,$this->fdd[$k]['datemask'],true); |
|
| //} |
|
| // it's treated as a string |
|
| echo '<input type="text" name="qf'.$k.'"'; |
|
| echo ' value="'.stripslashes($m).'"'; |
|
| if ($type != 'blob') { |
|
| echo ' size="'.min($this->fdd[$k]['maxlen'],20).'"'; |
|
| echo ' maxlength="'.$this->fdd[$k]['maxlen'].'"'; |
|
| } |
|
| echo '/>'; |
|
| } elseif ($this->col_is_number($k)) { |
|
| // it's a number |
|
| echo $this->htmlSelect($l.'_comp',$comp_ops,$$lc); |
|
| // it's treated as a string |
|
| echo '<input type="text" name="qf'.$k.'"'. |
|
| ' value="'.$m.'"'. |
|
| ' size="'.min($this->fdd[$k]['maxlen'],20).'"'. |
|
| ' maxlength="'.$this->fdd[$k]['maxlen'].'"'. |
|
| '/>'; |
|
| } else { |
|
| // type is 'unknown' or not set, it's treated as a string |
|
| echo '<input type="text" name="qf'.$k.'"'; |
|
| echo ' value="'.stripslashes($m).'"'; |
|
| if ($type != 'blob') { |
|
| echo ' size="'.min($this->fdd[$k]['maxlen'],20).'"'; |
|
| echo ' maxlength="'.$this->fdd[$k]['maxlen'].'"'; |
|
| } |
|
| echo '/>'; |
|
| } |
|
| } else { |
|
| echo " "; |
|
| } |
|
| |
|
| // if it's int or real and if not password or hidden, display aggr options |
|
| /* XXX Disabled until we have time to work on this |
|
| |
|
| if ((! $this->password($k) && ! $this->hidden($k)) |
|
| && (($this->col_is_number($k)) && (! isset($this->fdd[$k]['values'])))) { |
|
| |
|
| $var_to_total = 'qf'.$k.'_aggr'; |
|
| global $$var_to_total; |
|
| $aggr_function = $$var_to_total; |
|
| if (isset($$var_to_total)) { |
|
| $vars_to_total[] = $this->fqn($k); |
|
| $aggr_from_clause .= |
|
| ' '.$aggr_function.'('. |
|
| $this->fqn($k). |
|
| ') as '.$var_to_total; |
|
| } |
} |
| echo '<br>Aggr: '; |
echo '/>'; |
| echo $this->htmlSelect($var_to_total,$this->sql_aggrs,$$var_to_total); |
} elseif ($this->col_is_date($k)) { |
| if ($$var_to_total != '') { |
// it's a date |
| $listall = true; |
//echo $this->htmlSelect($l.'_comp',$comp_ops,$$lc); |
| |
// first get any date elements that were passed in |
| |
//$filter_val = $this->gather_search_date_fields_into_mysql_timestamp('qf'.$k); |
| |
// display the search formlet |
| |
//if ($mc) { |
| |
// //echo $this->display_search_field_date($type,'qf'.$k,$filter_val,$this->fdd[$k]['datemask']); |
| |
// //echo $this->mdate_displayForm($filter_val,$type,'qf'.$k,$this->fdd[$k]['datemask'],true); |
| |
// echo $this->mdate_disperse($k,true,$filter_val); |
| |
//} |
| |
//else { |
| |
// //echo $this->display_search_field_date( $type,'qf'.$k,'',$this->fdd[$k]['datemask']); |
| |
// echo $this->mdate_displayForm('',$type,'qf'.$k,$this->fdd[$k]['datemask'],true); |
| |
//} |
| |
// it's treated as a string |
| |
echo '<input type="text" name="qf'.$k.'"'; |
| |
echo ' value="'.stripslashes($m).'"'; |
| |
if ($type != 'blob') { |
| |
echo ' size="'.min($this->fdd[$k]['maxlen'],20).'"'; |
| |
echo ' maxlength="'.$this->fdd[$k]['maxlen'].'"'; |
| } |
} |
| |
echo '/>'; |
| |
} elseif ($this->col_is_number($k)) { |
| |
// it's a number |
| |
echo $this->htmlSelect($l.'_comp',$comp_ops,$$lc); |
| |
// it's treated as a string |
| |
echo '<input type="text" name="qf'.$k.'"'. |
| |
' value="'.$m.'"'. |
| |
' size="'.min($this->fdd[$k]['maxlen'],20).'"'. |
| |
' maxlength="'.$this->fdd[$k]['maxlen'].'"'. |
| |
'/>'; |
| } else { |
} else { |
| echo ' '; |
// type is 'unknown' or not set, it's treated as a string |
| |
echo '<input type="text" name="qf'.$k.'"'; |
| |
echo ' value="'.stripslashes($m).'"'; |
| |
if ($type != 'blob') { |
| |
echo ' size="'.min($this->fdd[$k]['maxlen'],20).'"'; |
| |
echo ' maxlength="'.$this->fdd[$k]['maxlen'].'"'; |
| |
} |
| |
echo '/>'; |
| } |
} |
| */ |
|
| echo '</td>'."\n"; |
|
| } else { |
} else { |
| echo '<td> </td>'."\n"; |
echo " "; |
| } // if elseif else |
} |
| |
|
| |
// if it's int or real and if not password or hidden, display aggr options |
| |
/* XXX Disabled until we have time to work on this |
| |
|
| } // end if bro1 |
if ((! $this->password($k) && ! $this->hidden($k)) |
| |
&& (($this->col_is_number($k)) && (! isset($this->fdd[$k]['values'])))) { |
| |
|
| |
$var_to_total = 'qf'.$k.'_aggr'; |
| |
global $$var_to_total; |
| |
$aggr_function = $$var_to_total; |
| |
if (isset($$var_to_total)) { |
| |
$vars_to_total[] = $this->fqn($k); |
| |
$aggr_from_clause .= |
| |
' '.$aggr_function.'('. |
| |
$this->fqn($k). |
| |
') as '.$var_to_total; |
| |
} |
| |
echo '<br>Aggr: '; |
| |
echo $this->htmlSelect($var_to_total,$this->sql_aggrs,$$var_to_total); |
| |
if ($$var_to_total != '') { |
| |
$listall = true; |
| |
} |
| |
} else { |
| |
echo ' '; |
| |
} |
| |
*/ |
| |
echo '</td>'."\n"; |
| |
} else { |
| |
echo '<td> </td>'."\n"; |
| |
} // if elseif else |
| } // for |
} // for |
| echo '</tr>'."\n"; |
echo '</tr>'."\n"; |
| } // if first and fl |
} // if first and fl |
|
|
| */ |
*/ |
| $text_query = $this->make_text_where_from_query_opts(); |
$text_query = $this->make_text_where_from_query_opts(); |
| if ($text_query != '' && $this->display['query']) { |
if ($text_query != '' && $this->display['query']) { |
| echo '<tr><td colspan='.$sys_cols.' align="center">'. |
echo '<tr><td colspan='.$sys_cols.' align="center">' |
| '<a class="pme_a_t" href="'.$PHP_SELF; |
.'<a class="pme_a_t" href="'.$PHP_SELF; |
| if ($this->sfn) { |
if ($this->sfn) { |
| echo "?sfn=".($this->sort_asc?'':'-').$this->sfn."&fl=".$this->fl."&fm=".$this->fm; |
echo "?sfn=".($this->sort_asc?'':'-').$this->sfn."&fl=".$this->fl."&fm=".$this->fm; |
| } |
} |
| echo '">Clear</a>'. |
echo '">Clear</a></td>'; |
| '</td>'; |
echo '<td colspan="'.$this->num_fields_displayed.'">Current Query: ' |
| echo '<td colspan="'.$this->num_fields_displayed.'">Current Query: '. |
.htmlspecialchars(stripslashes(stripslashes(stripslashes($text_query)))) |
| htmlspecialchars(stripslashes(stripslashes(stripslashes($text_query)))). |
.'</td></tr>'."\n"; |
| "</td></tr>\n"; |
|
| } |
} |
| |
|
| /* |
/* |
| * Each row of the HTML table is one record from the SQL Query |
* Each row of the HTML table is one record from the SQL Query |
| |
* Main list_table() query |
| */ |
*/ |
| $res = $this->myquery($this->query_make($qparts),__LINE__); |
$res = $this->myquery($this->query_make($qparts), __LINE__); |
| $first = true; |
$first = true; |
| $rowCount = 0; |
$rowCount = 0; |
| |
|
|
|
| $qstrparts = array(); |
$qstrparts = array(); |
| if (count($this->qo) > 0) { |
if (count($this->qo) > 0) { |
| foreach ($this->qo as $key=>$val) { |
foreach ($this->qo as $key=>$val) { |
| if ($key != '' && $key != 'operation' && ! is_array($val) ) |
if ($key != '' && $key != 'operation' && ! is_array($val)) |
| $qstrparts[] = "$key=$val"; |
$qstrparts[] = "$key=$val"; |
| } |
} |
| } |
} |
| if (count($this->get_opts) > 0) { |
if (count($this->get_opts) > 0) { |
| foreach ($this->get_opts as $key=>$val) { |
foreach ($this->get_opts as $key=>$val) { |
| if ($key != '' && $key != 'operation' && ! is_array($val) ) |
if ($key != '' && $key != 'operation' && ! is_array($val)) |
| $qstrparts[] = "$key=$val"; |
$qstrparts[] = "$key=$val"; |
| } |
} |
| } |
} |
| |
|
| // preserve sort field number, filter row, and first record to display |
// preserve sort field number, filter row, and first record to display |
| if (isset($this->sfn)) |
isset($this->sfn) && $qstrparts[] = 'sfn='.($this->sort_asc?'':'-').$this->sfn; |
| $qstrparts[] = 'sfn='.($this->sort_asc?'':'-').$this->sfn; |
isset($this->fl) && $qstrparts[] = 'fl='.$this->fl; |
| if (isset($this->fl)) |
isset($this->fm) && $qstrparts[] = 'fm='.$this->fm; |
| $qstrparts[] = 'fl='.$this->fl; |
|
| if (isset($this->fm)) |
|
| $qstrparts[] = 'fm='.$this->fm; |
|
| |
|
| // do we need to preserve filter (filter query) and sw (filter display/hide button)? |
// do we need to preserve filter (filter query) and sw (filter display/hide button)? |
| |
|
| $qpview = $qstrparts; |
$qpview = $qstrparts; |
| $qpview[] = 'operation='.$this->labels['View']; |
$qpview[] = 'operation='.$this->labels['View']; |
| $qpviewStr = '?'.join('&',$qpview); |
$qpviewStr = '?'.join('&',$qpview).$this->qfn; |
| |
|
| $qpcopy = $qstrparts; |
$qpcopy = $qstrparts; |
| $qpcopy[] = 'operation='.$this->labels['Copy']; |
$qpcopy[] = 'operation='.$this->labels['Copy']; |
| $qpcopyStr = '?'.join('&',$qpcopy); |
$qpcopyStr = '?'.join('&',$qpcopy).$this->qfn; |
| |
|
| $qpchange = $qstrparts; |
$qpchange = $qstrparts; |
| $qpchange[] = 'operation='.$this->labels['Change']; |
$qpchange[] = 'operation='.$this->labels['Change']; |
| $qpchangeStr = '?'.join('&',$qpchange); |
$qpchangeStr = '?'.join('&',$qpchange).$this->qfn; |
| |
|
| $qpdelete = $qstrparts; |
$qpdelete = $qstrparts; |
| $qpdelete[] = 'operation='.$this->labels['Delete']; |
$qpdelete[] = 'operation='.$this->labels['Delete']; |
| $qpdeleteStr = '?'.join('&',$qpdelete); |
$qpdeleteStr = '?'.join('&',$qpdelete).$this->qfn; |
| } |
} |
| |
|
| while ($row = @mysql_fetch_array($res, MYSQL_ASSOC)) { |
while ($row = @mysql_fetch_array($res, MYSQL_ASSOC)) { |
| if (0) { // TODO: delete me! |
|
| echo '<pre>'; |
|
| var_dump($row); |
|
| echo '</pre>'; |
|
| continue; |
|
| } |
|
| |
|
| echo '<tr class="'.(($rowCount++%2)?'pme_tr_o':'pme_tr_e')."\">\n"; |
echo '<tr class="'.(($rowCount++%2)?'pme_tr_o':'pme_tr_e')."\">\n"; |
| if ($sys_cols) { |
if ($sys_cols) { |
|
|
| for ($k = 0; $k < $this->num_fds; $k++) { |
for ($k = 0; $k < $this->num_fds; $k++) { |
| $fd = $this->fds[$k]; |
$fd = $this->fds[$k]; |
| if ($this->hidden($k) || $this->password($k)) { |
if ($this->hidden($k) || $this->password($k)) { |
| // XXX do nothing KLUDGE KLUDGE |
continue; |
| /* |
} elseif (! $this->displayed[$k]) { |
| } elseif ( |
continue; |
| stristr($this->fdd[$fd]['options'],'L') || |
} |
| ! isset($this->fdd[$fd]['options']) |
// XXX: echo 'displayed: '.$k.'-'.$fd; |
| ) { |
|
| */ |
/* TODO: what's this?! |
| } elseif ($this->displayed[$k]) { |
|
| // XXX: echo 'displayed: '.$k.'-'.$fd; |
if ((trim($row[$k]) == '') or ($row[$k] == 'NULL')) { |
| |
echo ' <td> </td>'."\n"; |
| /* TODO: what's this?! |
} else { */ |
| |
|
| if ((trim($row[$k]) == '') or ($row[$k] == 'NULL')) { |
// display the contents |
| echo ' <td> </td>'."\n"; |
$colattrs = $this->fdd[$fd]['colattrs']; |
| } else { */ |
if ($colattrs != '') |
| |
$colattrs = ' '.$colattrs; |
| // display the contents |
if ($this->fdd[$fd]['nowrap']) |
| $colattrs = $this->fdd[$fd]['colattrs']; |
$colattrs .= ' NOWRAP'; |
| if ($colattrs != '') |
if (isset($this->fdd[$fd]['width'])) { |
| $colattrs = ' '.$colattrs; |
$colattrs .= ' width="'.$this->fdd[$fd]['width'].'"'; |
| if ($this->fdd[$fd]['nowrap']) |
} |
| $colattrs .= ' NOWRAP'; |
echo ' <td'.$colattrs.'>'; |
| if (isset($this->fdd[$fd]['width'])) { |
if (! $this->hidden($k) && ! $this->password($k)) { |
| $colattrs .= ' width="'.$this->fdd[$fd]['width'].'"'; |
// displayable |
| } |
if (isset($this->fdd[$k]['URL']) |
| echo ' <td'.$colattrs.'>'; |
|| isset($this->fdd[$k]['URLprefix']) |
| if (! $this->hidden($k) && ! $this->password($k)) { |
|| isset($this->fdd[$k]['URLpostfix'])) { |
| // displayable |
/* It's an URL |
| if (isset($this->fdd[$k]['URL']) |
Put some conveniences in the namespace for the user |
| || isset($this->fdd[$k]['URLprefix']) |
to be able to use in the URL string. */ |
| || isset($this->fdd[$k]['URLpostfix'])) { |
$key = $key_rec; |
| /* It's an URL |
$name = $this->fds[$k]; |
| Put some conveniences in the namespace for the user |
$value = $row["qf$k"]; |
| to be able to use in the URL string. */ |
$page = $this->page_name; |
| $key = $key_rec; |
$urlstr = $urlqueryproto.'&rec='.$key; |
| $name = $this->fds[$k]; |
$urllink = isset($this->fdd[$k]['URL']) |
| $value = $row["qf$k"]; |
? eval('return "'.$this->fdd[$k]['URL'].'";') |
| $page = $this->page_name; |
: $value; |
| $urlstr = $urlqueryproto.'&rec='.$key; |
$urldisp = isset($this->fdd[$k]['URLdisp']) |
| $urllink = isset($this->fdd[$k]['URL']) |
? eval('return "'.$this->fdd[$k]['URLdisp'].'";') |
| ? eval('return "'.$this->fdd[$k]['URL'].'";') |
: $value; |
| : $value; |
$target = isset($this->fdd[$k]['URLtarget']) |
| $urldisp = isset($this->fdd[$k]['URLdisp']) |
? 'target="'.htmlspecialchars($this->fdd[$k]['URLtarget']).'" ' |
| ? eval('return "'.$this->fdd[$k]['URLdisp'].'";') |
: ''; |
| : $value; |
isset($this->fdd[$k]['URLprefix']) && $urllink = $this->fdd[$k]['URLprefix'].$urllink; |
| $target = isset($this->fdd[$k]['URLtarget']) |
isset($this->fdd[$k]['URLpostfix']) && $urllink .= $this->fdd[$k]['URLpostfix']; |
| ? 'target="'.htmlspecialchars($this->fdd[$k]['URLtarget']).'" ' |
$urllink = htmlspecialchars($urllink); |
| : ''; |
$urldisp = htmlspecialchars($urldisp); |
| isset($this->fdd[$k]['URLprefix']) && $urllink = $this->fdd[$k]['URLprefix'].$urllink; |
echo '<a '.$target.'class="pme_a_u" href="'.$urllink.'">'.$urldisp.'</a>'; |
| isset($this->fdd[$k]['URLpostfix']) && $urllink .= $this->fdd[$k]['URLpostfix']; |
} elseif (isset($this->fdd[$k]['datemask'])) { |
| $urllink = htmlspecialchars($urllink); |
// display date according to a mask if any |
| $urldisp = htmlspecialchars($urldisp); |
//echo $this->mdate_set($row[$k],$this->fdd[$k]['type'],$this->fdd[$k]['datemask']); |
| echo '<a '.$target.'class="pme_a_u" href="'.$urllink.'">'.$urldisp.'</a>'; |
//echo |
| } elseif (isset($this->fdd[$k]['datemask'])) { |
// $this->mdate_displayPlain( |
| // display date according to a mask if any |
// $this->mdate_from_mysql( |
| //echo $this->mdate_set($row[$k],$this->fdd[$k]['type'],$this->fdd[$k]['datemask']); |
// $row[$k]), |
| //echo |
// ( |
| // $this->mdate_displayPlain( |
// $this->fdd[$k]['datemask']? |
| // $this->mdate_from_mysql( |
// $this->fdd[$k]['datemask'] |
| // $row[$k]), |
// : |
| // ( |
// $this->mdate_masks[$this->fdd[$k]['type']] |
| // $this->fdd[$k]['datemask']? |
// ) |
| // $this->fdd[$k]['datemask'] |
// ); |
| // : |
//echo $row[$k]; |
| // $this->mdate_masks[$this->fdd[$k]['type']] |
// it's a normal field |
| // ) |
if (isset($this->fdd[$k]['trimlen']) |
| // ); |
&& strlen($row["qf$k"]) > $this->fdd[$k]['trimlen']) { |
| //echo $row[$k]; |
$shortdisp = ereg_replace("[\r\n\t ]+", ' ', $row["qf$k"]); |
| // it's a normal field |
$shortdisp = substr($shortdisp,0,$this->fdd[$k]['trimlen']-3).'...'; |
| |
} else { |
| |
$shortdisp = $row["qf$k"]; |
| |
} |
| |
echo nl2br($this->htmlDisplay($this->fdd[$k], $shortdisp)); |
| |
} else { |
| |
// it's a normal field |
| |
if ($row["qf$k"] === null) { |
| |
$shortdisp = $this->fdd[$k]['values2'][$row['qf'.$k.'_idx']]; |
| |
//$shortdisp .= ' ('.$row['qf'.$k.'_idx'].')'; |
| |
!isset($shortdisp) && $shortdisp = ''; |
| |
} else { |
| if (isset($this->fdd[$k]['trimlen']) |
if (isset($this->fdd[$k]['trimlen']) |
| && strlen($row["qf$k"]) > $this->fdd[$k]['trimlen']) { |
&& strlen($row["qf$k"]) > $this->fdd[$k]['trimlen']) { |
| $shortdisp = ereg_replace("[\r\n\t ]+", ' ', $row["qf$k"]); |
$shortdisp = ereg_replace("[\r\n\t ]+",' ',$row["qf$k"]); |
| $shortdisp = substr($shortdisp,0,$this->fdd[$k]['trimlen']-3).'...'; |
$shortdisp = substr($shortdisp,0,$this->fdd[$k]['trimlen']-3).'...'; |
| } else { |
} else { |
| $shortdisp = $row["qf$k"]; |
$shortdisp = $row["qf$k"]; |
| } |
} |
| echo nl2br($this->htmlDisplay($this->fdd[$k], $shortdisp)); |
|
| } else { |
|
| // it's a normal field |
|
| if ($row["qf$k"] === null) { |
|
| $shortdisp = $this->fdd[$k]['values2'][$row['qf'.$k.'_idx']]; |
|
| //$shortdisp .= ' ('.$row['qf'.$k.'_idx'].')'; |
|
| !isset($shortdisp) && $shortdisp = ''; |
|
| } else { |
|
| if (isset($this->fdd[$k]['trimlen']) |
|
| && strlen($row["qf$k"]) > $this->fdd[$k]['trimlen']) { |
|
| $shortdisp = ereg_replace("[\r\n\t ]+",' ',$row["qf$k"]); |
|
| $shortdisp = substr($shortdisp,0,$this->fdd[$k]['trimlen']-3).'...'; |
|
| } else { |
|
| $shortdisp = $row["qf$k"]; |
|
| } |
|
| } |
|
| echo nl2br($this->htmlDisplay($this->fdd[$k], $shortdisp)); |
|
| } |
} |
| } else { |
echo nl2br($this->htmlDisplay($this->fdd[$k], $shortdisp)); |
| // it's hidden or a password |
|
| echo '<i>hidden</i>'; |
|
| } |
} |
| echo '</td>'."\n"; |
} else { |
| /* } // if else */ |
// it's hidden or a password |
| } // if |
echo '<i>hidden</i>'; |
| |
} |
| |
echo '</td>'."\n"; |
| } // for |
} // for |
| |
|
| echo ' </tr>'."\n"; |
echo ' </tr>'."\n"; |
| } // while |
} // while |
| |
|
| |
|
| /* |
/* |
|
|
| } |
} |
| |
|
| echo '<table width="100%" border="1" cellpadding="1" cellspacing="0" summary="'.$this->tb.'">'."\n"; |
echo '<table width="100%" border="1" cellpadding="1" cellspacing="0" summary="'.$this->tb.'">'."\n"; |
| echo ' <input type="hidden" name="rec" value="'.($this->copy_operation()?'':$this->rec).'" />'."\n"; |
echo '<input type="hidden" name="rec" value="'.($this->copy_operation()?'':$this->rec).'" />'."\n"; |
| echo ' <input type="hidden" name="fm" value="'.$this->fm.'" />'."\n"; |
echo '<input type="hidden" name="fm" value="'.$this->fm.'" />'."\n"; |
| echo ' <input type="hidden" name="sfn" value="'.$this->sfn.'" />'."\n"; |
echo '<input type="hidden" name="sfn" value="'.$this->sfn.'" />'."\n"; |
| echo ' <input type="hidden" name="fl" value="'.$this->fl.'" />'."\n"; |
echo '<input type="hidden" name="fl" value="'.$this->fl.'" />'."\n"; |
| |
echo $this->get_qf_hidden_fields(); |
| |
echo '<input type="hidden" name="qfn" value="'.htmlspecialchars($this->qfn).'" />'."\n"; |
| /* |
/* |
| * preserve the values of any filter fields qf0..qfn for Pass 3 |
$this->qfn = ''; |
| */ |
|
| for ($k = 0; $k < $this->num_fds; $k++) { |
for ($k = 0; $k < $this->num_fds; $k++) { |
| $l = 'qf'.$k; |
$l = 'qf'.$k; |
| $lc = 'qf'.$k.'_comp'; |
$lc = 'qf'.$k.'_comp'; |
|
|
| $$lc = $this->get_cgi_var($lc); |
$$lc = $this->get_cgi_var($lc); |
| $m = $this->web2plain($$l); // get the field name and value |
$m = $this->web2plain($$l); // get the field name and value |
| $mc = $this->web2plain($$lc); // get the comparison operator for numeric/date types |
$mc = $this->web2plain($$lc); // get the comparison operator for numeric/date types |
| if (isset($m)) { |
if (! isset($m)) { |
| if (is_array($m)) { // multiple selection has been used |
continue; |
| if (!in_array('*',$m)) { // one '*' in a multiple selection is all you need |
} |
| for ($n=0; $n<count($m); $n++) { |
if (is_array($m)) { // multiple selection has been used |
| if ($this->plain2web($m[$n]) != '') { |
if (!in_array('*',$m)) { // one '*' in a multiple selection is all you need |
| echo ' <input type="hidden" name="qf'.$k.'['.$n.']" value="' |
for ($n=0; $n<count($m); $n++) { |
| .$this->plain2web($m[$n]).'">'."\n"; |
if ($this->plain2web($m[$n]) != '') { |
| } |
$this->qfn = $this->qfn.'&qf'.$k.'['.$n.']=' |
| |
.$this->plain2web($m[$n]); } |
| |
echo '<input type="hidden" name="qf'.$k.'['.$n.']" value="' |
| |
.$this->plain2web($m[$n]).'">'."\n"; |
| } |
} |
| } |
} |
| } else { |
} |
| if ($this->plain2web($m) != '') { |
} else { |
| $this->qfn = $this->qfn.'&qf'.$k.'='.$m; |
if ($this->plain2web($m) != '') { |
| echo ' <input type="hidden" name="qf'.$k.'" value="'.$this->plain2web($m).'">'."\n"; |
$this->qfn = $this->qfn.'&qf'.$k.'='.$m; |
| } |
echo '<input type="hidden" name="qf'.$k.'" value="'.$this->plain2web($m).'">'."\n"; |
| } |
} |
| } |
} |
| } |
} |
| echo ' <input type="hidden" name="qfn" value="'.$this->qfn.'" />'."\n"; |
*/ |
| |
|
| if ($this->add_operation()) { |
if ($this->add_operation()) { |
| $this->display_add_record(); |
$this->display_add_record(); |
| } else { |
} else { |
| $this->display_copy_change_delete_record(); |
$this->display_copy_change_delete_record(); |
| } |
} |
| |
|
| echo '</table>'."\n"; |
echo '</table>'."\n"; |
| |
|
| if ($this->nav_down()) { |
if ($this->nav_down()) { |
| //display buttons at bottom of page - sparky |
//display buttons at bottom of page - sparky |
| echo " <hr />\n"; |
echo " <hr />\n"; |
| $this->display_record_buttons(); |
$this->display_record_buttons(); |
| } |
} |
| |
|
| echo '</form>'."\n"; |
echo '</form>'."\n"; |
| |
|
| } /* }}} */ |
} /* }}} */ |
| |
|
| /* |
/* |
| Line 2713 echo '<h5>'.mysql_affected_rows ().' '.$ |
|
| Line 2640 echo '<h5>'.mysql_affected_rows ().' '.$ |
|
| $this->page_name = $opts['page_name']; |
$this->page_name = $opts['page_name']; |
| |
|
| // alternate row background colors |
// alternate row background colors |
| if (isset($opts['bgcolorOdd'])) { |
/* What's this?! |
| $this->bgcolorOdd = 'White'; |
|
| } else { |
if (isset($opts['bgcolorOdd'])) { |
| $this->bgcolorOdd = $opts['bgcolorOdd']; |
$this->bgcolorOdd = 'White'; |
| } |
} else { |
| if (isset($opts['bgColorEven'])) { |
$this->bgcolorOdd = $opts['bgcolorOdd']; |
| $this->bgcolorEven = 'Silver'; |
} |
| } else { |
if (isset($opts['bgColorEven'])) { |
| $this->bgcolorEven = $opts['bgcolorEven']; |
$this->bgcolorEven = 'Silver'; |
| } |
} else { |
| |
$this->bgcolorEven = $opts['bgcolorEven']; |
| |
} |
| |
*/ |
| |
|
| // e-mail notification |
// e-mail notification |
| if (isset($opts['notify'])) { |
if (isset($opts['notify'])) { |
| Line 2739 echo '<h5>'.mysql_affected_rows ().' '.$ |
|
| Line 2669 echo '<h5>'.mysql_affected_rows ().' '.$ |
|
| } |
} |
| |
|
| /* |
/* |
| * Find the URL to post forms |
* Find the URL to post forms |
| */ |
*/ |
| |
|
| $this->page_name = basename($HTTP_SERVER_VARS['PHP_SELF']); |
$this->page_name = basename($HTTP_SERVER_VARS['PHP_SELF']); |
| |
|
| /* |
/* |
| * form variables all around |
* Form variables all around |
| */ |
*/ |
| |
|
| $this->operation = $this->get_cgi_var('operation'); |
$this->operation = $this->get_cgi_var('operation'); |
| $this->apply = $this->get_cgi_var('apply'); |
$this->apply = $this->get_cgi_var('apply'); |
| $this->fl = $this->get_cgi_var('fl'); |
$this->fl = intval($this->get_cgi_var('fl')); |
| $this->fm = intval($this->get_cgi_var('fm')); |
$this->fm = intval($this->get_cgi_var('fm')); |
| |
|
| $this->sfn = $this->get_cgi_var('sfn'); |
$this->sfn = $this->get_cgi_var('sfn'); |
| $this->sort_asc = $this->sfn[0] != '-'; |
$this->sort_asc = $this->sfn[0] != '-'; |
| $this->sfn = abs(intval($this->sfn)); |
$this->sfn = abs(intval($this->sfn)); |
| |
|
| //$this->qfn = intval($this->get_cgi_var('qfn')); |
$this->qfn = $this->get_cgi_var('qfn'); |
| $this->qfn = ''; |
|
| $this->sw = $this->get_cgi_var('sw'); |
$this->sw = $this->get_cgi_var('sw'); |
| $this->rec = $this->get_cgi_var('rec', ''); // Fixed #523390 [7/8/2002] [2/2] |
$this->rec = $this->get_cgi_var('rec', ''); // Fixed #523390 [7/8/2002] [2/2] |
| $this->prev = $this->get_cgi_var('prev'); |
$this->prev = $this->get_cgi_var('prev'); |
| Line 2769 echo '<h5>'.mysql_affected_rows ().' '.$ |
|
| Line 2698 echo '<h5>'.mysql_affected_rows ().' '.$ |
|
| $this->savedelete = $this->get_cgi_var('savedelete'); |
$this->savedelete = $this->get_cgi_var('savedelete'); |
| |
|
| /* |
/* |
| |
* Filter setting |
| |
*/ |
| |
if (isset($this->sw)) { |
| |
$this->sw == $this->labels['Search'] && $this->fl = 1; |
| |
$this->sw == $this->labels['Hide'] && $this->fl = 0; |
| |
} |
| |
|
| |
/* |
| |
* Specific $fdd modifications depending on performed action |
| |
*/ |
| |
|
| |
$action_letter = 'L'; // list by default |
| |
$this->filter_operation() && $action_letter = 'F'; |
| |
$this->view_operation() && $action_letter = 'V'; |
| |
$this->delete_operation() && $action_letter = 'D'; |
| |
$this->add_operation() && $action_letter = 'A'; |
| |
$this->change_operation() && $action_letter = 'C'; |
| |
$this->copy_operation() && $action_letter = 'P'; |
| |
//echo $action_letter.'<hr>'; |
| |
|
| |
foreach (array_keys($this->fdd) as $column) { |
| |
foreach (array_keys($this->fdd[$column]) as $col_option) { |
| |
if (strchr($col_option, '|')) { |
| |
$col_ar = explode('|', $col_option, 2); |
| |
if (stristr($col_ar[1], $action_letter)) { |
| |
$this->fdd[$column][$col_ar[0]] = $this->fdd[$column][$col_option]; |
| |
unset($this->fdd[$column][$col_option]); |
| |
//echo $column.': changing '.$col_option.' for '.$col_ar[0].'<br>'; |
| |
} |
| |
} |
| |
} |
| |
} |
| |
|
| |
/* |
| * Extract SQL Field Names and number of fields |
* Extract SQL Field Names and number of fields |
| */ |
*/ |
| |
|
| $this->guidance = false; |
$this->guidance = false; |
| $field_num = 0; |
$field_num = 0; |
| $num_fields_displayed = 0; |
$num_fields_displayed = 0; |