function ARC_sparql2sql_rewriter::get_id2val_join_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_id2val_join_code()
- 5 arc/ARC_sparql2sql_rewriter.php \ARC_sparql2sql_rewriter::get_id2val_join_code()
- 6.2 arc/ARC_sparql2sql_rewriter.php \ARC_sparql2sql_rewriter::get_id2val_join_code()
2 calls to ARC_sparql2sql_rewriter::get_id2val_join_code()
File
- arc/
ARC_sparql2sql_rewriter.php, line 629
Class
Code
function get_id2val_join_code() {
$result = "\n /* id2val joins */";
$vars = $this->infos["result_vars"] ? $this->infos["result_vars"] : array();
/* add regex'd vars */
foreach ($this->val_match_vars as $cur_var) {
if (!in_array($cur_var, $vars)) {
$vars[] = $cur_var;
}
}
$added_aliases = array();
/* each id2val join needs a separate alias */
$tbl_name = $this->config["prefix"] . "_id2val";
$var2tbl_alias = array();
foreach ($vars as $cur_var) {
$tbl_alias = "";
if (($alias_infos = @$this->term2alias[$cur_var]) || ($alias_infos = @$this->optional_term2alias[$cur_var])) {
$alias_info = $alias_infos[0];
$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++;
}
$result .= "\n LEFT JOIN " . $tbl_name . " " . $tbl_alias . " ON (";
$result .= "" . $tbl_alias . ".id=T" . $alias . "." . $col;
$result .= ")";
$added_aliases[] = $tbl_alias;
/* alias alternatives */
if ($alias_info["optional_count"]) {
foreach ($alias_infos as $cur_alias_info) {
$cur_tbl_alias = "T" . $cur_alias_info["alias"] . "." . $cur_alias_info["col"];
if ($alts = @$this->alias_alternatives[$cur_tbl_alias]) {
foreach ($alts as $cur_alt) {
$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++;
}
$result .= "\n LEFT JOIN " . $tbl_name . " " . $alt_tbl_alias . " ON (";
$result .= "" . $alt_tbl_alias . ".id=T" . $alt_alias . "." . $alt_col;
$result .= ")";
}
}
}
}
}
elseif ($alias_infos = @$this->graph_term2alias[$cur_var]) {
$alias = $alias_infos[0]["alias"];
$tbl_alias = "V" . $alias . "_g";
$result .= "\n LEFT JOIN " . $tbl_name . " " . $tbl_alias . " ON (";
$result .= "" . $tbl_alias . ".id=T" . $alias . ".g";
$result .= ")";
}
if ($tbl_alias) {
$var2tbl_alias[$cur_var] = $tbl_alias;
}
}
/* regex'd vars */
foreach ($this->val_match_vars as $cur_var) {
$this->where_code = str_replace("V__regex_match_" . $cur_var . "__", $var2tbl_alias[$cur_var], $this->where_code);
}
return $result;
}