get_parms(
"bid"
, "id"
, "piv" // lng de consultation (pivot)
, "debug"
);
if ($parm["debug"]) {
phrasea::headers(200, true, 'text/html', 'UTF-8', true);
} else {
phrasea::headers(200, true, 'text/xml', 'UTF-8', false);
}
$ret = new DOMDocument("1.0", "UTF-8");
$ret->standalone = true;
$ret->preserveWhiteSpace = false;
$root = $ret->appendChild($ret->createElement("result"));
$root->appendChild($ret->createCDATASection(var_export($parm, true)));
$refresh_list = $root->appendChild($ret->createElement("refresh_list"));
if ($parm["bid"] !== null) {
$loaded = false;
try {
$databox = $appbox->get_databox((int) $parm['bid']);
$domth = $databox->get_dom_thesaurus();
$domct = $databox->get_dom_cterms();
if ($domth && $domct) {
$xpathth = new DOMXPath($domth);
$xpathct = new DOMXPath($domct);
if ($parm["id"] !== "") { // secu pour pas exploser le thesaurus
$q = "/thesaurus//te[@id='" . $parm["id"] . "']";
if ($parm["debug"])
printf("q:%s
\n", $q);
$thnode = $xpathth->query($q)->item(0);
if ($thnode) {
$chgids = array();
$pid = $thnode->parentNode->getAttribute("id");
if ($pid === "")
$pid = "T";
moveToDeleted($thnode, $chgids, $parm['bid']);
if ($parm["debug"])
printf("chgids: %s
\n", var_export($chgids, true));
$databox->saveCterms($domct)
->saveThesaurus($domth);
$r = $refresh_list->appendChild($ret->createElement("refresh"));
$r->setAttribute("id", $pid);
$r->setAttribute("type", "TH");
}
}
}
} catch (Exception $e) {
}
}
if ($parm["debug"])
print("
" . $ret->saveXML() . ""); else print($ret->saveXML()); function moveToDeleted(&$thnode, &$chgids, $sbas_id) { global $parm, $root, $ret, $domth, $domct, $xpathct, $refresh_list; $nodes = $xpathct->query("/cterms/te[@delbranch='1']"); if ( ! $nodes || ($nodes->length == 0)) { $id = $domct->documentElement->getAttribute("nextid"); if ($parm["debug"]) printf("creating 'deleted' branch : id=%s
%s", $domct->saveXML()); } } function renum($node, $id, &$chgids) { global $parm; if ($parm["debug"]) printf("renum(%s)