コード例 #1
0
ファイル: adlib.php プロジェクト: nibble-arts/openthesaurus
function _subtree($id, $termType)
{
    global $recordArray;
    if (!$retXml) {
        $retXml = new simpleXmlElement("<temp/>");
    }
    $term = thesaurus::get_name($id);
    // check if entry allready exists
    if (!$recordArray[$term]) {
        //------------------------------------------------------------------------------
        // extract (BS) from term
        // and create new terms from BS clauses
        $uses = extract_pattern($term, "/\\(BS[: ](?<use>.*)\\)/");
        if ($uses) {
            // create common parameters
            $newArray['input.name'] = "Thesaurus Redaktion";
            $newArray['input.date'] = date("Y-m-d", time());
            $newArray['input.time'] = date("h:i:s", time());
            $newArray['term.type'] = $termType;
            $newArray['term.status'] = "Verweisungsform";
            $newArray['use'] = $term;
            //    $newArray['broader_term'] = thesaurus::get_parent($id);
            // loop over uses
            foreach ($uses as $entry) {
                $newArray['term'] = $entry;
                extract_pattern($newArray['term'], "/\\(BS[: ](?<use>.*)\\)/");
                //  echoall(create_record($newArray,$termType));
                xml_insert($retXml->record, create_record($newArray, $termType));
            }
        }
        //------------------------------------------------------------------------------
        // insert entry
        xml_insert($retXml, record($id, $termType));
        // register new record
        $recordArray[$term] = $term;
        //------------------------------------------------------------------------------
        // recursion of children
        $children = thesaurus::get_child($id);
        if ($children) {
            foreach ($children as $entry) {
                //echoall($entry);
                // subchildren -> recursion
                if (count(thesaurus::get_child($entry))) {
                    $subXml = _subtree($entry, $termType);
                    if ($subXml) {
                        xml_insert($retXml, $subXml);
                    }
                }
            }
        }
        return $retXml;
    }
}
コード例 #2
0
ファイル: action.php プロジェクト: nibble-arts/openthesaurus
function action($_arg)
{
    //------------------------------------------------------------------------------
    // extrace action from coordinate system
    while ($entry = each($_arg)) {
        $argArray = explode("_", $entry[key]);
        if (count($argArray) > 1) {
            $indexString = $argArray[0];
            $valueString = $argArray[1];
            $_arg[$indexString] = $valueString;
            if (isset($argArray[2])) {
                $_arg['_ID'] = $argArray[2];
            }
        }
    }
    //echoalert($_arg);
    //echoalert($_SESSION);
    //------------------------------------------------------------------------------
    // parse reset value
    if ($_arg[reset]) {
        $_arg = array();
        session::destroy(searchshow);
        session::destroy(show);
        session::destroy(search);
        session::destroy(searchtype);
        session::destroy(searchcom);
        session::destroy(searchorder);
        session::destroy(searchString);
        session::destroy(searchexact);
        session::destroy(searchstart);
        session::destroy(searchowner);
        session::destroy(searchentrytype);
        session::destroy(searchstatus);
    }
    //------------------------------------------------------------------------------
    // parse action parameter
    switch ($_arg[action]) {
        //------------------------------------------------------------------------------
        // login / out
        case login:
            // login user
            user::login($_arg[user], $_arg[password]);
            // restore program status if new session
            restore_status();
            // reset linking
            session::destroy("linkaction");
            session::destroy("link");
            break;
        case logout:
            // logout user
            user::logout();
            break;
        case changedo:
            // change password
            if ($password = $_GET[password]) {
                database::query("UPDATE user SET password='******' WHERE ID='" . session::get("user") . "'");
                echojavascript("Passwort erfolgreich geändert");
            }
            break;
            //------------------------------------------------------------------------------
            // inherit entrytype to children
        //------------------------------------------------------------------------------
        // inherit entrytype to children
        case inherit:
            $childArray = thesaurus::get_child($_arg[id]);
            foreach ($childArray as $entry) {
                database::query("UPDATE entry SET entrytype={$_arg['entrytype']} WHERE ID={$entry}");
            }
            break;
            //------------------------------------------------------------------------------
        //------------------------------------------------------------------------------
        case update:
            if ($_arg[orderdefault]) {
                session::set(orderdefault, $_arg[id]);
            } elseif (isset($_arg[orderdefault])) {
                session::destroy(orderdefault);
            }
            break;
            //------------------------------------------------------------------------------
        //------------------------------------------------------------------------------
        case edit:
            session::set("edit", TRUE);
            session::set("show", $_arg[id]);
            session::destroy("searchshow");
            break;
        case noedit:
            session::destroy("edit");
            break;
            //------------------------------------------------------------------------------
        //------------------------------------------------------------------------------
        case open:
            session::open($_arg[id]);
            break;
        case close:
            session::close($_arg[id]);
            break;
        case closeall:
            session::close_all();
            break;
            //------------------------------------------------------------------------------
        //------------------------------------------------------------------------------
        case deleteid:
            end_link();
            hide();
            database::delete($_arg[id]);
            break;
            //------------------------------------------------------------------------------
        //------------------------------------------------------------------------------
        case suchen:
            if (!$_arg[searchString] and ($_arg[searchowner] or $_arg[searchtype] or $_arg[searchstatus])) {
                $_arg[searchString] = "%";
            }
            if ($_arg[searchString]) {
                session::set("searchshow", true);
            }
            // show search result
            session::set("search", $_arg[searchString]);
            session::set("searchcom", $_arg[searchcom]);
            session::set("searchorder", $_arg[searchorder]);
            session::set("searchentrytype", $_arg[searchentrytype]);
            session::set("searchstatus", $_arg[searchstatus]);
            if ($_arg[searchowner]) {
                session::set("searchowner", $_arg[searchowner]);
            } else {
                session::destroy("searchowner");
            }
            switch ($_arg[searchtype]) {
                case 0:
                    session::destroy("searchexact");
                    session::destroy("searchstart");
                    break;
                case 1:
                    session::destroy("searchexact");
                    session::set("searchstart", TRUE);
                    break;
                case 2:
                    session::destroy("searchstart");
                    session::set("searchexact", TRUE);
                    break;
            }
            break;
        case hidesearch:
            session::destroy(searchshow);
            break;
            //------------------------------------------------------------------------------
        //------------------------------------------------------------------------------
        case show:
            session::destroy("searchshow");
            $_arg[linkaction] = "";
            if ($_arg[id] == NULL) {
                break;
            } elseif ($_arg[id] > 0) {
                session::set("show", $_arg[id]);
                break;
            } else {
                session::delete("show");
                break;
            }
            break;
            //------------------------------------------------------------------------------
        //------------------------------------------------------------------------------
        case swap:
            if ($_arg[id]) {
                thesaurus::swap_link($_arg[id], $_arg[_ID]);
            }
            break;
        case change:
            if ($_arg[id]) {
                //        thesaurus::change_link($_arg);
            }
            break;
        case add:
            // add new descriptor
            session::destroy("show");
            session::destroy("searchshow");
            //      session::set("",1);
            break;
            // clean database
        // clean database
        case correct:
            thesaurus::validate(true);
            echoalert("Datenbank bereinigt");
            break;
            //------------------------------------------------------------------------------
            // open hyrarchy down to selected entry
        //------------------------------------------------------------------------------
        // open hyrarchy down to selected entry
        case showhyrarchy:
            if ($_arg[id]) {
                $hyrarchyArray = thesaurus::get_hyrarchy($_arg[id]);
                // don't open selected entry
                //        array_pop($hyrarchyArray);
                foreach ($hyrarchyArray as $entry) {
                    //        echo $entry . " ";
                    echo session::open($entry);
                }
                session::set("hyrarchy", TRUE);
                // hide search window
                session::destroy("searchshow");
                // if nothing selected for display, show ID
                if (!session::get(show)) {
                    session::set("show", $_arg[id]);
                }
                break;
            }
            //------------------------------------------------------------------------------
            // debug on/off
        //------------------------------------------------------------------------------
        // debug on/off
        case debugon:
            system::setval(debug, TRUE);
            break;
        case debugoff:
            system::setval(debug, FALSE);
            // legend on/off
        // legend on/off
        case legendon:
            session::set("legend", TRUE);
            break;
        case legendoff:
            session::destroy("legend");
            break;
            // display / hide non descriptors
        // display / hide non descriptors
        case toggleND:
            if (session::get("descriptor")) {
                session::destroy("descriptor");
            } else {
                session::set("descriptor", TRUE);
            }
            break;
            // display / hide orders
        // display / hide orders
        case toggleVI:
            if (session::get("visible")) {
                session::destroy("visible");
            } else {
                session::set("visible", TRUE);
            }
            break;
            // toggle tooltips on/off
        // toggle tooltips on/off
        case off:
            session::set("tooltips", TRUE);
            break;
        case on:
            session::destroy("tooltips");
            break;
            // toggle hyrarchy
        // toggle hyrarchy
        case hyrarchyon:
            session::set("hyrarchy", TRUE);
            break;
        case hyrarchyoff:
            session::set("hyrarchy", FALSE);
            break;
    }
    //------------------------------------------------------------------------------
    // parse linkaction parameter
    switch ($_arg[linkaction]) {
        // link
        case link:
            session::set("link", $_arg[id]);
            session::set("linkaction", $_arg[linkaction]);
            session::set("linktype", $_arg[linktype]);
            break;
            // execute linking
        // execute linking
        case linkdo:
            switch (session::get('linkaction')) {
                case link:
                    database::parent_insert(session::get("link"), $_arg[id], session::get("linktype"));
                    session::set("show", session::get("link"));
                    // set display to linked objects
                    // with BS set linked descriptor to "no descriptor"
                    if (session::get("linktype") == 2) {
                        database::set_desc($_arg[id], 0);
                    }
                    //          session::destroy("link"); // end linking
                    break;
                case change:
                    database::link_change(session::get('linkparent'), session::get('link'), $_arg['id']);
                    // parent,oldlink,newlink
                    break;
            }
            break;
        case linkend:
            end_link();
            break;
            // unlink
        // unlink
        case unlink:
            if ($_arg[id]) {
                database::parent_delete(session::get("show"), $_arg[id]);
            }
            break;
            // change OB
        // change OB
        case change:
            if ($_arg[id]) {
                session::set("link", $_arg[id]);
                session::set("linkaction", $_arg[linkaction]);
                session::set("linkparent", $_arg[_ID]);
                session::set("linktype", $_arg[linktype]);
            }
            break;
    }
    // TEMP SETTINGS
    // if not link rights, set descriptor and visible to true
    if (!right::link()) {
        session::set(descriptor, FALSE);
    }
    //if (!right::link()) session::set(visible,TRUE);
    // save program status
    save_status($_SESSION);
}
コード例 #3
0
ファイル: output.php プロジェクト: nibble-arts/openthesaurus
 function print_tree($descId, $type = "", $depth = "")
 {
     switch ($type) {
         case txt:
             $delimitor = "*";
             break;
         case csv:
             $delimitor = ";";
             break;
         case adlib:
             $adlibString = adlib($descId, $type);
             return $adlibString;
             break;
     }
     // display id entry
     $comment = thesaurus::get_comment($descId);
     // remove \r\n
     $comment = str_replace("\n", '', $comment);
     $comment = str_replace("\r", '', $comment);
     $paramArray = explode(";", $comment);
     $idArray = explode("=", $paramArray[0]);
     $rootArray = explode("=", $paramArray[1]);
     $commentArray = explode("=", $paramArray[2]);
     $levelCnt = 7;
     // insert title
     if (!$depth) {
         $treeString .= $idArray[0] . $delimitor;
         for ($i = 0; $i < $levelCnt; $i++) {
             $treeString .= "Level {$i}" . $delimitor;
         }
         $treeString .= $delimitor . $rootArray[0] . $delimitor . $commentArray[0] . "\r\n";
     }
     // insert id at beginning
     $treeString .= $idArray[1] . $delimitor;
     // insert blank tree elements on beginn
     $i = 0;
     while ($i++ < $depth - 1) {
         $treeString .= $delimitor;
     }
     if ($type == "txt") {
         $treeString .= " ";
     }
     // whitespace in textfile
     // display entry
     $treeString .= thesaurus::get_name($descId);
     // insert blank tree elements at end
     while ($i++ < $levelCnt) {
         $treeString .= $delimitor;
     }
     if ($type == "txt") {
         $treeString .= " ";
     }
     // whitespace in textfile
     // insert root entry
     $treeString .= $delimitor . "{$rootArray['1']}";
     // insert comment entry
     $treeString .= $delimitor . "{$commentArray['1']}";
     // insert crlf
     $treeString .= "\r\n";
     $childArray = thesaurus::get_child($descId);
     // loop all childs recursive
     if (is_array($childArray)) {
         foreach ($childArray as $entry) {
             $treeString .= export::print_tree($entry, $type, $depth + 1);
         }
     }
     return $treeString;
 }
