id = 0; $filter->parent = false; $objects[] = &$filter; if ($element["type"] == "complete") { $parentactual = false; } } else if($element["type"] == "close") { $parentactual = $parent[$parentactual]; } break; case "ELSEFILTER": if ($element["type"] == "complete") { $parent[] = false; $parentactual = 0; $filter = new ElseFilter(); $filter->id = 0; $filter->parent = false; $objects[] = &$filter; } break; case "OR": if ($element["type"] == "open" || $element["type"] == "complete") { $parent[] = $parentactual; $objects[count($parent)-1] = new BinaryLogicOp("Or"); $objects[count($parent)-1]->id = count($parent)-1; $objects[count($parent)-1]->parent = $parentactual; $objects[$parentactual]->operations[] = &$objects[count($parent)-1]; $parentactual = count($parent)-1; if ($element["type"] == "complete") { $parentactual = $parent[$parentactual]; } } else if($element["type"] == "close") { $parentactual = $parent[$parentactual]; } break; case "AND": if ($element["type"] == "open" || $element["type"] == "complete") { $parent[] = $parentactual; $objects[count($parent)-1] = new BinaryLogicOp("And"); $objects[count($parent)-1]->id = count($parent)-1; $objects[count($parent)-1]->parent = $parentactual; $objects[$parentactual]->operations[] = &$objects[count($parent)-1]; $parentactual = count($parent)-1; if ($element["type"] == "complete") { $parentactual = $parent[$parentactual]; } } else if($element["type"] == "close") { $parentactual = $parent[$parentactual]; } break; case "NOT": if ($element["type"] == "open" || $element["type"] == "complete") { $parent[] = $parentactual; $objects[count($parent)-1] = new UnaryLogicOp("Not"); $objects[count($parent)-1]->id = count($parent)-1; $objects[count($parent)-1]->parent = $parentactual; $objects[$parentactual]->operations[] = &$objects[count($parent)-1]; $parentactual = count($parent)-1; if ($element["type"] == "complete") { $parentactual = $parent[$parentactual]; } } else if($element["type"] == "close") { $parentactual = $parent[$parentactual]; } break; case "PROPERTYISEQUALTO": if ($element["type"] == "open" || $element["type"] == "complete") { $parent[] = $parentactual; $objects[count($parent)-1] = new BinaryComparisonOp("PropertyIsEqualTo"); $objects[count($parent)-1]->id = count($parent)-1; $objects[count($parent)-1]->parent = $parentactual; $objects[$parentactual]->operations[] = &$objects[count($parent)-1]; $parentactual = count($parent)-1; if ($element["type"] == "complete") { $parentactual = $parent[$parentactual]; } } else if($element["type"] == "close") { $parentactual = $parent[$parentactual]; } break; case "PROPERTYISNOTEQUALTO": if ($element["type"] == "open" || $element["type"] == "complete") { $parent[] = $parentactual; $objects[count($parent)-1] = new BinaryComparisonOp("PropertyIsNotEqualTo"); $objects[count($parent)-1]->id = count($parent)-1; $objects[count($parent)-1]->parent = $parentactual; $objects[$parentactual]->operations[] = &$objects[count($parent)-1]; $parentactual = count($parent)-1; if ($element["type"] == "complete") { $parentactual = $parent[$parentactual]; } } else if($element["type"] == "close") { $parentactual = $parent[$parentactual]; } break; case "PROPERTYISGREATERTHAN": if ($element["type"] == "open" || $element["type"] == "complete") { $parent[] = $parentactual; $objects[count($parent)-1] = new BinaryComparisonOp("PropertyIsGreaterThan"); $objects[count($parent)-1]->id = count($parent)-1; $objects[count($parent)-1]->parent = $parentactual; $objects[$parentactual]->operations[] = &$objects[count($parent)-1]; $parentactual = count($parent)-1; if ($element["type"] == "complete") { $parentactual = $parent[$parentactual]; } } else if($element["type"] == "close") { $parentactual = $parent[$parentactual]; } break; case "PROPERTYISGREATERTHANOREQUALTO": if ($element["type"] == "open" || $element["type"] == "complete") { $parent[] = $parentactual; $objects[count($parent)-1] = new BinaryComparisonOp("PropertyIsGreaterThanOrEqualTo"); $objects[count($parent)-1]->id = count($parent)-1; $objects[count($parent)-1]->parent = $parentactual; $objects[$parentactual]->operations[] = &$objects[count($parent)-1]; $parentactual = count($parent)-1; if ($element["type"] == "complete") { $parentactual = $parent[$parentactual]; } } else if($element["type"] == "close") { $parentactual = $parent[$parentactual]; } break; case "PROPERTYISLESSTHAN": if ($element["type"] == "open" || $element["type"] == "complete") { $parent[] = $parentactual; $objects[count($parent)-1] = new BinaryComparisonOp("PropertyIsLessThan"); $objects[count($parent)-1]->id = count($parent)-1; $objects[count($parent)-1]->parent = $parentactual; $objects[$parentactual]->operations[] = &$objects[count($parent)-1]; $parentactual = count($parent)-1; if ($element["type"] == "complete") { $parentactual = $parent[$parentactual]; } } else if($element["type"] == "close") { $parentactual = $parent[$parentactual]; } break; case "PROPERTYISLESSTHANOREQUALTO": if ($element["type"] == "open" || $element["type"] == "complete") { $parent[] = $parentactual; $objects[count($parent)-1] = new BinaryComparisonOp("PropertyIsLessThanOrEqualTo"); $objects[count($parent)-1]->id = count($parent)-1; $objects[count($parent)-1]->parent = $parentactual; $objects[$parentactual]->operations[] = &$objects[count($parent)-1]; $parentactual = count($parent)-1; if ($element["type"] == "complete") { $parentactual = $parent[$parentactual]; } } else if($element["type"] == "close") { $parentactual = $parent[$parentactual]; } break; case "PROPERTYISLIKE": if ($element["type"] == "open" || $element["type"] == "complete") { $parent[] = $parentactual; $objects[count($parent)-1] = new PropertyIsLike(); $objects[count($parent)-1]->id = count($parent)-1; $objects[count($parent)-1]->parent = $parentactual; $objects[count($parent)-1]->wildCard = $element["attributes"]["wildCard"]; $objects[count($parent)-1]->singleChar = $element["attributes"]["singleChar"]; $objects[count($parent)-1]->escape = $element["attributes"]["escape"]; $objects[$parentactual]->operations[] = &$objects[count($parent)-1]; $parentactual = count($parent)-1; if ($element["type"] == "complete") { $parentactual = $parent[$parentactual]; } } else if($element["type"] == "close") { $parentactual = $parent[$parentactual]; } break; case "PROPERTYISNULL": if ($element["type"] == "open" || $element["type"] == "complete") { $parent[] = $parentactual; $objects[count($parent)-1] = new PropertyIsNull(); $objects[count($parent)-1]->id = count($parent)-1; $objects[count($parent)-1]->parent = $parentactual; $objects[$parentactual]->operations[] = &$objects[count($parent)-1]; $parentactual = count($parent)-1; if ($element["type"] == "complete") { $parentactual = $parent[$parentactual]; } } else if($element["type"] == "close") { $parentactual = $parent[$parentactual]; } break; case "PROPERTYISBETWEEN": if ($element["type"] == "open" || $element["type"] == "complete") { $parent[] = $parentactual; $objects[count($parent)-1] = new PropertyIsBetween(); $objects[count($parent)-1]->id = count($parent)-1; $objects[count($parent)-1]->parent = $parentactual; $objects[$parentactual]->operations[] = &$objects[count($parent)-1]; $parentactual = count($parent)-1; if ($element["type"] == "complete") { $parentactual = $parent[$parentactual]; } } else if($element["type"] == "close") { $parentactual = $parent[$parentactual]; } break; case "LITERAL": if ($element["type"] == "complete") { if ($boundary == "upper") { $objects[$parentactual]->upperBoundary = $element["value"]; } else if ($boundary == "lower") { $objects[$parentactual]->lowerBoundary = $element["value"]; } else { $objects[$parentactual]->ogcLiteral = $element["value"]; } } break; case "PROPERTYNAME": if ($element["type"] == "complete") { $objects[$parentactual]->ogcPropertyName = $element["value"]; } break; case "LOWERBOUNDARY": if ($element["type"] == "open") { $boundary = "lower"; } else if ($element["type"] == "close") { $boundary = ""; } break; case "UPPERBOUNDARY": if ($element["type"] == "open") { $boundary = "upper"; } else if ($element["type"] == "close") { $boundary = ""; } break; } } $_SESSION["sld_filter_objects"] = $objects; return $filter; } ?>