function openthesaurus_searchSynonyms($query)
{
    $start = getmicrotime();
    $items = array();
    $query_str = sprintf("\n\t\tSELECT words.id AS word_id, word, meaning_id\n\t\tFROM words, word_meanings, meanings\n\t\tWHERE \n\t\t\tword = '%s' AND\n\t\t\twords.id = word_meanings.word_id AND\n\t\t\tword_meanings.meaning_id = meanings.id AND\n\t\t\tmeanings.hidden = 0\n\t\n\t\tUNION\n\n\t\tSELECT words.id AS word_id, word, meaning_id\n\t\tFROM words, word_meanings, meanings\n\t\tWHERE \n\t\t\tlookup = '%s' AND\n\t\t\twords.id = word_meanings.word_id AND\n\t\t\tword_meanings.meaning_id = meanings.id AND\n\t\t\tmeanings.hidden = 0\n\n\t\tORDER BY word", myaddslashes($query), myaddslashes($query), myaddslashes($query), myaddslashes($query));
    $db = new DB_Thesaurus();
    $db->query($query_str);
    $synmatches = 1;
    if ($db->nf() == 0) {
        $item['words'] = array();
        $items[] = $item;
    }
    while ($db->next_record()) {
        $mid = $db->f('meaning_id');
        $item['words'] = getSynsetWithUsage($db->f('meaning_id'), 1);
        $items[] = $item;
    }
    $_GET['search'] = 1;
    # otherwise logSearch ignores the search
    logSearch($db, $query, $db->nf(), 0, getEndTimer(), 1);
    XMLRPC_response(XMLRPC_prepare($items), KD_XMLRPC_USERAGENT);
}
<?php 
$check_new_prob = 50;
$order = "";
if (rand(1, 100) <= $check_new_prob) {
    $order = "check_count ASC, RAND()";
} else {
    $order = "RAND()";
}
$query = sprintf("SELECT id, check_count\n\tFROM meanings \n\tWHERE hidden = 0 AND\n\tid NOT IN (%s)\n\tORDER BY %s\n\tLIMIT %d", HIDDEN_SYNSETS, $order, $limit);
$db->query($query);
?>
<ul>
	<?php 
$ids = array();
while ($db->next_record()) {
    $synset = getSynsetWithUsage($db->f('id'), 1);
    array_push($ids, $db->f('id'));
    ?>
		<li><!-- check_count: <?php 
    print $db->f('check_count');
    ?>
 -->
			<a href="synset.php?id=<?php 
    print $db->f('id');
    ?>
"><?php 
    print join(', ', $synset);
    ?>
</a></li>
	<?php 
}
/** Get the synset as an array, including "(colloquial)" etc but limited to at 
 * most $max_elements words.
 */