コード例 #4
0
 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}&amp;action=close", "close");
                             } else {
                                 $tempString = form::link("thesaurus-open", "[+]", "index.php?id={$id}&amp;action=close", "close");
                             }
                         } else {
                             if ($pos > 0) {
                                 $tempString = form::link("plus", "[+]", "index.php?id={$id}&amp;action=open", "open");
                             } else {
                                 $tempString = form::link("thesaurus", "[T]", "index.php?id={$id}&amp;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}&amp;action=show", "name", "", $id);
                     } else {
                         $tempString .= form::link("", "<span {$styleString}>" . $textString . "</span>", "index.php?id={$id}&amp;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}&amp;action=add", "add");
                     // Delete Link
                     if ($cntChildren == 0) {
                         $javaText = "Wollen Sie " . $entry[name] . " wirklich l&ouml;schen? Es werden auch alle Links zu diesem Eintrag gelöscht";
                         $tempString .= form::link("delete", "x", "javascript:get_confirm(&#34;{$javaText}&#34;,&#34;index.php?action=deleteid&id={$id}&#34;);", "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}&amp;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);
             }
         }
     }
 }
コード例 #5
0
 function child_num($descriptorID, $descType = "")
 {
     $tempArray = thesaurus::get_child($descriptorID, $descType);
     if ($tempArray) {
         return count($tempArray);
     } else {
         return FALSE;
     }
 }
コード例 #6
0
ファイル: form.php プロジェクト: nibble-arts/openthesaurus
 function sub_links($id)
 {
     $tempArray = thesaurus::get_child($id, 1);
     echo "<form method='get' action='index.php' name='ub'>";
     echo "<fieldset>";
     echo "<legend>Unterbegriffe</legend>";
     $x = 0;
     $listArray = array();
     if ($tempArray) {
         foreach ($tempArray as $entry) {
             $listArray[$x++] = thesaurus::get_descriptor($entry);
         }
     }
     echo_selection($listArray, "id", "", 3, "lower-field");
     // display action line
     action::display($id, "");
     echo "</fieldset>";
     echo "</form>";
 }