Exemplo n.º 1
0
function mergeSelectedNodes($issuenodeid, $groupid, $ids, $title, $desc)
{
    global $CFG;
    $mainConnections = getConnectionsByNode($issuenodeid, 0, -1, 'date', 'ASC', 'all', '', 'Solution');
    $mainconns = $mainConnections->connections;
    $r = getRoleByName("Solution");
    $rolesolution = $r->roleid;
    // CREATE THE solution NODE
    $solutionnode = addNode($title, $desc, 'N', $rolesolution);
    if (!$solutionnode instanceof Error) {
        // Add to group
        if (isset($groupid) && $groupid != "") {
            addGroupToNode($solutionnode->nodeid, $groupid);
        }
        // CONNECT NODE TO FOCAL
        $node = getNode($issuenodeid);
        $r = getRoleByName($node->role->name);
        $focalroleid = $r->roleid;
        $lt = getLinkTypeByLabel($CFG->LINK_SOLUTION_ISSUE);
        $linkType = $lt->linktypeid;
        $conndesc = "";
        $connection = addConnection($solutionnode->nodeid, $rolesolution, $linkType, $issuenodeid, $focalroleid, "N", $conndesc);
        if (!$connection instanceof Error) {
            // add to group
            if (isset($groupid) && $groupid != "") {
                addGroupToConnection($connection->connid, $groupid);
            }
            // CONNECT NEW NODE TO SELECT NODES
            $lt2 = getLinkTypeByLabel($CFG->LINK_COMMENT_BUILT_FROM);
            $linkTypeBuiltFrom = $lt2->linktypeid;
            //error_log(print_r($linkTypeBuiltFrom, true));
            $nodesArr = split(",", $ids);
            foreach ($nodesArr as $nodeid2) {
                $n = new CNode($nodeid2);
                $n = $n->load();
                $r = getRoleByName($n->role->name);
                $roleid = $r->roleid;
                $connection2 = addConnection($solutionnode->nodeid, $rolesolution, $linkTypeBuiltFrom, $nodeid2, $roleid, "N", $conndesc);
                //error_log(print_r($connection2, true));
                if (!$connection2 instanceof Error) {
                    // add to group
                    if (isset($groupid) && $groupid != "") {
                        addGroupToConnection($connection2->connid, $groupid);
                    }
                    // Link kids to new parent
                    $conSetKids = getConnectionsByNode($nodeid2, 0, -1, 'date', 'ASC', 'all', '', 'Pro,Con,Comment');
                    $conns = $conSetKids->connections;
                    foreach ($conns as $con) {
                        $from = $con->from;
                        $lt3 = getLinkTypeByLabel($CFG->LINK_COMMENT_NODE);
                        $linkType3 = $lt3->linktypeid;
                        if ($from->role->name == "Pro") {
                            $lt3 = getLinkTypeByLabel($CFG->LINK_PRO_SOLUTION);
                            $linkType3 = $lt3->linktypeid;
                        } else {
                            if ($from->role->name == "Con") {
                                $lt3 = getLinkTypeByLabel($CFG->LINK_CON_SOLUTION);
                                $linkType3 = $lt3->linktypeid;
                            }
                        }
                        // Connect the children of each node being merged to the new node
                        $connection3 = addConnection($from->nodeid, $from->role->roleid, $linkType3, $solutionnode->nodeid, $rolesolution, "N", $conndesc);
                        if (!$connection3 instanceof Error) {
                            // add to group
                            if (isset($groupid) && $groupid != "") {
                                addGroupToConnection($connection3->connid, $groupid);
                            }
                        } else {
                            return $connection3;
                        }
                        // retire old connection
                        $con->updateStatus($CFG->STATUS_RETIRED);
                    }
                    // retire connection to parent
                    foreach ($mainconns as $con) {
                        $from = $con->from;
                        if ($from->nodeid == $nodeid2) {
                            $con->updateStatus($CFG->STATUS_RETIRED);
                        }
                    }
                    // retire node
                    $n->updateStatus($CFG->STATUS_RETIRED);
                } else {
                    return $connection2;
                }
            }
        } else {
            return $connection;
        }
    }
    return $solutionnode;
}
Exemplo n.º 2
0
        $r = getRoleByName($orinode->role->name);
        $roleid = $r->roleid;
        $i = 0;
        $count = count($ideanamearray);
        for ($i = 0; $i < $count; $i++) {
            $name = $ideanamearray[$i];
            $desc = $ideadescarray[$i];
            $newconn = addNodeAndConnect($name, $desc, 'Solution', $debateid, $CFG->LINK_SOLUTION_ISSUE, 'from', $groupid = "", 'N');
            $newnode = $newconn->from;
            // CONNECT NEW NODE TO SELECT NODES
            $lt2 = getLinkTypeByLabel($CFG->LINK_BUILT_FROM);
            $linkTypeBuiltFrom = $lt2->linktypeid;
            $connection = addConnection($newnode->nodeid, $newnode->role->roleid, $linkTypeBuiltFrom, $orinode->nodeid, $roleid, "N", "");
            // add to group
            if (!$connection instanceof Error && isset($groupid) && $groupid != "") {
                addGroupToConnection($connection->connid, $groupid);
            }
        }
        // need to become the owner of the node you are editing the status of
        //$USER = $orinode->users[0];
        $orinode->updateStatus($CFG->STATUS_RETIRED);
        echo '<script type=\'text/javascript\'>';
        //echo 'window.opener.location.href = "'.$CFG->homeAddress.'user.php?id='.$USER->userid.'";';
        echo "\t  window.opener.location.reload(true);";
        echo 'window.close();';
        echo '</script>';
        include_once $HUB_FLM->getCodeDirPath("ui/footerdialog.php");
        die;
    }
} else {
    // want to start with two ideas minimum for a split.