You are here

function ARC_sparql2sql_rewriter::parse_union_pattern in Taxonomy import/export via XML 6

Same name and namespace in other branches
  1. 5.2 arc/ARC_sparql2sql_rewriter.php \ARC_sparql2sql_rewriter::parse_union_pattern()
  2. 5 arc/ARC_sparql2sql_rewriter.php \ARC_sparql2sql_rewriter::parse_union_pattern()
  3. 6.2 arc/ARC_sparql2sql_rewriter.php \ARC_sparql2sql_rewriter::parse_union_pattern()

File

arc/ARC_sparql2sql_rewriter.php, line 1119

Class

ARC_sparql2sql_rewriter

Code

function parse_union_pattern($args = "") {
  $result = "";
  $union_count = 0;
  if (is_array($args)) {
    foreach ($args as $k => $v) {
      ${$k} = $v;
    }
  }
  if ($entries = $pattern["entries"]) {
    $this->union_count++;
    $base_t_count = 100 + $this->t_count;
    if (!array_key_exists("base_t_count", $this->union_t_counts)) {
      $this->union_t_counts["base_t_count"] = $base_t_count;
    }
    $pos = 0;
    $this->union_branches[$this->union_count] = array();
    foreach ($entries as $cur_pattern) {
      $cur_type = $cur_pattern["type"];
      if (!$cur_type) {
        $cur_pattern = $cur_pattern[0];
        $cur_type = $cur_pattern["type"];
      }
      $pos++;
      $union_branch_id = $this->union_count . "_" . $pos;
      $this->union_t_counts[$union_branch_id] = $base_t_count;
      $cur_args = array(
        "ind" => $ind . " ",
        "in_optional" => $in_optional,
        "optional_count" => $optional_count,
        "parent_optional_count" => $parent_optional_count,
        "in_union" => true,
        "union_count" => $this->union_count,
        "union_branch_id" => $union_branch_id,
        "pattern" => $cur_pattern,
      );
      $mthd = "parse_" . $cur_type . "_pattern";
      if (method_exists($this, $mthd)) {
        if ($sub_code = $this
          ->{$mthd}($cur_args)) {
          $this->union_branches[$this->union_count][] = $sub_code;
          $result .= strlen($result) ? "" : "__union_" . $this->union_count . "__";

          //$result.=(strlen($result)) ? "\n".$ind."OR\n".$ind."(\n ".str_replace("\n", "\n ", $sub_code)."\n".$ind.")" : $sub_code;
        }
      }
    }
  }
  return strlen($result) ? $ind . "(\n" . $result . "\n" . $ind . ")" : "";
}