Esempio n. 1
0
 /**
  * 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;
 }