You are here

function ARC_sparql_parser::parse_OrderCondition in Taxonomy import/export via XML 6

Same name and namespace in other branches
  1. 5.2 arc/ARC_sparql_parser.php \ARC_sparql_parser::parse_OrderCondition()
  2. 5 arc/ARC_sparql_parser.php \ARC_sparql_parser::parse_OrderCondition()
  3. 6.2 arc/ARC_sparql_parser.php \ARC_sparql_parser::parse_OrderCondition()
1 call to ARC_sparql_parser::parse_OrderCondition()
ARC_sparql_parser::parse_OrderClause in arc/ARC_sparql_parser.php

File

arc/ARC_sparql_parser.php, line 644

Class

ARC_sparql_parser

Code

function parse_OrderCondition() {
  $q = $this->q;
  $conds = array();
  do {
    $cond = false;

    /* (ASC|DESC) (BrackettedExpression) */
    if (preg_match("/^(ASC|DESC)?(\\s*)(\\(.*)\$/is", $q, $matches)) {
      if (($bracket_data = $this
        ->extract_bracket_data($matches[3])) && ($sub_result = $this
        ->parse_Expression(trim($bracket_data)))) {
        $cond = true;
        $conds[] = array(
          "type" => "expression",
          "direction" => strtolower($matches[1]),
          "expression" => $sub_result,
        );
        $q = trim(substr($q, strlen($matches[1] . $matches[2] . $bracket_data) + 2));
      }
      if (preg_match("/^(ASC|DESC)?(\\s*)(\\(.*)\$/is", $q, $matches)) {
        if (($bracket_data = $this
          ->extract_bracket_data($matches[3])) && ($sub_result = $this
          ->parse_Expression(trim($bracket_data)))) {
          $cond = true;
          $conds[] = array(
            "type" => "expression",
            "direction" => strtolower($matches[1]),
            "expression" => $sub_result,
          );
          $q = trim(substr($q, strlen($matches[1] . $matches[2] . $bracket_data) + 2));
        }
      }
      if (preg_match("/^(ASC|DESC)?(\\s*)(\\(.*)\$/is", $q, $matches)) {
        if (($bracket_data = $this
          ->extract_bracket_data($matches[3])) && ($sub_result = $this
          ->parse_Expression(trim($bracket_data)))) {
          $cond = true;
          $conds[] = array(
            "type" => "expression",
            "direction" => strtolower($matches[1]),
            "expression" => $sub_result,
          );
          $q = trim(substr($q, strlen($matches[1] . $matches[2] . $bracket_data) + 2));
        }
      }
      if (preg_match("/^(ASC|DESC)?(\\s*)(\\(.*)\$/is", $q, $matches)) {
        if (($bracket_data = $this
          ->extract_bracket_data($matches[3])) && ($sub_result = $this
          ->parse_Expression(trim($bracket_data)))) {
          $cond = true;
          $conds[] = array(
            "type" => "expression",
            "direction" => strtolower($matches[1]),
            "expression" => $sub_result,
          );
          $q = trim(substr($q, strlen($matches[1] . $matches[2] . $bracket_data) + 2));
        }
      }
    }
    elseif ($sub_result = $this
      ->parse_Var($q)) {
      $cond = true;
      $q = $sub_result["unparsed_val"];
      unset($sub_result["unparsed_val"]);
      $conds[] = $sub_result;
    }
    elseif ($sub_result = $this
      ->parse_FunctionCall($q)) {
      $cond = true;
      $q = $sub_result["unparsed_val"];
      unset($sub_result["unparsed_val"]);
      $conds[] = $sub_result;
    }
  } while ($cond);
  $this->infos["order_conditions"] = $conds;
  $this->q = trim($q);
}