function ARC_sparql2sql_rewriter::get_result_vars_code in Taxonomy import/export via XML 6
Same name and namespace in other branches
- 5.2 arc/ARC_sparql2sql_rewriter.php \ARC_sparql2sql_rewriter::get_result_vars_code()
- 5 arc/ARC_sparql2sql_rewriter.php \ARC_sparql2sql_rewriter::get_result_vars_code()
- 6.2 arc/ARC_sparql2sql_rewriter.php \ARC_sparql2sql_rewriter::get_result_vars_code()
2 calls to ARC_sparql2sql_rewriter::get_result_vars_code()
File
- arc/
ARC_sparql2sql_rewriter.php, line 318
Class
Code
function get_result_vars_code($args = "") {
$result = "";
$union_branch_id = "";
if (is_array($args)) {
foreach ($args as $k => $v) {
${$k} = $v;
}
}
/* union_branch_id */
$vars = $this->infos["result_vars"] ? $this->infos["result_vars"] : array();
$added_aliases = array();
/* each id2val join needs a separate alias */
$conv_id = in_array($this->config["id_type"], array(
"hash_int",
"incr_int",
));
foreach ($vars as $cur_var) {
if (($alias_infos = @$this->term2alias[$cur_var]) || ($alias_infos = @$this->optional_term2alias[$cur_var])) {
$result .= strlen($result) ? ", \n " : "\n ";
$null_var = false;
/* whether var occurs in global pattern or current union_branch */
$alias_info = $alias_infos[0];
if ($union_branch_id) {
$null_var = true;
foreach ($alias_infos as $cur_alias_info) {
/* todo: nested unions */
if (!$cur_alias_info["union_branch_id"] || $cur_alias_info["union_branch_id"] == $union_branch_id) {
/* global var */
$null_var = false;
$alias_info = $cur_alias_info;
break;
}
}
}
$alias = $alias_info["alias"];
$col = $alias_info["col"];
$term = $alias_info["term"];
$tbl_alias = "V" . $alias;
$alias_ext = 2;
while (in_array($tbl_alias, $added_aliases)) {
$tbl_alias = "V" . $alias . "_" . $alias_ext;
$alias_ext++;
}
$full_tbl_alias = $tbl_alias . ".val";
/* alias alternatives (peer optionals handling) */
if ($alts = @$this->alias_alternatives["T" . $alias . "." . $col]) {
$sub_result = "IFNULL(" . $tbl_alias . ".val, ";
$sub_result_2 = "IFNULL(T" . $alias . ".__placeholder__, ";
for ($i = 0, $i_max = count($alts); $i < $i_max; $i++) {
$cur_alt = $alts[$i];
$alt_alias = $cur_alt["alias"];
$alt_col = $cur_alt["col"];
$alt_tbl_alias = "V" . $alt_alias;
$alias_ext = 2;
while (in_array($alt_tbl_alias, $added_aliases)) {
$alt_tbl_alias = $cur_alt . "_" . $alias_ext;
$alias_ext++;
}
$sub_result .= $i < $i_max - 1 ? "IFNULL(" . $alt_tbl_alias . ".val" : $alt_tbl_alias . ".val";
$sub_result_2 .= $i < $i_max - 1 ? "IFNULL(T" . $alt_alias . ".__placeholder__" : "T" . $alt_alias . ".__placeholder__";
}
for ($i = 0; $i < $i_max; $i++) {
$sub_result .= ")";
$sub_result_2 .= ")";
}
$full_tbl_alias = $sub_result;
}
$result .= $null_var ? "CONCAT('NULL ', " . $full_tbl_alias . ") AS `" . $cur_var . "`" : $full_tbl_alias . " AS `" . $cur_var . "`";
$added_aliases[] = $tbl_alias;
if ($col == "s") {
if (@$sub_result_2) {
$result .= ",\n " . str_replace("__placeholder__", "s_type", $sub_result_2) . " AS `" . $cur_var . "__type`";
}
else {
$result .= ",\n T" . $alias . ".s_type AS `" . $cur_var . "__type`";
}
}
if ($col == "o") {
if (@$sub_result_2) {
$result .= ",\n " . str_replace("__placeholder__", "o_type", $sub_result_2) . " AS `" . $cur_var . "__type`";
$result .= ",\n " . str_replace("__placeholder__", "o_lang", $sub_result_2) . " AS `" . $cur_var . "__lang`";
if ($conv_id) {
$result .= ",\n CONV(" . str_replace("__placeholder__", "o_dt", $sub_result_2) . ", 10, 16) AS `" . $cur_var . "__dt`";
}
else {
$result .= ",\n " . str_replace("__placeholder__", "o_dt", $sub_result_2) . " AS `" . $cur_var . "__dt`";
}
}
else {
$result .= ",\n T" . $alias . ".o_type AS `" . $cur_var . "__type`";
$result .= ",\n T" . $alias . ".o_lang AS `" . $cur_var . "__lang`";
if ($conv_id) {
$result .= ",\n CONV(T" . $alias . ".o_dt, 10, 16) AS `" . $cur_var . "__dt`";
}
else {
$result .= ",\n T" . $alias . ".o_dt AS `" . $cur_var . "__dt`";
}
}
}
}
elseif ($alias_infos = @$this->graph_term2alias[$cur_var]) {
$alias = $alias_infos[0]["alias"];
$tbl_alias = "V" . $alias . "_g";
$result .= strlen($result) ? ", \n " : "\n ";
$result .= $tbl_alias . ".val AS `" . $cur_var . "`";
}
}
return $result;
}