function list_names($listArray, $highlight, $format = "") { $name = ""; foreach ($listArray as $entry) { if (!($isDescriptor = thesaurus::is_descriptor($entry)) and $format) { $formString = "bright"; } else { $formString = ""; } $name .= "<a href='index.php?action=show&id={$entry}'>"; $name .= highlight($highlight, thesaurus::get_name($entry), $isDescriptor, $formString); $name .= "</a><br>"; } echo substr($name, 0, strlen($name) - 4); }
function list_id($type, $idArray) { $retXml = new simpleXmlElement("<{$type} />"); if (is_array($idArray)) { foreach ($idArray as $entry) { if (is_numeric($entry)) { $xmlString = thesaurus::get_name($entry); extract_pattern($xmlString, "/\\(BS[: ](?<use>.*)\\)/"); } else { $xmlString = $entry; } xml_insert($retXml, new simpleXmlElement("<{$type}>" . trim($xmlString) . "</{$type}>")); } } return $retXml; }
function display($parent, $depth, $pos, $errorArray) { // V2.0 // starting on thesaurus level if ($parent == 0) { $elementArray = thesaurus::get_thesaurus_list(); // get thesauri } else { $elementArray = thesaurus::get_child($parent); } // get children // entries found if (is_array($elementArray)) { $cntElements = count($elementArray); // start new line if (!isset($pos)) { $pos = 0; } // set position to 0 $line = new line(); // **************************************************************** // start array $lineCnt = 0; foreach ($elementArray as $id) { // don't display if // non descriptor // or not visible // if ((thesaurus::is_descriptor($id) or session::get("descriptor")) // and (thesaurus::is_visible($id) or session::get("visible")) // ) if (thesaurus::is_visible($id) or session::get("visible")) { $cntParents = thesaurus::parent_num($id); $equivArray = thesaurus::get_equiv($id, "BS"); if (is_array($equivArray)) { $cntEquiv = count($equivArray); } else { $cntEquiv = 0; } // get count and list of subentries $childrenArray = thesaurus::get_child($id); $cntChildren = thesaurus::child_num($id, session::get(descriptor)); // get entry details $entry = thesaurus::get_descriptor($id); // ECHO ENTRY // space in front $x = 0; while ($x < $pos - 1) { $line->insert(grafik::disp("line", "|", 20), 20); // insert line-grafik $x++; } // search elements in next level enabled if ($depth > $pos or $depth == -1) { // display tree grafik if ($pos > 0) { if ($lineCnt++ < $cntElements - 1) { $line->insert(grafik::disp("subtree", "|", 20), 20); } else { $line->insert(grafik::disp("subend", "|", 20), 20); } // insert sub end icon } // display open / close icon if subobjects if ($cntChildren != 0) { // subobjects found -> display icon to open / close if (thesaurus::is_open($id)) { if ($pos > 0) { $tempString = form::link("minus", "[+]", "index.php?id={$id}&action=close", "close"); } else { $tempString = form::link("thesaurus-open", "[+]", "index.php?id={$id}&action=close", "close"); } } else { if ($pos > 0) { $tempString = form::link("plus", "[+]", "index.php?id={$id}&action=open", "open"); } else { $tempString = form::link("thesaurus", "[T]", "index.php?id={$id}&action=open", "open"); } } } else { $tempString = grafik::disp("space", " ", 20); } $line->insert($tempString, 20); // insert navigation symbols $tempString = ""; // Display parent and child link icon if (session::get("show")) { // display parent arrow if (thesaurus::is_child_of(session::get("show"), $id) and session::get("show")) { $line->insert(grafik::arrow("right", "blue", 15), 20); // display parent arrow } // display link-arrow if (thesaurus::is_parent_of(session::get("show"), $id)) { $line->insert(grafik::arrow("right", "orange", 15), 20); } // display associate links if (thesaurus::is_assoc_of(session::get("show"), $id)) { $line->insert(grafik::disp("assoc", "=", 20), 20); } } // entry name $textLength = strlen($entry[name]) * 15; $textString = $entry[name]; // set style for selection $styleString = ""; if (thesaurus::is_equivalent($id)) { $styleString = "class='bright'"; } if (thesaurus::is_descriptor($id)) { $textString = strtoupper($textString); } if ($id == session::get("show")) { $styleString = "class='select'"; } elseif ($cntParents > 1) { $styleString = "class='multiple'"; } if (!thesaurus::is_visible($id)) { $styleString = "class='red'"; } if (thesaurus::is_deleted($id)) { $styleString = "class='through'"; } // draw name with link if ($pos == 0) { $tempString .= form::link("", "<b><span {$styleString}>" . $textString . "</span></b>", "index.php?id={$id}&action=show", "name", "", $id); } else { $tempString .= form::link("", "<span {$styleString}>" . $textString . "</span>", "index.php?id={$id}&action=show", "name", "", $id); } // number of sub-objects if ($cntChildren) { $subText = ""; $listCnt = 0; foreach ($childrenArray as $entry) { $subText .= thesaurus::get_name($entry) . "<br>"; } $tempString .= "<span "; $tempString .= help::show("elementcount", $subText) . ">"; $tempString .= "<i class='small'>"; if ($cntChildren) { $tempString .= " ({$cntChildren} UB)</i>"; } $tempString .= "</span>"; } // number of equiv-objects if ($cntEquiv) { $equivText = ""; $listCnt = 0; foreach ($equivArray as $entry) { $equivText .= thesaurus::get_name($entry) . "<br>"; } $tempString .= "<span "; $tempString .= help::show("equivcount", $equivText) . ">"; $tempString .= "<i class='small'>"; if ($cntEquiv) { $tempString .= " ({$cntEquiv} BS)</i>"; } $tempString .= "</span>"; } // Count of containing elements // show owner $ownerID = thesaurus::get_owner($entry[ID]); $infoText = "ID: " . $id; $infoText .= "<br>Status: " . thesaurus::get_status_name(thesaurus::get_status($id)); // $infoText .= "<br>Begriffstyp: " . thesaurus::get_entrytype_name(thesaurus::get_entrytype($id)); $infoText .= "<br>Ersteller: " . user::name($ownerID); $tempString .= " " . form::link("", "?", "", "owner", $infoText); // Edit Link $tempString .= form::link("add", "add", "index.php?parent={$id}&action=add", "add"); // Delete Link if ($cntChildren == 0) { $javaText = "Wollen Sie " . $entry[name] . " wirklich löschen? Es werden auch alle Links zu diesem Eintrag gelöscht"; $tempString .= form::link("delete", "x", "javascript:get_confirm("{$javaText}","index.php?action=deleteid&id={$id}");", "delete"); } // Link Link if (session::get("link") and $id != session::get("link")) { if (!thesaurus::is_parent_of(session::get("link"), $id) or session::get(linkaction) == "change") { $linkType = "do" . thesaurus::get_type_name(session::get("linktype")); $tempString .= form::link($linkType, "L", "index.php?id={$id}&linkaction=linkdo", "{$linkType}"); } } $line->insert($tempString); // Insert text in line $tempString = ""; // recursive display subtree if (thesaurus::is_open($id)) { // recursive call of level if (thesaurus::child_num($id, 1)) { hyrarchy::display_line($line); hyrarchy::display($id, $depth, $pos + 1, $errorArray); } } } // display line hyrarchy::display_line($line); } } } }
} ?> > Titelzeile <input type='checkbox' name='parseId' value='1' <?php if ($parseId) { echo "checked='checked'"; } ?> > ID <input type='text' name='levelCnt' value='<?php echo $levelCnt; ?> '> # of Levels</p> <?php echo "<p>Import in Thesaurus <b>'" . thesaurus::get_name($id) . "'</b></p>"; ?> </form> </div> <?php //------------------------------------------------------------------------------ // display analysed data echo "<div id='infobig'>"; import::analyse($destination, $id, $title, $root, $parseId, $action, $levelCnt); echo "</div>"; ?> </body> </html>
function validate($action = "") { // check entries with undefined links $sqlRef = database::query("SELECT * FROM parent"); $tempString = ""; // loop over all link entries while ($entry = mysql_fetch_array($sqlRef)) { if (!$action) { $parentName = thesaurus::get_name($entry[parent]); $childName = thesaurus::get_name($entry[child]); if (!thesaurus::get_descriptor($entry[parent]) and $entry[parent] != 0) { $tempString .= "Oberbegriff {$entry['parent']} von <b>'{$childName}'</b> <i>({$entry['child']})</i> existiert nicht<br>"; } if (!thesaurus::get_descriptor($entry[child])) { $tempString .= "Unterbegriff {$entry['child']} von <b>'{$parentName}'</b> <i>({$entry['parent']})</i> existiert nicht<br>"; } } else { if ((!thesaurus::get_descriptor($entry[parent]) or !thesaurus::get_descriptor($entry[child])) and $entry[parent] != 0) { database::query("DELETE FROM parent WHERE ID={$entry['ID']}"); } } // check crosslinks between thesauri if (thesaurus::get_thesaurus($entry[parent]) and thesaurus::get_thesaurus($entry[parent]) != thesaurus::get_thesaurus($entry[child])) { $crossString .= form::link("", $entry[parent], "index.php?action=show&id={$entry['parent']}") . " <=> " . form::link("", $entry[child], "index.php?action=show&id={$entry['child']}") . " link in different thesauri<br>"; } } // display error messages if (right::link() and ($tempString or $crossString)) { echo "<div id='alert' class='red'>"; if ($tempString) { echo "<b>OB / UB Fehler</b><br>{$tempString}<br>"; echo "Datenbank bereinigen "; echo form::link("delete", "Datenbank bereinigen", "index.php?action=correct", "correct", ""); } // display error message if ($crossString) { echo "<b>Crosslink Fehler</b><br>{$crossString}<br>"; // echo "Datenbank bereinigen "; // echo form::link("delete","Datenbank bereinigen","index.php?action=correct","correct",""); } echo "</div>"; } // rewrite thesaurus links $sqlRef = database::query("SELECT * FROM entry"); while ($entry = mysql_fetch_array($sqlRef)) { $tempArray = thesaurus::get_hyrarchy($entry[ID]); if (is_array($tempArray)) { $thesaurus = $tempArray[0]; } else { $thesaurus = $tempArray; } database::query("UPDATE entry SET thesaurus='{$thesaurus}' WHERE ID='{$entry['ID']}'"); } }
function descriptor($id, $name, $error) { echo "<fieldset><legend>"; //----------------- if (!thesaurus::is_descriptor($id)) { $checkString = ""; echo "kein "; } else { $checkString = " checked"; } echo "Begriff"; if (!thesaurus::is_visible($id)) { echo " <span class='red'>(versteckt)</span>"; } echo "</legend>"; // descriptor value echo form::field("text", "name", $name, 30, "class='{$error}'", "", "", $help = "name-field"); // display ID echo "<span class='small'>ID = {$id}</span>"; // open tree echo form::link("opentree", "[+]", "index.php?action=showhyrarchy&id={$id}", "opentree"); // exit edit mode if (right::write()) { action::edit(); } // delete entry if (thesaurus::child_num($id, 1) == 0) { $javaText = "Wollen Sie " . $name . " wirklich löschen? Es werden auch alle Links zu diesem Eintrag gelöscht"; echo form::link("delete", "x", "javascript:get_confirm("{$javaText}","index.php?action=deleteid&id={$id}");", "delete"); } echo "<br>"; // type of descriptor /* $typeArray = thesaurus::get_type_list(); $entryType = thesaurus::get_entrytype($id); $entryTypeName = thesaurus::get_entrytype_name($entryType); $javaText = "Wollen Sie wirklich allen Unterbegriffen von " . $name . " den Begriffstyp " . $entryTypeName . " zuweisen?"; echo form::selector("entrytype",$typeArray,1,"",$entryType,"<span class='small'>Begriffstype</span><br>","","entrytype"); // herite to all childs echo form::link("inheritance"," Begriffstyp vererben","javascript:get_confirm("$javaText","index.php?id=$id&entrytype=$entryType&action=inherit");","inheritance"); */ echo "<span class='normal'><i>" . thesaurus::get_name(thesaurus::get_thesaurus($id)) . "</i></span>"; echo "<br>"; // status of descriptor $statusArray = thesaurus::get_status_list(); echo form::selector("status", $statusArray, 1, "", thesaurus::get_status($id), "<span class='small'>Status</span><br>", "", "statustype"); echo "<br>"; // descriptor is default value for ordered entries // default place for kandidates defined $orderDefault = system::getval("val_orderdefault"); if ($orderDefault) { if (intval($orderDefault) == $id) { $checkedString = "checked='checked'"; } else { $defaultString = "<br>(derzeit: <i>'"; $defaultString .= "<a href='index.php?id={$orderDefault}&action=show'>"; $defaultString .= thesaurus::get_name($orderDefault); $defaultString .= "</a>"; $defaultString .= "'</i>)"; } } else { $defaultString = "<br>(Kein Ort für Kandidaten festgelegt)"; } echo form::field("checkbox", "orderdefault", $id, "", $checkedString, "", "als Standard für Kandidaten festlegen {$defaultString}", "orderdefault"); echo "</fieldset>"; }
function analyse($path, $parent, $title, $root, $parseId, $action, $levelCnt) { //echoall($path); $importArray = import::fetch_file_to_array($path); $delimiter = ";"; // echoarray($importArray); ?> <style> table { border:1px; padding:0px; margin:0px; } th { color:black; border-width:1px; font-size:10pt; } td { color:black; border-width:1px; font-size:10pt; } </style> <?php if (is_array($importArray)) { echo "<h2>Analyse {$path}</h2>"; // $levelCnt = 7; $linePos = 0; echo "<table border='1' cellpadding='0' cellspacing='0'>"; if ($parseId) { echo "<th>ID</th>"; } for ($li = 0; $li < $levelCnt; $li++) { echo "<th>Level {$li}</th>"; } echo "<th>Herkunft</th>"; echo "<th>Bemerkung</th>"; foreach ($importArray as $entry) { if ($linePos != 0 or !$title) { $lineArray = explode($delimiter, $entry); $colPos = 0; if ($parseId) { $entryid = $lineArray[0]; } // loop for entries if ($parseId) { $start = 1; } else { $start = 0; } // filter id for ($i = $start; $i < count($lineArray); $i++) { $lineEntry = str_replace("\n", '', $lineArray[$i]); $lineEntry = str_replace("\r", '', $lineEntry); $source = $lineArray[$li + 1]; $comment = $lineArray[$li + 2]; if ($lineEntry) { $parentArray[$colPos] = $lineEntry; // utf8_encode($lineEntry); // insert into database if ($action == "insert") { $parentName = $parentArray[$colPos - 1]; if (!$parentName) { $parentName = thesaurus::get_name($parent); } // no parent name -> use thesaurus if ($root) { $source = $root; } $newId = import::insert($lineEntry, $parentName, "{$idName}={$entryid};Root={$source};Bemerkung={$comment}"); } break; } $colPos++; } // remove unused array items for ($i = $colPos + 1; $i < 7; $i++) { $parentArray[$i] = ""; } // display line echo "<tr>"; if ($parseId) { echo "<td>{$entryid}</td>"; } else { echo "<td> </td>"; } foreach ($parentArray as $entry) { echo "<td>" . $entry . "</td>"; } if ($source) { echo "<td>{$source}</td>"; } else { echo "<td> </td>"; } if ($comment) { echo "<td>{$comment}</td>"; } else { echo "<td> </td>"; } if ($newId) { echo "<td><i><b>({$newId})</b></i></td>"; } echo "</tr>"; } else { // header $lineArray = explode($delimiter, $entry); $idName = $lineArray[0]; $sourceName = $lineArray[7]; $commentName = $lineArray[8]; } $linePos++; // next line of file } echo "</table>"; } }