18                        foreach($this->
fields as $k => &$v) { $v = $k; }
 
   39                $this->db->query(
"SELECT `".implode(
"` , `", $this->
fields).
"` FROM `".$this->table.
"` WHERE `".$this->fields[
"id"].
"` = ".(
int) 
$id);
 
   41                return $this->db->nf() === 0 ? false : $this->db->get_row(
"assoc");
 
   47                        $this->db->query(
"SELECT `".implode(
"` , `", $this->
fields).
"` FROM `".$this->table.
"` WHERE `".$this->fields[
"left"].
"` >= ".(
int) $node[$this->fields[
"left"]].
" AND `".$this->fields[
"right"].
"` <= ".(
int) $node[$this->fields[
"right"]].
" ORDER BY `".$this->fields[
"left"].
"` ASC");
 
   50                        $this->db->query(
"SELECT `".implode(
"` , `", $this->
fields).
"` FROM `".$this->table.
"` WHERE `".$this->fields[
"parent_id"].
"` = ".(
int) 
$id.
" ORDER BY `".$this->fields[
"position"].
"` ASC");
 
   52                while($this->db->nextr()) $children[$this->db->f($this->
fields[
"id"])] = $this->db->get_row(
"assoc");
 
   58                if(!$node === 
false) 
return false;
 
   59                $this->db->query(
"SELECT `".implode(
"` , `", $this->
fields).
"` FROM `".$this->table.
"` WHERE `".$this->fields[
"left"].
"` <= ".(
int) $node[$this->fields[
"left"]].
" AND `".$this->fields[
"right"].
"` >= ".(
int) $node[$this->fields[
"right"]]);
 
   60                while($this->db->nextr()) 
$path[$this->db->f($this->
fields[
"id"])] = $this->db->get_row(
"assoc");
 
   65                return $this->
_move(0, $parent, $position);
 
   68                if((
int)
$id === 1) { 
return false; }
 
   72                $dif = $rgt - $lft + 1;
 
   76                        "DELETE FROM `".$this->table.
"` " . 
 
   77                        "WHERE `".$this->fields[
"left"].
"` >= ".$lft.
" AND `".$this->fields[
"right"].
"` <= ".$rgt
 
   81                        "UPDATE `".$this->table.
"` " . 
 
   82                                "SET `".$this->fields[
"left"].
"` = `".$this->fields[
"left"].
"` - ".$dif.
" " . 
 
   83                        "WHERE `".$this->fields[
"left"].
"` > ".$rgt
 
   87                        "UPDATE `".$this->table.
"` " . 
 
   88                                "SET `".$this->fields[
"right"].
"` = `".$this->fields[
"right"].
"` - ".$dif.
" " . 
 
   89                        "WHERE `".$this->fields[
"right"].
"` > ".$lft
 
   97                        "UPDATE `".$this->table.