function getLimitedSynsetWithUsage($id, $shortname, $max_elements)
{
    return getSynsetWithUsage($id, $shortname, $max_elements);
}
 # Antonyme:
 $antonym_line = "";
 if ($antonym_term != "") {
     $antonym_array = getAntonym($db2, $db->f('wmid'));
     if (is_array($antonym_array)) {
         list($antonym_mid, $antonym_word) = $antonym_array;
         $antonym_line = $antonym_word . $antonym_term;
         #print "Anto: ".$w.": ".$antonym_word." -- ".$antonym_line."<br>";
     }
 }
 if ($sub_term != "") {
     #subordinate concepts:
     $sub_line = "";
     $sub = getSubordinateSynsets($db2, $db->f('meaning_id'));
     foreach ($sub as $sub_id) {
         $sub_synset = getSynsetWithUsage($sub_id);
         if (sizeof($sub_synset) > 0) {
             $sub_line = getLine($sub_synset, $w, $sub_term);
             $sub_line = substr($sub_line, 1);
             # cut off "-"
             $syn_line = $syn_line . $sub_line;
         }
     }
 }
 $syn_line = $syn_line . $generic_line;
 if ($antonym_line != "") {
     $syn_line .= "|" . $antonym_line;
 }
 if (strtolower($prev_word) == strtolower($w)) {
     if ($syn_line != "") {
         array_push($lines, $syn_line . "\n");
    print $url_suffix;
    ?>
"><?php 
    print $synset_str . " " . $subject_str;
    ?>
</a>
		<?php 
    if (SUPERSETS_IN_OVERVIEW && $db->f('super_id')) {
        ?>
			<br />
			<span class="supersynsethead"><?php 
        print _("Superordinate synset");
        ?>
:</span>
				<span class="supersynset"><?php 
        print join(getSynsetWithUsage($db->f('super_id'), 1, 3), ", ");
        ?>
</span>
		<?php 
    }
    ?>
		</li>
	<?php 
}
if ($db->nf() > 0) {
    ?>
</ul>
<?php 
}
?>
<!-- TIME for synset matches: <?php 
while ($db->next_record()) {
    $w = $db->f('lookup');
    if (!$w) {
        $w = $db->f('word');
        if (!$w) {
            continue;
        }
    }
    if ($i % 1000 == 0) {
        print strftime("%H:%M:%S") . " -- word {$i}...<br>";
        flush();
    }
    $i++;
    $word_id = $db->f('word_id');
    #print $db->f('meaning_id')."\n";
    $synset = getSynsetWithUsage($db->f('meaning_id'));
    $str = getMorphologic($db->f('meaning_id'));
    $str2 = "";
    if ($str != "") {
        $str2 = "(" . $str . ")";
    } else {
        $str2 = "-";
    }
    $syn_line = getLine($synset, $w, '');
    $generic_line = "";
    # Antonyme:
    $antonym_line = "";
    if ($antonym_term != "") {
        $antonym_array = getAntonym($db2, $db->f('wmid'));
        if (is_array($antonym_array)) {
            list($antonym_mid, $antonym_word) = $antonym_array;
	vollst&auml;ndig. Mehr findet man in der <a href="http://de.wikipedia.org/wiki/Helvetismus">Wikipedia</a>.</p>
<?php 
    }
}
?>

<?php 
$query = sprintf("SELECT meaning_id, word, meanings.super_id,\n\t\tdistinction, meanings.hidden\n\tFROM word_meanings, words, meanings\n\tWHERE \n\t\twords.word LIKE '%%%s%%' AND\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 word", $condition);
$db->query($query);
?>
<ul>
<?php 
$i = 1;
$prev_id = -1;
while ($db->next_record()) {
    $s = getSynsetWithUsage($db->f('meaning_id'), 1);
    $str = "";
    $var_word = "";
    $nonvar_words = array();
    foreach ($s as $syn) {
        if ($str != "") {
            $str .= ", ";
        }
        if (strpos($syn, $condition) !== false) {
            #$str .= "<strong>".$syn."</strong>";
            $var_word = preg_replace("/\\({$condition}\\)/", "", $syn);
            $var_word = trim($var_word);
        } else {
            array_push($nonvar_words, $syn);
        }
    }
// }
include "../include/phplib/prepend.php3";
$db = new DB_Thesaurus();
include "../include/tool.php";
$hp = HOMEPAGE;
$copyright = COPYRIGHT;
$ti = LANGUAGE . ' Thesaurus in text format';
$target = TARGET_TEXT;
print "Exporting data to '../download/{$target}'...<br>\n";
flush();
$query = sprintf("SELECT id FROM meanings WHERE hidden = 0");
$db->query($query);
$lines = array();
while ($db->next_record()) {
    #print $db->f('id')."<br>";
    $s = getSynsetWithUsage($db->f('id'));
    if (sizeof($s) > 1) {
        array_push($lines, join(';', unescape($s)));
    }
}
sort($lines);
$fh = fopen("../download/" . $target, 'w');
if (!$fh) {
    print "Error: Cannot open '../download/{$target}' for writing.\n";
    return;
}
fwrite($fh, "# OpenThesaurus - {$ti}\n");
fwrite($fh, "# Automatically generated " . strftime("%Y-%m-%d %H:%M", time()) . "\n");
fwrite($fh, "# {$hp}\n");
fwrite($fh, "# {$copyright}\n");
fwrite($fh, LICENSE);
		<td></td>
		<td colspan="3" bgcolor="#dddddd">
		<?php 
		print T_("Superordinate und subordinate synsets (<a href=\"faq.php#hierarchie\">Help</a>):<br />");
		?></td>
	</tr>
	<tr>
		<td></td>
		<td colspan="3" bgcolor="#dddddd">
		<?php 
		$max_synset_size = 3;	# don't display more words than this
		if( $meaning_id == TOP_SYNSET_ID || $meaning_id == TOP_SYNSET_ID_VERB ) {
			print T_("This is the top superordinate synset.");
		} else if( $super_id ) {
			print T_("Superordinate concept:");
			print " <a href=\"synset.php?id=".intval($super_id)."\">".join(', ', getSynsetWithUsage($super_id, 1, $max_synset_size))."</a>";
			print " (<label class=\"myhover\"><input type=\"checkbox\" name=\"delete_super\" value=\"1\"/>".T_("delete reference").")</label>";
			$can_delete = 0;
			$super_defined = 1;
		} else {
			print T_("No superordinate concept defined yet for this synset. Set one now:");
			?>
			<input accesskey="o" type="text" name="super_new" value="" />
			<?php
		}
		?>
		<br />
		<?php 
		$query = sprintf("SELECT id
			FROM meanings
			WHERE super_id = %s", $meaning_id);