/** * Get parents for the given node * */ public function getParents($node, $initialize = true) { global $ari; if (!is_a($node, 'OOB_tree_node')) { return false; } $tree_id = $ari->db->qMagic($this->id); $init = true; if (OOB_validatetext::isBool($initialize)) { $init = $initialize; } $nodeID = $ari->db->qMagic($node->id()); $nodeLeft = $ari->db->qMagic($node->left()); $nodeRight = $ari->db->qMagic($node->right()); # select all nodes where parent.leftvisit<=node.leftvisit and parent.rightvisit>=node.rightvisit # order by parent.leftvisit descending gives bottom up path $sql = "SELECT N.ID, N.ClassName, N.ObjectID, N.Left, N.Right \n\t\t\t\t FROM OOB_Tree_Node N\n\t\t\t\t WHERE N.TreeID = {$tree_id}\n\t\t\t\t AND N.Left <= {$nodeLeft}\n\t\t\t\t AND N.Right >= {$nodeRight}\n\t\t\t\t AND N.ID " . OPERATOR_DISTINCT . " {$nodeID}\t\n\t\t\t\t ORDER BY N.left ASC"; $savem = $ari->db->SetFetchMode(ADODB_FETCH_NUM); $rs = $ari->db->Execute($sql); $ari->db->SetFetchMode($savem); if (!$rs || $rs->EOF) { $result = false; // print "OOB_ROOT"; } else { $result = array(); while (!$rs->EOF) { // print "nodo: " . $rs->fields[0] . ",obj-id: " .$rs->fields[2]."<br>"; $result[] = new OOB_tree_node($rs->fields[0], $rs->fields[1], $rs->fields[2], $rs->fields[3], $rs->fields[4], $this->id, $init); $rs->MoveNext(); } } $rs->Close(); // var_dump ($result); return $result; }