"` " . 
 
   98                                "SET `".$this->fields[
"position"].
"` = `".$this->fields[
"position"].
"` - 1 " . 
 
   99                        "WHERE `".$this->fields[
"parent_id"].
"` = ".$pid.
" AND `".$this->fields[
"position"].
"` > ".$pos
 
  103        function _move(
$id, $ref_id, $position = 0, $is_copy = 
false) {
 
  104                if((
int)$ref_id === 0 || (
int)
$id === 1) { 
return false; }
 
  112                $node_ids = array(-1);
 
  113                if($node !== 
false) {
 
  116                        if(in_array($ref_id, $node_ids)) 
return false;
 
  117                        $ndif = $node[$this->
fields[
"right"]] - $node[$this->
fields[
"left"]] + 1;
 
  119                if($position >= count($rchildren)) {
 
  120                        $position = count($rchildren);
 
  124                if($node !== 
false && $is_copy == 
false) {
 
  126                                "UPDATE `".$this->table.
"` " . 
 
  127                                        "SET `".$this->fields[
"position"].
"` = `".$this->
fields[
"position"].
"` - 1 " . 
 
  129                                        "`".$this->fields[
"parent_id"].
"` = ".$node[$this->
fields[
"parent_id"]].
" AND " . 
 
  130                                        "`".$this->fields[
"position"].
"` > ".$node[$this->
fields[
"position"]];
 
  132                                "UPDATE `".$this->table.
"` " . 
 
  133                                        "SET `".$this->fields[
"left"].
"` = `".$this->fields[
"left"].
"` - ".$ndif.
" " . 
 
  134                                "WHERE `".$this->fields[
"left"].
"` > ".$node[$this->fields[
"right"]];
 
  136                                "UPDATE `".$this->table.
"` " . 
 
  137                                        "SET `".$this->fields[
"right"].
"` = `".$this->fields[
"right"].
"` - ".$ndif.
" " . 
 
  139                                        "`".$this->fields[
"right"].
"` > ".$node[$this->fields[
"left"]].
" AND " . 
 
  140                                        "`".$this->fields[
"id"].
"` NOT IN (".implode(
",", $node_ids).
") ";
 
  144                        "UPDATE `".$this->table.
"` " . 
 
  145                                "SET `".$this->fields[
"position"].
"` = `".$this->
fields[
"position"].
"` + 1 " . 
 
  147                                "`".$this->fields[
"parent_id"].
"` = ".$ref_id.
" AND " . 
 
  148                                "`".$this->fields[
"position"].
"` >= ".$position.
" " . 
 
  149                                ( $is_copy ? 
"" : 
" AND `".$this->fields[
"id"].
"` NOT IN (".implode(
",", $node_ids).
") ");
 
  151                $ref_ind = $ref_id === 0 ? (int)$rchildren[count($rchildren) - 1][$this->
fields[
"right"]] + 1 : (int)$ref_node[$this->
fields[
"right"]];
 
  152                $ref_ind = max($ref_ind, 1);
 
  154                $self = ($node !== 
false && !$is_copy && (int)$node[$this->
fields[
"parent_id"]] == $ref_id && $position > $node[$this->
fields[
"position"]]) ? 1 : 0;
 
  155                foreach($rchildren as $k => $v) {
 
  156                        if($v[$this->fields[
"position"]] - $self == $position) {
 
  157                                $ref_ind = (int)$v[$this->fields[
"left"]];
 
  161                if($node !== 
false && !$is_copy && $node[$this->fields[
"left"]] < $ref_ind) {
 
  166                        "UPDATE `".$this->table.
"` " . 
 
  167                                "SET `".$this->fields[
"left"].
"` = `".$this->fields[
"left"].
"` + ".$ndif.
" " . 
 
  169                                "`".$this->fields[
"left"].
"` >= ".$ref_ind.
" " . 
 
  170                                ( $is_copy ? 
"" : 
" AND `".$this->fields[
"id"].
"` NOT IN (".implode(
",", $node_ids).
") ");
 
  172                        "UPDATE `".$this->table.
"` " . 
 
  173                                "SET `".$this->fields[
"right"].
"` = `".$this->fields[
"right"].
"` + ".$ndif.
" " . 
 
  175                                "`".$this->fields[
"right"].
"` >= ".$ref_ind.
" " . 
 
  176                                ( $is_copy ? 
"" : 
" AND `".$this->fields[
"id"].
"` NOT IN (".implode(
",", $node_ids).
") ");
 
  178                $ldif = $ref_id == 0 ? 0 : $ref_node[$this->fields[
"level"]] + 1;
 
  180                if($node !== 
false) {
 
  181                        $ldif = $node[$this->fields[
"level"]] - ($ref_node[$this->fields[
"level"]] + 1);
 
  182                        $idif = $node[$this->fields[
"left"]] - $ref_ind;
 
  185                                        "INSERT INTO `".$this->table.
"` (" . 
 
  186                                                "`".$this->fields[
"parent_id"].
"`, " . 
 
  187                                                "`".$this->fields[
"position"].
"`, " . 
 
  188                                                "`".$this->fields[
"left"].
"`, " . 
 
  189                                                "`".$this->fields[
"right"].
"`, " . 
 
  190                                                "`".$this->fields[
"level"].
"`" . 
 
  194                                                        "`".$this->fields[
"position"].
"`, " . 
 
  195                                                        "`".$this->fields[
"left"].
"` - (".($idif + ($node[$this->fields[
"left"]] >= $ref_ind ? $ndif : 0)).
"), " . 
 
  196                                                        "`".$this->fields[
"right"].
"` - (".($idif + ($node[$this->fields[
"left"]] >= $ref_ind ? $ndif : 0)).
"), " . 
 
  197                                                        "`".$this->fields[
"level"].
"` - (".$ldif.
") " . 
 
  198                                                "FROM `".$this->table.
"` " . 
 
  200                                                        "`".$this->fields[
"id"].
"` IN (".implode(
",", $node_ids).
") " . 
 
  201                                                "ORDER BY `".$this->fields[
"level"].
"` ASC";
 
  205                                        "UPDATE `".$this->table.
"` SET " . 
 
  206                                                "`".$this->fields[
"parent_id"].
"` = ".$ref_id.
", " . 
 
  207                                                "`".$this->fields[
"position"].
"` = ".$position.
" " . 
 
  209                                                "`".$this->fields[
"id"].
"` = ".
$id;
 
  211                                        "UPDATE `".$this->table.
"` SET " . 
 
  212                                                "`".$this->fields[
"left"].
"` = `".$this->fields[
"left"].
"` - (".$idif.
"), " . 
 
  213                                                "`".$this->fields[
"right"].
"` = `".$this->fields[
"right"].
"` - (".$idif.
"), " . 
 
  214                                                "`".$this->fields[
"level"].
"` = `".$this->fields[
"level"].
"` - (".$ldif.
") " . 
 
  216                                                "`".$this->fields[
"id"].
"` IN (".implode(
",", $node_ids).
") ";
 
  221                                "INSERT INTO `".$this->table.
"` (" . 
 
  222                                        "`".$this->fields[
"parent_id"].
"`, " . 
 
  223                                        "`".$this->fields[
"position"].
"`, " . 
 
  224                                        "`".$this->fields[
"left"].
"`, " . 
 
  225                                        "`".$this->fields[
"right"].
"`, " . 
 
  226                                        "`".$this->fields[
"level"].
"` " . 
 
  236                foreach($sql as $q) { $this->db->query($q); }
 
  237                $ind = $this->db->insert_id();
 
  238                if($is_copy) $this->
_fix_copy($ind, $position);
 
  239                return $node === 
false || $is_copy ? $ind : 
true;
 
  246                for(
$i = $node[$this->
fields[
"left"]] + 1; 
$i < $node[$this->
fields[
"right"]]; 
$i++) {
 
  249                foreach($children as $cid => $child) {
 
  250                        if((
int)$cid == (
int)
$id) {
 
  251                                $this->db->query(
"UPDATE `".$this->table.
"` SET `".$this->fields[
"position"].
"` = ".$position.
" WHERE `".$this->fields[
"id"].
"` = ".$cid);
 
  254                        $this->db->query(
"UPDATE `".$this->table.
"` SET `".$this->fields[
"parent_id"].
"` = ".$map[(
int)$child[$this->fields[
"left"]]].
" WHERE `".$this->fields[
"id"].
"` = ".$cid);
 
  255                        for(
$i = $child[$this->fields[
"left"]] + 1; 
$i < $child[$this->fields[
"right"]]; 
$i++) {
 
  262                $this->db->query(
"" . 
 
  263                        "CREATE TEMPORARY TABLE `temp_tree` (" . 
 
  264                                "`".$this->
fields[
"id"].
"` INTEGER NOT NULL, " . 
 
  265                                "`".$this->
fields[
"parent_id"].
"` INTEGER NOT NULL, " . 
 
  266                                "`". $this->
fields[
"position"].
"` INTEGER NOT NULL" . 
 
  269                $this->db->query(
"" . 
 
  270                        "INSERT INTO `temp_tree` " . 
 
  272                                        "`".$this->fields[
"id"].
"`, " . 
 
  273                                        "`".$this->fields[
"parent_id"].
"`, " . 
 
  274                                        "`".$this->fields[
"position"].
"` " . 
 
  275                                "FROM `".$this->table.
"`" 
  278                $this->db->query(
"" . 
 
  279                        "CREATE TEMPORARY TABLE `temp_stack` (" . 
 
  280                                "`".$this->fields[
"id"].
"` INTEGER NOT NULL, " . 
 
  281                                "`".$this->fields[
"left"].
"` INTEGER, " . 
 
  282                                "`".$this->fields[
"right"].
"` INTEGER, " . 
 
  283                                "`".$this->fields[
"level"].
"` INTEGER, " . 
 
  284                                "`stack_top` INTEGER NOT NULL, " . 
 
  285                                "`".$this->fields[
"parent_id"].
"` INTEGER, " . 
 
  286                                "`".$this->fields[
"position"].
"` INTEGER " . 
 
  290                $this->db->query(
"SELECT COUNT(*) FROM temp_tree");
 
  292                $maxcounter = (int) $this->db->f(0) * 2;
 
  294                $this->db->query(
"" . 
 
  295                        "INSERT INTO `temp_stack` " . 
 
  297                                        "`".$this->fields[
"id"].
"`, " . 
 
  302                                        "`".$this->fields[
"parent_id"].
"`, " . 
 
  303                                        "`".$this->fields[
"position"].
"` " . 
 
  304                                "FROM `temp_tree` " . 
 
  305                                "WHERE `".$this->fields[
"parent_id"].
"` = 0" 
  307                $this->db->query(
"DELETE FROM `temp_tree` WHERE `".$this->fields[
"parent_id"].
"` = 0");
 
  310                        $this->db->query(
"" . 
 
  312                                        "`temp_tree`.`".$this->fields[
"id"].
"` AS tempmin, " . 
 
  313                                        "`temp_tree`.`".$this->fields[
"parent_id"].
"` AS pid, " . 
 
  314                                        "`temp_tree`.`".$this->fields[
"position"].
"` AS lid " . 
 
  315                                "FROM `temp_stack`, `temp_tree` " . 
 
  317                                        "`temp_stack`.`".$this->fields[
"id"].
"` = `temp_tree`.`".$this->fields[
"parent_id"].
"` AND " . 
 
  318                                        "`temp_stack`.`stack_top` = ".$currenttop.
" " . 
 
  319                                "ORDER BY `temp_tree`.`".$this->fields[
"position"].
"` ASC LIMIT 1" 
  322                        if ($this->db->nextr()) {
 
  323                                $tmp = $this->db->f(
"tempmin");
 
  325                                $q = 
"INSERT INTO temp_stack (stack_top, `".$this->fields[
"id"].
"`, `".$this->fields[
"left"].
"`, `".$this->fields[
"right"].
"`, `".$this->fields[
"level"].
"`, `".$this->fields[
"parent_id"].
"`, `".$this->fields[
"position"].
"`) VALUES(".($currenttop + 1).
", ".$tmp.
", ".
$counter.
", NULL, ".$currenttop.
", ".$this->db->f(
"pid").
", ".$this->db->f(
"lid").
")";
 
  326                                $this->db->query($q);
 
  327                                $this->db->query(
"DELETE FROM `temp_tree` WHERE `".$this->fields[
"id"].
"` = ".$tmp);
 
  332                                $this->db->query(
"" . 
 
  333                                        "UPDATE temp_stack SET " . 
 
  334                                                "`".$this->fields[
"right"].
"` = ".
$counter.
", " . 
 
  335                                                "`stack_top` = -`stack_top` " . 
 
  336                                        "WHERE `stack_top` = ".$currenttop
 
  344                unset($temp_fields[
"parent_id"]);
 
  345                unset($temp_fields[
"position"]);
 
  346                unset($temp_fields[
"left"]);
 
  347                unset($temp_fields[
"right"]);
 
  348                unset($temp_fields[
"level"]);
 
  349                if(count($temp_fields) > 1) {
 
  350                        $this->db->query(
"" . 
 
  351                                "CREATE TEMPORARY TABLE `temp_tree2` " . 
 
  352                                        "SELECT `".implode(
"`, `", $temp_fields).
"` FROM `".$this->table.
"` " 
  355                $this->db->query(
"TRUNCATE TABLE `".$this->table.
"`");
 
  356                $this->db->query(
"" . 
 
  357                        "INSERT INTO ".$this->table.
" (" . 
 
  358                                        "`".$this->fields[
"id"].
"`, " . 
 
  359                                        "`".$this->fields[
"parent_id"].
"`, " . 
 
  360                                        "`".$this->fields[
"position"].
"`, " . 
 
  361                                        "`".$this->fields[
"left"].
"`, " . 
 
  362                                        "`".$this->fields[
"right"].
"`, " . 
 
  363                                        "`".$this->fields[
"level"].
"` " . 
 
  366                                        "`".$this->fields[
"id"].
"`, " . 
 
  367                                        "`".$this->fields[
"parent_id"].
"`, " . 
 
  368                                        "`".$this->fields[
"position"].
"`, " . 
 
  369                                        "`".$this->fields[
"left"].
"`, " . 
 
  370                                        "`".$this->fields[
"right"].
"`, " . 
 
  371                                        "`".$this->fields[
"level"].
"` " . 
 
  373                                "ORDER BY `".$this->fields[
"id"].
"`" 
  375                if(count($temp_fields) > 1) {
 
  377                                "UPDATE `".$this->table.
"` v, `temp_tree2` SET v.`".$this->fields[
"id"].
"` = v.`".$this->fields[
"id"].
"` ";
 
  378                        foreach($temp_fields as $k => $v) {
 
  379                                if($k == 
"id") 
continue;
 
  380                                $sql .= 
", v.`".$v.
"` = `temp_tree2`.`".$v.
"` ";
 
  382                        $sql .= 
" WHERE v.`".$this->fields[
"id"].
"` = `temp_tree2`.`".$this->fields[
"id"].
"` ";
 
  383                        $this->db->query($sql);
 
  390                $this->db->query(
"" . 
 
  392                                "`".$this->
fields[
"left"].
"` FROM `".$this->table.
"` s " . 
 
  394                                "`".$this->fields[
"parent_id"].
"` = 0 " 
  397                if($this->db->nf() == 0) {
 
  398                        $report[] = 
"[FAIL]\tNo root node.";
 
  401                        $report[] = ($this->db->nf() > 1) ? 
"[FAIL]\tMore than one root node." : 
"[OK]\tJust one root node.";
 
  403                $report[] = ($this->db->f(0) != 1) ? 
"[FAIL]\tRoot node's left index is not 1." : 
"[OK]\tRoot node's left index is 1.";
 
  405                $this->db->query(
"" . 
 
  407                                "COUNT(*) FROM `".$this->table.
"` s " . 
 
  409                                "`".$this->fields[
"parent_id"].
"` != 0 AND " . 
 
  410                                "(SELECT COUNT(*) FROM `".$this->table.
"` WHERE `".$this->fields[
"id"].
"` = s.`".$this->fields[
"parent_id"].
"`) = 0 ");
 
  412                $report[] = ($this->db->f(0) > 0) ? 
"[FAIL]\tMissing parents." : 
"[OK]\tNo missing parents.";
 
  414                $this->db->query(
"SELECT MAX(`".$this->
fields[
"right"].
"`) FROM `".$this->table.
"`");
 
  416                $n = $this->db->f(0);
 
  417                $this->db->query(
"SELECT COUNT(*) FROM `".$this->table.
"`");
 
  419                $c = $this->db->f(0);
 
  420                $report[] = (
$n/2 != $c) ? 
"[FAIL]\tRight index does not match node count." : 
"[OK]\tRight index matches count.";
 
  422                $this->db->query(
"" . 
 
  423                        "SELECT COUNT(`".$this->
fields[
"id"].
"`) FROM `".$this->table.
"` s " . 
 
  425                                "(SELECT COUNT(*) FROM `".$this->table.
"` WHERE " . 
 
  426                                        "`".$this->fields[
"right"].
"` < s.`".$this->fields[
"right"].
"` AND " . 
 
  427                                        "`".$this->fields[
"left"].
"` > s.`".$this->fields[
"left"].
"` AND " . 
 
  428                                        "`".$this->fields[
"level"].
"` = s.`".$this->fields[
"level"].
"` + 1" . 
 
  430                                "(SELECT COUNT(*) FROM `".$this->table.
"` WHERE " . 
 
  431                                        "`".$this->fields[
"parent_id"].
"` = s.`".$this->fields[
"id"].
"`" . 
 
  435                $report[] = ($this->db->f(0) > 0) ? 
"[FAIL]\tAdjacency and nested set do not match." : 
"[OK]\tNS and AJ match";
 
  437                return implode(
"<br />",$report);
 
  442                $this->db->query(
"SELECT * FROM ".$this->table.
" ORDER BY `".$this->fields[
"left"].
"`");
 
  443                while($this->db->nextr()) $nodes[] = $this->db->get_row(
"assoc");
 
  446                        foreach($nodes as $node) {
 
  447                                echo str_repeat(
" ",(
int)$node[$this->
fields[
"level"]] * 2);
 
  448                                echo $node[$this->fields[
"id"]].
" (".$node[$this->fields[
"left"]].
",".$node[$this->fields[
"right"]].
",".$node[$this->fields[
"level"]].
",".$node[$this->fields[
"parent_id"]].
",".$node[$this->fields[
"position"]].
")<br />";
 
  450                        echo str_repeat(
"-",40);
 
  456                $this->db->query(
"TRUNCATE TABLE `".$this->table.
"`");
 
  457                $this->db->query(
"" . 
 
  458                                "INSERT INTO `".$this->table.
"` (" . 
 
  459                                        "`".$this->fields[
"id"].
"`, " . 
 
  460                                        "`".$this->fields[
"parent_id"].
"`, " . 
 
  461                                        "`".$this->fields[
"position"].
"`, " . 
 
  462                                        "`".$this->fields[
"left"].
"`, " . 
 
  463                                        "`".$this->fields[
"right"].
"`, " . 
 
  464                                        "`".$this->fields[
"level"].
"` " . 
 
  480                $this->
fields = array_merge($this->
fields, $add_fields);
 
  481                $this->add_fields = $add_fields;
 
  485                $id = parent::_create((
int)
$data[$this->
fields[
"id"]], (
int)
$data[$this->fields[
"position"]]);
 
  489                        return  "{ \"status\" : 1, \"id\" : ".(int)
$id.
" }";
 
  491                return "{ \"status\" : 0 }";
 
  494                if(count($this->add_fields) == 0) { 
return "{ \"status\" : 1 }"; }
 
  495                $s = 
"UPDATE `".$this->table.
"` SET `".$this->
fields[
"id"].
"` = `".$this->
fields[
"id"].
"` "; 
 
  496                foreach($this->add_fields as $k => $v) {
 
  497                        if(isset(
$data[$k]))    
$s .= 
", `".$this->fields[$v].
"` = \"".$this->db->escape(
$data[$k]).
"\" ";
 
  498                        else                                    $s .= 
", `".$this->fields[$v].
"` = `".$this->
fields[$v].
"` ";
 
  500                $s .= 
"WHERE `".$this->fields[
"id"].
"` = ".(int)
$data[
"id"];
 
  501                $this->db->query(
$s);
 
  502                return "{ \"status\" : 1 }";
 
  508                if(!
$id) 
return "{ \"status\" : 0 }";
 
  509                if((
int)
$data[
"copy"] && count($this->add_fields)) {
 
  514                        foreach(
$data as $dk => $dv) {
 
  515                                $s = 
"UPDATE `".$this->table.
"` SET `".$this->
fields[
"id"].
"` = `".$this->
fields[
"id"].
"` "; 
 
  516                                foreach($this->add_fields as $k => $v) {
 
  517                                        if(isset($dv[$k]))      
$s .= 
", `".$this->fields[$v].
"` = \"".$this->db->escape($dv[$k]).
"\" ";
 
  518                                        else                            $s .= 
", `".$this->fields[$v].
"` = `".$this->
fields[$v].
"` ";
 
  520                                $s .= 
"WHERE `".$this->fields[
"id"].
"` = ".$ids[
$i];
 
  521                                $this->db->query(
$s);
 
  525                return "{ \"status\" : 1, \"id\" : ".$id.
" }";
 
  528                $id = parent::_remove((
int)
$data[
"id"]);
 
  529                return "{ \"status\" : 1 }";
 
  533                if((
int)$data[
"id"] === 1 && count($tmp) === 0) {
 
  539                foreach($tmp as $k => $v) {
 
  541                                "attr" => array(
"id" => 
"node_".$k, 
"rel" => $v[$this->
fields[
"type"]]),
 
  542                                "data" => $v[$this->fields[
"title"]],
 
  543                                "state" => ((
int)$v[$this->fields[
"right"]] - (
int)$v[$this->fields[
"left"]] > 1) ? 
"closed" : 
"" 
  549                $this->db->query(
"SELECT `".$this->
fields[
"left"].
"`, `".$this->
fields[
"right"].
"` FROM `".$this->table.
"` WHERE `".$this->fields[
"title"].
"` LIKE '%".$this->db->escape(
$data[
"search_str"]).
"%'");
 
  550                if($this->db->nf() === 0) 
return "[]";
 
  551                $q = 
"SELECT DISTINCT `".$this->fields[
"id"].
"` FROM `".$this->table.
"` WHERE 0 ";
 
  552                while($this->db->nextr()) {
 
  553                        $q .= 
" OR (`".$this->fields[
"left"].
"` < ".(int)$this->db->f(0).
" AND `".$this->
fields[
"right"].
"` > ".(int)$this->db->f(1).
") ";
 
  556                $this->db->query($q);
 
  557                while($this->db->nextr()) { 
$result[] = 
"#node_".$this->db->f(0); }
 
  590                        "title" => 
"index.html",
 
  596                        "title" => 
"doc.html",
 
An exception for terminatinating execution or to throw for unit testing.
__construct($table="tree", $fields=array())
_move($id, $ref_id, $position=0, $is_copy=false)
_fix_copy($id, $position)
_get_children($id, $recursive=false)
_create($parent, $position)
__construct($table="tree", $fields=array(), $add_fields=array("title"=> "title", "type"=> "type"))
if(!array_key_exists('StateId', $_REQUEST)) $id
if(!is_dir( $entity_dir)) exit("Fatal Error ([A-Za-z0-9]+)\s+" &#(? foreach( $entity_files as $file) $output