/**
 * Uzas la serĉ-opciojn por serĉi kaj
 * montras la rezulton.
 *
 * TODO: Plibeligu la aspekton.
 * @uses Sercxilo
 */
function montruRezulton($valoroj)
{
    $sercxilo = new Sercxilo();
    $teksto = eotransform("<h3>Serc^rezulto</h3>\n");
    list($kampoj, $inversa, $sql) = kreuSercxSQL($valoroj);
    if (empty($kampoj)) {
        eoecho("<p>Vi elektu <em>almenau^ unu serc^indaj^o</em>" . " &ndash; alikaze mi nenion povas serc^i.</p>");
        return;
    }
    $sercxilo->metu_sql($sql);
    $teksto .= "<p><code>{$sql}</code></p>";
    $kolumnoj = array();
    foreach ($kampoj as $alias) {
        $kol = array('kampo' => $alias, 'titolo' => $inversa[$alias]['titolo']);
        if ($inversa[$alias]['ligo']) {
            $kol['ligilsxablono'] = $inversa[$alias]['ligo'];
        }
        $kolumnoj[] = $kol;
        // 	  $kolumnoj []= array($alias, $inversa[$alias]['titolo'], 'XXXXX', 'l',
        //						  $inversa[$alias]['ligo'], '');
    }
    $sercxilo->metu_kolumnojn($kolumnoj);
    if (in_array('nomo', $kampoj) and in_array('personanomo', $kampoj) and in_array('ID', $kampoj)) {
        if ($valoroj['sercxo_titolo']) {
            $sercxilo->metu_menutitolon("g^en. serc^o: " . $valoroj['sercxo_titolo']);
        } else {
            $sercxilo->metu_menutitolon("rezulto de sennoma " . "g^enerala serc^o");
        }
    } else {
    }
    reset($kampoj);
    $sercxilo->metu_ordigon(current($kampoj), 'asc');
    $sercxilo->metu_sumregulojn(array(array(array('entute:', '', 'r'), array('XX', 'A', 'l'))));
    $sercxilo->metu_memligomontradon(true);
    $sercxilo->metu_identigilon('gxenerala_sercxo_rezulto');
    if (strtoupper(substr($_REQUEST['tipo'], 0, 4)) == 'HTML') {
        echo $teksto;
    }
    echo "<!-- " . var_export($sercxilo, true) . "-->";
    $sercxilo->montru_rezulton_en_tipo($_REQUEST['tipo']);
}
/**
 * montras tabelon kun cxiuj mangxtempoj
 * por la aktuala renkontigxo, kun ligo por
 * redakti unuopajn.
 */
function montru_MangxtempoListon()
{
    $sercxilo = new Sercxilo();
    $sercxilo->metu_datumbazdemandon(array('ID', 'dato', 'mangxotipo', 'komento'), 'mangxtempoj', "", "renkontigxoID");
    $sercxilo->metu_kolumnojn(array('kampo' => 'ID', 'titolo' => "", 'tekstosxablono' => "&ndash;>", 'ligilsxablono' => "mangxredakto.php?id=XXXXX"), array('kampo' => 'dato'), array('kampo' => 'mangxotipo', 'anstatauxilo' => $GLOBALS['mangxotipoj']), array('kampo' => 'ID', 'titolo' => 'mendoj', 'anstatauxilo' => 'kalkulu_mangxmendojn'), array('kampo' => 'komento'));
    $sercxilo->metu_sumregulojn(array(array(array('#', '*', 'd'), array('XX', 'A', 'm'), array('&sum;', '*', 'd'), array('XX', 'NT', 'm'))));
    $sercxilo->metu_ordigon('dato', 'asc');
    $sercxilo->metu_antauxtekston("Mang^otempoj en " . $_SESSION['renkontigxo']->datoj['nomo']);
    $sercxilo->montru_rezulton_en_HTMLtabelo();
}
/**
 * @param string  $identigilo
 *           identigilo por la serĉilo-objekto (uzata por ordigoj).
 *            ne estu la sama kiel por aliaj serĉoj sur la sama
 *            paĝo.
 * @param boolean $kunPartoprenanto se true, ni ankaŭ montras la
 *                 nomon de la partoprenanto, pri kiu estas la noto
 *                  (kun ligo al la
 *                {@link partrezultoj.php PP-detalo-pagxo}).
 * @param string $aktualtipo 
 *        nur montru iun elekton:
 *       - remontrendaj:  neprilaboritaj, kun revidu-dato estinte.
 *       - remontrotaj:   neprilaboritaj, kun revidu-dato estonte.
 *       - neprilaboritaj: (nu, kion la nomo diras)
 *       - prilaboritaj:   (nu, kion la nomo diras)
 *       - ĉiuj:          montru ĉiujn, sendepende de
 *                             prilaboro-stato.
 * @param int $porEntajpanto se ne 0, montras nur tiajn notojn, kiuj estas
 *                 por la indikita entajpanto.
 * @param int $aldona_kondicxo se ne "", aldona kondiĉo por la elekto.
 */
