public function createFromGroups($parentId, $groupId) { $material = new Model_Material('groups'); $base = new Model_Base(); //получаем дерево групп $groups = $material->getTree($groupId); // 1. Получаем количество групп $groupCount = count($groups); // 2. Получаем крайний правый ключ $parentGroup = $material->getNode($groupId); $rightKey = (int) $parentGroup['right_key'] + 1; // 3. Получаем левый ключ $parentNode = $this->nstree->getNode($parentId); // получаем левел $level = (int) $parentNode['level']; $leftKey = (int) $parentNode['left_key'] + 1; //echo $leftKey.'-'.$rightKey; $this->nstree->modifyNodes($leftKey, $rightKey); $parent_node_lk = $parentNode["left_key"]; $parent_node_rk = $parentNode["right_key"]; $parent_node_level = $parentNode["level"]; $parent_group_lk = $parentGroup["left_key"]; $parent_group_rk = $parentGroup["left_key"]; $parent_group_level = $parentGroup["level"]; foreach ($groups as $group) { // Преобразование level'a группы для ноды $level_offset = $parent_node_level - $parent_group_level; $url = $base->str2url($group["name"]); while (!$this->unique_url($url)) { $url = $url . "-"; } $node = array("name" => $group["name"], "url" => $url, "id" => NULL, "left_key" => $group["left_key"] + $leftKey, "right_key" => $group["right_key"] + $leftKey, "level" => $group["level"] + $level_offset); list($insert_id, $tmp) = DB::insert("tree", array_keys($node))->values(array_values($node))->execute(); DB::query(NULL, "COMMIT")->execute(); //Подключаем материалы $action = "sidebar"; $left_menu = array("id" => NULL, "node_id" => $insert_id, "widget_id" => 2, "param" => "twig", "action" => $action, "options" => '{"' . $action . '_parent_id":"' . $parentId . '"}', "position" => "left_block", "title" => "Меню", "ordering" => 10); //list($insert_id, $tmp) = DB::insert("tree_widgets_rel", array_keys($left_menu))->values(array_values($left_menu))->execute(); DB::insert("tree_widgets_rel", array_keys($left_menu))->values(array_values($left_menu))->execute(); $action = "index"; $catalog = array("id" => NULL, "node_id" => $insert_id, "widget_id" => 1, "param" => "twig", "action" => $action, "options" => '{"' . $action . '_catalog_id":"' . $group['id'] . '"}', "position" => "right_block", "title" => "Каталог", "ordering" => 10); //list($insert_id, $tmp) = DB::insert("tree_widgets_rel", array_keys($catalog))->values(array_values($catalog))->execute(); DB::insert("tree_widgets_rel", array_keys($catalog))->values(array_values($catalog))->execute(); } /*foreach ($groups as $group) { //берем узел //var_dump($group); //обновляем данные $url = $base->str2url($group["name"]); while(!$this->unique_url($url)) { $url = $url."-"; } $extrafields = array("name" => $group["name"], "url" =>$url); $node = array( "id" => NULL, "left_key" => $group["left_key"] + $leftKey, "right_key" => $group["right_key"] + $leftKey, "level" => $group["level"] + $level ); $node = $node + $extrafields; list($insert_id, $tmp) = DB::insert("tree", array_keys($node))->values(array_values($node))->execute(); DB::query(NULL, "COMMIT")->execute(); //Подключаем материалы $action = "sidebar"; $left_menu = array( "id" => NULL, "node_id" => $insert_id, "widget_id" => 1, "param" => "twig", "action" => $action, "options" => '{"' . $action . '_parent_id":"' . $parentId . '"}', "position" => "left_block", "title" => "Меню", "ordering" => 10, ); list($insert_id, $tmp) = DB::insert("tree_widgets_rel", array_keys($left_menu))->values(array_values($left_menu))->execute(); $action = "index"; $catalog = array( "id" => NULL, "node_id" => $insert_id, "widget_id" => 1, "param" => "twig", "action" => $action, "options" => '{"' . $action . '_catalog_id":"' . $group['id'] . '"}', "position" => "right_block", "title" => "Каталог", "ordering" => 10, ); list($insert_id, $tmp) = DB::insert("tree_widgets_rel", array_keys($catalog))->values(array_values($catalog))->execute(); }*/ }