function addSubTree($rows, $i, $left) { $nodeArray = array(); $addNewNode = true; for ($j = $i; $j < count($rows); $j++) { $row = $rows[$j]; $pos = intval($row["layer_pos"]); $parent = $row["layer_parent"] !== "" ? intval($row["layer_parent"]) : null; // first node of subtree if ($addNewNode) { $nodeArray[] = createNode($left, null, $row); $addNewNode = false; } else { // new sub tree if ($parent === $nodeArray[count($nodeArray) - 1]["pos"]) { $addedNodeArray = addSubTree($rows, $j, ++$left); $nodeArray[count($nodeArray) - 1]["right"] = $nodeArray[count($nodeArray) - 1]["left"] + 2 * count($addedNodeArray) + 1; $left = $nodeArray[count($nodeArray) - 1]["right"] + 1; $nodeArray = array_merge($nodeArray, $addedNodeArray); $j += count($addedNodeArray) - 1; $addNewNode = true; } elseif ($parent === $nodeArray[count($nodeArray) - 1]["parent"]) { $nodeArray[count($nodeArray) - 1]["right"] = ++$left; $nodeArray[] = createNode(++$left, null, $row); } } } if (is_null($nodeArray[count($nodeArray) - 1]["right"])) { $nodeArray[count($nodeArray) - 1]["right"] = ++$left; } return $nodeArray; }
$pos = $j; // first node of subtree if ($addNewNode) { $nodeArray[] = createNode($left, null, $row); $addNewNode = false; } else { $nodeArray[count($nodeArray) - 1]["right"] = ++$left; $nodeArray[] = createNode(++$left, null, $row); } } if (is_null($nodeArray[count($nodeArray) - 1]["right"])) { $nodeArray[count($nodeArray) - 1]["right"] = ++$left; } return $nodeArray; } $nodeArray = addSubTree($rows, 0, 1); $resultObj = array("nestedSets" => $nodeArray); $ajaxResponse->setResult($resultObj); $ajaxResponse->setSuccess(true); break; case "save": $data = $ajaxResponse->getParameter("data"); try { $wfsId = intval($data->wfs->wfs_id); } catch (Exception $e) { $ajaxResponse->setSuccess(false); $ajaxResponse->setMessage(_mb("Invalid WFS ID.")); $ajaxResponse->send(); } getWfs($wfsId); $wfsFactory = new UniversalWfsFactory();