Add in some filtering - not quite there yet

This commit is contained in:
Miles Lott 2001-02-04 10:44:41 +00:00
parent 19a6c40768
commit b6c8094da1

View File

@ -152,19 +152,11 @@
return $return_fields;
}
function read($start,$offset,$fields,$query="",$sort="",$order="") // send this the range,query,sort,order
function read($start,$offset,$fields,$query="",$filter="",$sort="",$order="") // send this the range,query,sort,order
// and whatever fields you want to see
{
global $phpgw,$phpgw_info;
if (!$sort) { $sort = "ASC"; }
if ($order) {
$ordermethod = "order by $order $sort ";
} else {
$ordermethod = "order by N_Family,N_Given,D_EMAIL $sort";
}
list($stock_fields,$stock_fieldnames,$extra_fields) = $this->split_stock_and_extras($fields);
if (count($stock_fieldnames)) {
$t_fields = "," . implode(",",$stock_fieldnames);
@ -173,6 +165,51 @@
}
}
// the following filter section is not working yet
if ($filter) {
echo "DEBUG - Inbound filter is: #".$filter."#";
$filterarray = split(',',$filter);
if ($filterarray[1]) {
$i=0;
while (list($name,$value) = split('=',$filterarray[$i])) {
$filterfields[$i] .= array($name => $value);
$i++;
}
} else {
list($name,$value) = split('=',$filter);
echo "<br>DEBUG - Filter intermediate strings 1: #".$name."# => #".$value."#";
$filterfields = array($name => $value);
}
$i=0;
while (list($name,$value) = each($filterfields)) {
echo "<br>DEBUG - Filter intermediate strings 2: #".$name."# => #".$value."#";
$filterlist .= $name."='".$value."',";
$i++;
}
echo "<br>DEBUG - Filter output string: #".$filterlist."#";
list($fields,$fieldnames,$extra) = $this->split_stock_and_extras($filterfields);
if ($extra) {
while (list($name,$value) = each($extra)) {
$filterextra .= " AND contact_name='".$name."' AND contact_value='".$value."',";
}
} else {
$filterstock = " AND ($filterlist) ";
}
$filterextra = substr($filterextra,0,-1);
}
if (!$sort) { $sort = "ASC"; }
if ($order) {
$ordermethod = "order by $order $sort ";
} else {
$ordermethod = "order by N_Family,N_Given,D_EMAIL $sort";
}
$this->db3 = $this->db2 = $this->db; // Create new result objects before our queries
if ($query) {
@ -212,7 +249,7 @@
}
$this->db2->query("select contact_name,contact_value from addressbook_extra where contact_id='"
. $this->db->f("id") . "'",__LINE__,__FILE__);
. $this->db->f("id") . "'" .$filterextra,__LINE__,__FILE__);
while ($this->db2->next_record()) {
// If its not in the list to be returned, don't return it.
// This is still quicker then 5(+) separate queries