/** Add a new synset to the database. Return -1 on error or * the synset's id on success. */ function addSynset($db, $auth, $word, $subject_id, $distinction) { if (strlen(trim($word)) < 1) { print _("Error: word is too short."); return -1; } else { if (strlen(trim($word)) > 50) { print _("Error: word is too long."); return -1; } } ### Logging (before saving the word!): $date = date("Y-m-d H:i:s"); $log_id = $db->nextid("user_actions_log"); $query = sprintf("INSERT INTO user_actions_log\n\t\t\t(id, user_id, ip_address, date, word, type)\n\t\t\tVALUES\n\t\t\t(%d, '%s', '%s', '%s', '%s', '%s')", $log_id, myaddslashes($auth->auth['uid']), myaddslashes(getenv('REMOTE_ADDR')), $date, myaddslashes(escape($word)), ADD_SYNSET); $db->query($query); // Adding a new meaning $subject_id_sql = "NULL"; if ($subject_id != "") { $subject_id_sql = intval($subject_id); } $distinction_sql = "NULL"; if ($distinction) { $distinction_sql = "'" . myaddslashes(escape($distinction)) . "'"; } $new_meaning_id = $db->nextid("meanings"); $query = sprintf("INSERT INTO meanings\n\t\t\t\t(id, subject_id, distinction)\n\t\t\t\tVALUES (%d, %s, %s)", $new_meaning_id, $subject_id_sql, $distinction_sql); $db->query($query); # update the log with the meaning id: $query = sprintf("UPDATE user_actions_log\n\t\t\tSET synset_id = %d\n\t\t\tWHERE id = %d", $new_meaning_id, $log_id); $db->query($query); // check if the word is in the database already $query = sprintf("SELECT id, word FROM words \n\t\t\tWHERE word = '%s'", myaddslashes(escape(trim($word)))); $db->query($query); $exists = 0; $existing_id = 0; # make sure the comparison is case-sensitive: while ($db->next_record()) { if ($db->f('word') == escape(trim($word))) { $exists = 1; $existing_id = $db->f('id'); break; } } if ($exists) { // a new meaning for an existing word $db->next_record(); $query = sprintf("INSERT INTO word_meanings\n\t\t\t\t\t(word_id, meaning_id)\n\t\t\t\t\tVALUES (%d, %d)", $existing_id, $new_meaning_id); $db->query($query); } else { // a new word with a new meaning $new_word_id = $db->nextid("words"); $lookup_word = trim(getLookupWord($word)); if ($lookup_word == trim($word)) { $lookup_word = "NULL"; } else { $lookup_word = "'" . myaddslashes(escape($lookup_word)) . "'"; } $query = sprintf("INSERT INTO words\n\t\t\t\t\t(id, word, lookup)\n\t\t\t\t\tVALUES (%d, '%s', %s)", $new_word_id, myaddslashes(escape(trim($word))), $lookup_word); $db->query($query); $query = sprintf("INSERT INTO word_meanings\n\t\t\t\t\t(word_id, meaning_id)\n\t\t\t\t\tVALUES (%d, %d)", $new_word_id, $new_meaning_id); $db->query($query); } return $new_meaning_id; }
$db = new DB_Thesaurus(); $db2 = new DB_Thesaurus(); include "../include/tool.php"; if ($auth->auth['uname'] != 'admin') { print "Access denied."; return; } $title = "OpenThesaurus admin interface: update 'lookup' field"; include "../include/top.php"; ?> <?php $query = sprintf("SELECT id, word, lookup\n\tFROM words\n\tORDER by word"); $db->query($query); while ($db->next_record()) { $lookup = getLookupWord($db->f('word')); $lookup_db = $db->f('lookup'); if ($lookup == $db->f('word')) { # lookup is the same as the original word, so it should be set to NULL if (!is_null($lookup_db)) { print "Setting lookup of '" . $db->f('word') . "' to NULL<br>\n"; $query = sprintf("UPDATE words SET lookup = NULL WHERE id = %d", $db->f('id')); $db2->query($query); } } else { # lookup is NOT the same as the original word, so it should be set to getLookupWord(...): if ($lookup_db != $lookup) { print "Setting lookup of '" . $db->f('word') . "' to '{$lookup}'<br>\n"; $query = sprintf("UPDATE words SET lookup = '%s' WHERE id = %d", addslashes($lookup), $db->f('id')); $db2->query($query); }
<ul class="compact"><li> <?php $wikilinks = array(); while ($db->next_record()) { $link = $db->f("link"); $realTitle = $db->f("title"); if ($queryterm == $link || strpos($link, "(Begriffsklärung)") !== false) { continue; } if (in_array($link, $wikilinks)) { continue; } if ($matches > 0) { print ", "; } print "<a href=\"overview.php?word=" . urlencode(getLookupWord($db->f("link"))) . "\">" . $db->f("link") . "</a>"; array_push($wikilinks, $link); $matches++; } if ($matches == 0) { print T_("No matches"); } else { ?> <li class="wiktionarylicense">Quelle: <a class="wikilicenselink" href="http://de.wikipedia.org/wiki/<?php $wikilink = escape($realTitle); $wikilink = preg_replace("/ /", "_", $wikilink); print urlencode($wikilink); ?> ">Wikipedia-Seite zu '<?php
$db->query($query); $word_id = 0; $exists = 0; $existing_id = 0; # make sure the comparison is case-sensitive: while ($db->next_record()) { if ($db->f('word') == escape(trim(uservar('synonym_new')))) { $exists = 1; $existing_id = $db->f('id'); break; } } if (!$exists) { # word does not exists in database yet $word_id = $db->nextid("words"); $lookup_word = trim(getLookupWord(uservar('synonym_new'))); if ($lookup_word == trim(uservar('synonym_new'))) { $lookup_word = "NULL"; } else { $lookup_word = "'" . myaddslashes(escape($lookup_word)) . "'"; } $query = sprintf("INSERT INTO words\n\t\t\t\t(id, word, lookup) VALUES (%d, '%s', %s)", $word_id, myaddslashes(escape(trim(uservar('synonym_new')))), $lookup_word); $db->query($query); } else { $db->next_record(); $word_id = $existing_id; } if ($word_id == 0) { die("No word_id found."); } $old_syns = getSynset(uservar('meaning_id'));
include "../../include/top.php"; $wordfile = "wordlist.txt"; $thesfile = "trimthes.txt"; print "Building data...<br />\n"; // only top10.000 words: words.word IN (%s) AND $query = sprintf("SELECT words.id AS word_id, word, meaning_id\n\tFROM words, word_meanings, meanings\n\tWHERE \n\t\twords.id = word_meanings.word_id AND\n\t\tword_meanings.meaning_id = meanings.id AND\n\t\tmeanings.hidden = 0\n\tORDER BY BINARY(word)\n"); $db->query($query); $words = array(); #$words["-"] = 0; $prev_word = ""; $l = array(); $last_id = 0; while ($db->next_record()) { if ($prev_word != $db->f('word')) { if ($prev_word) { $prev_word_lookup = getLookupWord($prev_word); if ($prev_word_lookup != $prev_word) { if (array_key_exists($prev_word_lookup, $words)) { $words[$prev_word_lookup] = $words[$prev_word_lookup] . "," . join(',', $l); } else { $words[$prev_word_lookup] = join(',', $l); } } if (array_key_exists($prev_word, $words)) { $words[$prev_word] = $words[$prev_word] . "," . join(',', $l); } else { $words[$prev_word] = join(',', $l); } } $l = array(); array_push($l, $db->f('meaning_id'));