function kreu_NotoTabelilon($identigilo, $kunPartoprenanto, $aktualTipo = "", $porEntajpanto = 0, $aldona_kondicxo = "")
{
    $sercxilo = new Sercxilo();
    $sercxilo->metu_identigilon($identigilo);
    $sumoj = array(array(array('#', '*', 'd'), array('XX', 'A', 'c'), '', '', array('aliaj formatoj?', 'X', 'c')));
    $sercx_kampoj = array('n.ID' => 'notoID', 'n.kiu', 'n.kunKiu', 'n.tipo', 'n.dato', 'n.subjekto', 'n.revidu', 'n.prilaborata', 'n.partoprenantoID');
    $sercx_tabeloj = array('notoj' => 'n');
    $kolumnoj = array(array('kampo' => 'notoID', 'titolo' => "", 'tekstosxablono' => "&ndash;&gt;", 'ligilsxablono' => "notoj.php?notoID=XXXXX", 'menuidkampo' => 'partoprenantoID'), array('kampo' => 'dato'), array('kampo' => 'subjekto'), array('kampo' => "kiu"), array("kunKiu", "kun", 'XXXXX', 'l', '', '-1'), array("tipo", "tipo", 'XXXXX', 'l', '', '-1'), array('kampo' => 'prilaborata', 'titolo' => 'prilaborita?', 'tekstosxablono' => 'XXXXX', 'arangxo' => 'z', 'anstatauxilo' => array('j' => '<strong class="malaverto">prilaborita</strong>', '' => '<strong class="averto">neprilaborita</strong>', 'n' => '<strong class="averto">neprilaborita</strong>')));
    $kondicxoj = array();
    if ($aldona_kondicxo) {
        $kondicxoj[] = $aldona_kondicxo;
    }
    if ($kunPartoprenanto) {
        $sercx_tabeloj['partoprenantoj'] = 'p';
        $sercx_kampoj[] = "CONCAT(personanomo, ' ', nomo) AS tuta_nomo";
        //        $sercx_kampoj[]= 'nomo';
        //        $sercx_kampoj[]= 'personanomo';
        array_splice($kolumnoj, 2, 0, array(array('kampo' => 'partoprenantoID', 'titolo' => "pri", 'tekstosxablono' => "# XXXXX", 'ligilsxablono' => 'partrezultoj.php?partoprenantoidento=XXXXX', 'ligilkampo' => 'partoprenantoID', 'menuidkampo' => 'partoprenantoID'), array('kampo' => 'tuta_nomo', 'titolo' => "pri-nomo")));
        array_splice($sumoj[0], 2, 0, array('', ''));
        $kondicxoj[] = "p.ID = n.partoprenantoID";
    }
    switch ($aktualTipo) {
        case 'remontrendaj':
            $kondicxoj[] = "prilaborata <> 'j'";
            $kondicxoj[] = "revidu <= NOW()";
            break;
        case 'remontrotaj':
            $kondicxoj[] = "prilaborata <> 'j'";
            $kondicxoj[] = "NOW() < revidu";
            break;
        case 'neprilaboritaj':
            $kondicxoj[] = "prilaborata <> 'j'";
            break;
        case 'prilaboritaj':
            $kondicxoj[] = "prilaborata = 'j'";
            break;
        case 'cxiuj':
        default:
            // neniu kondiĉoj
            break;
    }
    if ($porEntajpanto) {
        $sercx_tabeloj['notoj_por_entajpantoj'] = 'ne';
        $kondicxoj[] = "ne.entajpantoID = '{$porEntajpanto}'";
        $kondicxoj[] = "ne.notoID = n.ID";
    }
    $sercxilo->metu_kolumnojn($kolumnoj);
    $sercxilo->metu_sumregulojn($sumoj);
    $sercxilo->metu_datumbazdemandon($sercx_kampoj, $sercx_tabeloj, $kondicxoj);
    $sercxilo->metu_ordigon('dato', 'desc');
    return $sercxilo;
}