/** * Kontrolas iun rajton de la aktuala uzanto. * * Faras demandon al la datumbazo tiucele. * @param $ago nomo de kolumno en la rajto-tabelo. * @return boolean true, se la uzanto havas tiun rajton, * false alikaze (ankaŭ se la uzanto ne * ekzistas aŭ pasvorto malĝustas). * @global string _SESSION["kodvorto"] la pasvorto de la * uzanto, uzata por kontroli. * @global string _SESSION["kodnomo"] la uzantonomo por * kontroli la rajton. */ function rajtas($ago) { $sql = datumbazdemando(array($ago, "kodvorto"), "entajpantoj", "nomo = '" . $_SESSION["kodnomo"] . "'", "", array("order" => "id")); $row = mysql_fetch_assoc(sql_faru($sql)); return $row and $row['kodvorto'] == $_SESSION['kodvorto'] and 'J' == $row[$ago]; }
/** * Kreas SQL-ordonon el la $valoroj-listo. * * @param array $valoroj la senditaĵo de la formularo de * {@link gxenerala_sercxo.php}. * @return array array($kampoj, $informoj, $sql), kie * - $kampoj estas array() de kampoj montrenda en la rezulto, * en la formo tabelo.kamponomo => alias, * en la formo uzebla de datumbazdemando(). * - $informoj estas array() de la formo<code> * alias => array('kampo' => tabelo.kamponomo, * 'titolo' => titolo) * </code> * - $sql estas la kreita SQL-esprimo (sen ordigo). * @uses kreuKondicxojn() * @uses kreuKampoliston() * @uses certiguCxiujnKonektojn() * @uses kreuKonektKondicxojn() * @uses datumbazdemando() */ function kreuSercxSQL($valoroj) { if (DEBUG) { echo "<!-- valoroj: " . var_export($valoroj, true) . "-->"; } /* * TODO: metu tiun liston aliloken, ekzemple la instalilo povus ĝin krei. */ $cxiujtabeloj = array("renkontigxo", "cxambroj", "litonoktoj", "partoprenoj", "partoprenantoj", "invitpetoj", "individuaj_rabatoj", "individuaj_krompagoj", "pagoj", "notoj", "landoj"); $uzatajtabeloj = array(); foreach ($cxiujtabeloj as $tabelnomo) { if ($valoroj['sercxo_tabelo_' . $tabelnomo . '_uzu'] == 'JES') { $uzatajtabeloj[] = $tabelnomo; } } $kondicxoj = kreuKondicxojn($uzatajtabeloj, $valoroj); list($kampoj, $inversa) = kreuKampoliston($uzatajtabeloj, $valoroj); if (empty($kampoj)) { return array("", "", ""); } certiguCxiujnKonektojn($uzatajtabeloj); $kondicxoj = array_merge($kondicxoj, kreuKonektKondicxojn($uzatajtabeloj)); if (DEBUG) { echo "<!--"; echo "\n kampoj: "; var_export($kampoj); echo "\n kondiĉoj: "; var_export($kondicxoj); echo "\n uzatajtabeloj: "; var_export($uzatajtabeloj); echo "-->"; } return array($kampoj, $inversa, datumbazdemando($kampoj, $uzatajtabeloj, $kondicxoj)); }
/** * serĉas partoprenon por partoprenanto, kaj metas ĝin * en la sesion. * @param int $ppantoID Partoprenanto-identigilo. * @param int $ppenoID Partopreno-identigilo. Se ne 0, * ni simple vokas {@link sesio_aktualigu_ppenon()}. * Alikaze ni serĉas taŭgan partoprenon por $ppantoID, * kaj metas tiun en la sesion. * @uses sesio_aktualigu_ppenon() * @return int se ni sukcesis, 1, alikaze la nombron de diversaj * kandidatoj. */ function sesio_trovu_ppenon($ppantoID, $ppenoID = 0) { debug_echo("<!-- trovu_ppenon(" . $ppantoID . ", " . $ppenoID . ") -->"); if ($ppenoID) { sesio_aktualigu_ppenon($ppenoID); return 1; } else { if ($_SESSION['partopreno'] and $_SESSION['partopreno']->datoj['partoprenantoID'] == $ppantoID) { // ni havas jam unu partoprenon, kaj ĝi estas // por la ĝusta partoprenanto. sesio_aktualigu_ppenon($_SESSION['partopreno']->datoj['ID']); return 1; } // malfacila kazo $sql = datumbazdemando("ID", "partoprenoj", array("partoprenantoID = '" . $ppantoID . "'"), array("renkontigxo" => "renkontigxoID")); $rez = sql_faru($sql); $num_pp = mysql_num_rows($rez); if ($num_pp == 1) { // precize unu partopreno por la aktuala // renkontiĝo - prenu tiun. $linio = mysql_fetch_assoc($rez); sesio_aktualigu_ppenon($linio['ID']); } else { // ne estas ununura taŭga partopreno por tiu ĉi // partoprenanto. unset($_SESSION['partopreno']); } // eble la vokanto volas scii, kiom da aliĝoj estis. return $num_pp; } }
/** * kreas liston de la aligxintoj en array-formo. * * @param int $renkontigxoID * @param string $ordigo * @param lingvokodo $lingvo * * @return array du-dimensia array de la formo: <code> * array( array('sxildnomo' => ..., * 'personanomo' => ..., * 'fam' => ..., * 'urbo' => ..., * 'landoid' => (ID de la lando), * 'sxildlando' => (eble alia lando indikita de la aligxinto), * 'partoprenoID' => (identigilo de la partopreno), * 'ordigoID' => (numero por uzo eble anstataux * la partoprenoID), * 'lando' => (la lando-objekto), * 'landonomo' => (nomo de la lando post traduko), * 'ordigo' => (aux ordigoID aux partoprenoID), * ), * array(...), * ...) * </code> * Gxi jam estas ordigita laux la petata maniero. */ function &kreu_aligxintoliston($renkontigxoID, $ordigo, $lingvo) { $sql = datumbazdemando(array("p.sxildnomo", "p.personanomo", "p.nomo" => "fam", "p.urbo" => 'urbo', "p.lando" => "landoid", "p.sxildlando" => 'sxildlando', "pn.ID" => 'partoprenoID', "pn.ordigoID"), array("partoprenantoj" => "p", "partoprenoj" => "pn"), array("p.ID = pn.partoprenantoID", "alvenstato = 'v'", "pn.listo = 'J'", "pn.renkontigxoID" => $renkontigxoID), "", array("order" => "pn.ID")); $rez = sql_faru($sql); $landolisto = array(); $listo = array(); while ($linio = mysql_fetch_assoc($rez)) { if ($linio['ordigoID'] != 0.0) { $linio['ordigo'] = (double) $linio['ordigoID']; } else { $linio['ordigo'] = (double) $linio['partoprenoID']; } if (!isset($landolisto[$linio['landoid']])) { $landolisto[$linio['landoid']] =& new Lando($linio['landoid']); } $linio['lando'] =& $landolisto[$linio['landoid']]; $linio['landonomo'] = $linio['lando']->tradukita('nomo', $lingvo); $listo[] = $linio; } $komparilo = donu_komparilon($ordigo); metu_ordigolokalajxon($lingvo); if (!usort($listo, $komparilo)) { darf_nicht_sein("ordigado ne funkciis"); } debug_echo("<!--" . var_export($listo, true) . "-->\n"); $nombro_entute = eltrovu_gxenerale("COUNT(*)", "partoprenoj", array("renkontigxoID" => $renkontigxoID, "alvenstato" => 'v')); $nombro_landoj = eltrovu_gxenerale("COUNT(DISTINCT p.lando)", array("partoprenoj" => "pn", "partoprenantoj" => "p"), array("renkontigxoID" => $renkontigxoID, "alvenstato" => 'v', "pn.partoprenantoID = p.ID")); return array($listo, $nombro_entute, $nombro_landoj); }
function montru_konfiguran_liston() { eoecho("\n<h2>Renkontig^o-konfiguroj</h2>\n<p>Jen maniero konfiguri detalojn de via renkontig^o.</p>\n<ul>\n"); // TODO: ligo al helpoteksto foreach ($GLOBALS['konfiguraj_tipoj'] as $tipo => $titolo) { echo " <li>"; ligu("#" . $tipo, $titolo[0]); echo "</li>\n"; } echo "</ul>\n"; foreach ($GLOBALS['konfiguraj_tipoj'] as $tipo => $titolo) { eoecho("<h3 id='" . $tipo . "'>" . $titolo[0] . "</h3>"); eoecho("<table>\n <tr>\n <th>ID</th><th>grupo</th><th>interna</th>\n <th>teksto</th><th>rimarko</th>\n </tr>\n"); $sql = datumbazdemando(array('ID', 'grupo', 'interna', 'teksto', 'aldona_komento'), 'renkontigxaj_konfiguroj', array('tipo' => $tipo), 'renkontigxoID', array('order' => 'grupo ASC, interna ASC')); $rez = sql_faru($sql); while ($linio = mysql_fetch_assoc($rez)) { echo "<tr><td>"; ligu("renkontigxaj_konfiguroj.php?id=" . $linio['ID'], $linio['ID']); eoecho("</td><td>" . $linio['grupo'] . "</td><td>" . $linio['interna'] . "</td><td>" . $linio['teksto'] . "</td><td>" . $linio['aldona_komento'] . "</td></tr>\n"); } echo "</table>\n"; echo "<p>"; ligu("renkontigxaj_konfiguroj.php?id=nova&tipo=" . $tipo, "kreu novan " . $titolo[1] . "n"); echo "</p>"; } // foreach tipo/titolo }
/** * kontrolas, cxu la nuna uzanto (identifikata per la * globalaj variabloj $kodnomo kaj $kodvorto) havas la * rajton $ago. * redonas TRUE aux FALSE. */ function rajtas($ago) { $sql = datumbazdemando($ago, "entajpantoj", array("nomo = '" . $_SESSION["kodnomo"] . "'", "kodvorto = '" . $_SESSION["kodvorto"] . "'"), "", array("order" => "id")); $result = sql_faru($sql); if ($row = mysql_fetch_array($result, MYSQL_BOTH) and $row[$ago] == "J") { return true; } else { return false; } }
function aligilo_aligxinto_listo($renkontigxoID, $lingvo, $ordigo) { $prafix = $GLOBALS['prafix'] = get_option("aligilo-prafix"); require_once $GLOBALS['prafix'] . "/iloj/iloj.php"; malfermu_datumaro(); $sql_listo = datumbazdemando(array("COUNT(pn.ID)" => "nombro"), array("partoprenantoj" => "p", "partoprenoj" => "pn"), array("p.ID = pn.partoprenantoID", "pn.alvenstato = 'v'", "pn.listo = 'J'", "pn.renkontigxoID ='{$renkontigxoID}'")); $rez_listo = sql_faru($sql_listo); $linio = mysql_fetch_assoc($rez_listo); $nombro_listo = $linio['nombro']; $sql_listo = datumbazdemando(array("COUNT(pn.ID)" => "nombro"), array("partoprenantoj" => "p", "partoprenoj" => "pn"), array("p.ID = pn.partoprenantoID", "pn.alvenstato = 'v'", "pn.renkontigxoID ='{$renkontigxoID}'")); $rez_listo = sql_faru($sql_listo); $linio = mysql_fetch_assoc($rez_listo); $nombro_chiuj = $linio['nombro']; $sql_landoj = datumbazdemando(array("COUNT(distinct p.lando)" => "nombro"), array("partoprenantoj" => "p", "partoprenoj" => "pn"), array("p.ID = pn.partoprenantoID", "pn.alvenstato = 'v'", "pn.renkontigxoID ='{$renkontigxoID}'")); echo "<!-- {$sql_landoj} -->"; $rez_listo = sql_faru($sql_landoj); $linio = mysql_fetch_assoc($rez_listo); $nombro_landoj = $linio['nombro']; $sql = datumbazdemando(array("IF(p.sxildnomo<> '', p.sxildnomo, p.personanomo)" => 'persona', "p.nomo" => 'fam', "p.urbo" => 'urbo', "p.sxildlando" => 'sxildo', "l.nomo" => 'lando_eo', "l.lokanomo" => 'lando_de'), array("partoprenantoj" => "p", "partoprenoj" => "pn", "landoj" => "l"), array("p.ID = pn.partoprenantoID", "alvenstato <> 'm'", "p.lando = l.ID", "pn.listo = 'J'", "pn.renkontigxoID ='{$renkontigxoID}'"), "", array("order" => "p.personanomo ASC, p.nomo ASC")); $tabelo = "<tbody>"; $rez = sql_faru($sql); while ($linio = mysql_fetch_array($rez)) { $tabelo .= "<tr>\n"; $tabelo .= " <td style='text-align: right; padding-right:0.3em;'>"; $tabelo .= uni($linio['persona']); $tabelo .= "</td>\n<td>"; /* if ($linio['fam']{1} == '^') { $fam = substr($linio['fam'], 0,2); } else { $fam = mb_substr($linio['fam'], 0, 1, "utf-8"); } */ $fam = $linio['fam']; $tabelo .= uni($fam); $tabelo .= "</td>\n <td>"; if ($linio['sxildo']) { $tabelo .= uni($linio['sxildo']); } else { if ($lingvo == 'de') { $tabelo .= uni($linio['lando_de']); } else { $tabelo .= uni($linio['lando_eo']); } } $tabelo .= "</td>\n <td>"; $tabelo .= uni($linio['urbo']); $tabelo .= "</td>\n</tr>\n"; } $tabelo .= "</tbody>\n"; return compact("tabelo", "nombro_landoj", "nombro_listo", "nombro_chiuj"); }
/** * Listas la renkontiĝo-konfigurojn de donita tipo por iu renkontiĝo. * @param asciistring $tipo unu el "pagotipo", "valuto", "rabatotipo", * "kromtipo" kaj "logxtipo". * @param Renkontigxo|int $renkontigxo (aux ID de tiu) * @return array ({@link Renkontigxa_konfiguro}) */ function listu_konfigurojn($tipo, $renkontigxo = "") { $renkontigxo = kreuRenkontigxon($renkontigxo); $sql = datumbazdemando(array("ID", "grupo", "interna"), "renkontigxaj_konfiguroj", array('tipo' => $tipo, 'renkontigxoID' => $renkontigxo->datoj['ID']), "", array('order' => "grupo ASC, interna ASC")); $rez = sql_faru($sql); $listo = array(); while ($linio = mysql_fetch_assoc($rez)) { $konf = new Renkontigxa_konfiguro($linio["ID"]); $listo[] = $konf; } return $listo; }
function aligilo_aligxintoj_nombro() { $prafix = get_option("aligilo-prafix"); $GLOBALS['prafix'] = $prafix; $renkID = get_option("aligilo-renkontigxo"); require_once $prafix . "/iloj/iloj.php"; malfermu_datumaro(); $sql = datumbazdemando(array("COUNT(*)" => "num"), array("partoprenoj" => "p"), array("p.alvenstato = 'v'", "p.renkontigxoID = '{$renkID}'")); $rez = sql_faru($sql); $linio = mysql_fetch_assoc($rez); return $linio['num']; }
/** * trovas kaj redonas la kondicxo-objekton por tiu cxi * malaligxkondicxosistemo kaj la menciita aligxkategori-objekto. */ function donu_kondicxon($aligxkategorio) { if (is_object($aligxkategorio)) { $aligxkategorio = $aligxkategorio->datoj['ID']; } $sql = datumbazdemando("kondicxtipo", "malaligxkondicxoj", array("sistemo = '" . $this->datoj['ID'] . "'", "aligxkategorio = '" . $aligxkategorio . "'")); $linio = mysql_fetch_assoc(sql_faru($sql)); if (!$linio) { return null; } return new Malaligxkondicxotipo($linio['kondicxtipo']); }
function listu_kurzojn_por($valuto) { $sql = datumbazdemando(array('dato', 'kurzo', 'ID'), 'kurzoj', array('valuto' => $valuto), "", array('order' => 'dato ASC')); $rez = sql_faru($sql); echo "<table class='kurzolisto'>\n"; while ($linio = mysql_fetch_assoc($rez)) { echo " <tr><td>"; ligu("kurzoj.php?id=" . $linio['ID'], "red."); echo "</td><td>" . $linio['dato'] . "</td><td>" . $linio['kurzo'] . "</td></tr>\n"; } echo "</table>\n"; }
/** * initializas malplenan objekton el la strukturo de la datumbazo. * * @param resource $rezulto rezulto de (eble malplena) * datumbazdemando pri tiu tabelo. Se mankas, ni mem demandas. * @access private */ function prenu_strukturon($rezulto = null) { if (!is_resource($rezulto)) { /* prenu nur la strukturon el la datumbazo */ $sql = datumbazdemando("*", $this->tabelnomo, "", "", array("limit" => "0,0")); $rezulto = sql_faru($sql); } for ($i = 0; $i < mysql_num_fields($rezulto); $i++) { $this->datoj[mysql_field_name($rezulto, $i)] = ""; } mysql_free_result($rezulto); }
/** * Konstruilo. * * Se $id == 0, kreas novan (malplenan) objekton * (la strukturon gxi prenas el la datumbazo), * alikaze prenas la jam ekzistan objekton (kun * tiu identifikilo) el la datumbazo. * * $id - la identifikilo (aux 0). * $tn - la (abstrakta) nomo de la tabelo. */ function Objekto($id, $tn) { $this->tabelnomo = $tn; if ($id == 0) { /* prenu nur la strukturon el la datumbazo */ $sql = datumbazdemando("*", $tn, "", "", array("limit" => "1,1")); $rezulto = sql_faru($sql); for ($i = 0; $i < mysql_num_fields($rezulto); $i++) { $this->datoj[mysql_field_name($rezulto, $i)] = ""; } } else { /* prenu tutan tabel-linion el la datumbazo */ $this->prenu_el_datumbazo($id); } }
/** * eltrovas la lastan kurzon de valuto ĝis iu dato. * * @param asciistring $valuto * @param datostring $dato (se forlasita, la nuna dato) * @return array (kurzo, dato) */ function eltrovu_kurzon($valuto, $dato = "") { if ($valuto == CXEFA_VALUTO) { return array(1.0, null); } if (!$dato) { $dato = date("y-m-d"); } $sql = datumbazdemando(array('kurzo', 'dato'), 'kurzoj', array('valuto' => $valuto, "dato <= '{$dato}'"), "", array('order' => 'dato DESC', 'limit' => '0,1')); $linio = mysql_fetch_assoc(sql_faru($sql)); if ($linio) { return array($linio['kurzo'], $linio['dato']); } else { return null; } }
/** * Donas tekston el la datumbazo. * * $identifikilo - la mesagxidentifikilo (litercxeno). * pri la signifoj rigardu pli supre en * la dokumentado de la dosiero. * * $renkontigxo - objekto de la klaso Renkontigxo (-> objektoj). * Ni sercxas la tekston por tiu renkontigxo. * * Vi povas ankaux forlasi gxin aux uzi "", * tiam la metodo uzas la sesio-variablo * $renkontigxo (se ekzistas) aux la globala * variablo $renkontigxo * * Se la teksto ne ekzistas, la metodo anstatauxe * redonas erarmesagxon ("la teksto ... ne trovigxis.") */ function donu_tekston($identifikilo, $renkontigxo = "") { if ($renkontigxo == "") { if ($_SESSION["renkontigxo"]) { $renkontigxo = $_SESSION["renkontigxo"]; } else { $renkontigxo = $GLOBALS["renkontigxo"]; } } $sql = datumbazdemando("teksto", "tekstoj", array("mesagxoID = '{$identifikilo}'", "renkontigxoID = '" . $renkontigxo->datoj["ID"] . "'")); $rez = mysql_fetch_array(sql_faru($sql)); if (empty($rez)) { return "[Text '{$identifikilo}' fehlt leider für Treffen " . $renkontigxo->datoj["mallongigo"] . ". Bitte bei " . teknika_administranto . " beschweren!]"; } else { return $rez["teksto"]; } }
/** * @param asciistring $ordigo la nomo de la kampo, laux kiu estu * ordigita la listo. */ function kreu_la_longan_liston($ordigo) { eoecho("<h2>Listo de partoprenantoj kaj eblaj membroj</h2>\n"); echo "<form action='tejomembroj.php' method='POST'>\n"; tenukasxe("ordigo", $ordigo); echo "<table id='tejomembreco'>\n"; echo "<tr><th>"; metu_ordigoligon("p-enoID", 'ID', $ordigo); echo "</th><th>"; metu_ordigoligon("UEA-kodo", 'ueakodo', $ordigo); echo "</th><th>"; metu_ordigoligon("persona nomo", 'personanomo', $ordigo); echo "</th><th>"; metu_ordigoligon("familia nomo", 'nomo', $ordigo); echo "</th><th>"; metu_ordigoligon("urbo", 'urbo', $ordigo); echo "</th><th>"; metu_ordigoligon("lando", 'landonomo', $ordigo); echo "</th><th>"; metu_ordigoligon("membro lau^dire", 'tejo_membro_laudire', $ordigo); if ($GLOBALS['rajtas_sxangxi']) { echo "</th><th colspan='4'>"; } else { echo "</th><th>"; } metu_ordigoligon("membro lau^ kontrolo", 'tejo_membro_kontrolita', $ordigo); echo "</th></tr>"; $sql = datumbazdemando(array('pa.nomo', 'pa.personanomo', 'pa.sekso', 'pa.ueakodo', 'pa.urbo', 'pn.ID', 'pn.tejo_membro_laudire', 'pn.tejo_membro_kontrolita', 'pn.partoprenantoID', 'l.nomo' => "landonomo"), array('landoj' => 'l', 'partoprenoj' => 'pn', 'partoprenantoj' => 'pa'), array('l.ID = pa.lando', 'pa.ID = pn.partoprenantoID', "pn.alvenstato != 'm'"), "", array("order" => $ordigo)); $rez = sql_faru($sql); while ($linio = mysql_fetch_assoc($rez)) { echo "<!-- linio: {$linio['ID']} -->"; metu_tejomembro_tabellinion($linio); } echo "</table>\n<p>"; if ($GLOBALS['rajtas_sxangxi']) { butono("sxangxu", "S^ang^u"); } echo "</p>\n</form>\n"; }
/** * Eltrovas, kiujn mangxojn iu partoprenanto povus partopreni. * * @param Partopreno $partopreno partopreno-objekto, por eltrovi * renkontigxon, komenco- kaj fino-datojn. * * Se mankas, ni prenas $_SESSION['renkontigxo'] kaj * ties fin- kaj komenco-datojn. * @return array listo de cxiuj mangxoj, kiuj okazas dum la partoprentempo. */ function listu_eblajn_mangxojn($partopreno = null) { if ($partopreno) { $de = $partopreno->datoj['de']; $gxis = $partopreno->datoj['gxis']; $renkID = $partopreno->datoj['renkontigxoID']; } else { $renkontigxo = kreuRenkontigxon(); debug_echo("<!-- sen partopreno, uzas renkontigxon: " . var_export($renkontigxo, true) . "-->"); $de = $renkontigxo->datoj['de']; $gxis = $renkontigxo->datoj['gxis']; $renkID = $renkontigxo->datoj['ID']; } $sql = datumbazdemando('ID', 'mangxtempoj', array("renkontigxoID = '" . $renkID . "'", "'" . $de . "' <= dato", "dato <= '" . $gxis . "'")); $rez = sql_faru($sql); $listo = array(); while ($linio = mysql_fetch_assoc($rez)) { $listo[] = $linio['ID']; } debug_echo("<!--" . var_export($listo, true) . "-->"); return $listo; }
$sql = datumbazdemando(array('ID'), 'tekstoj', "mesagxoID = '" . $priskribo['mesagxoID'] . "'", "renkontigxoID"); $rez = sql_faru($sql); $alia = mysql_fetch_assoc($rez); eoecho("<p>Tiu teksto estas lingva varianto de la teksto "); if ($alia) { ligu('nova_teksto.php?id=' . $alia['ID'], $priskribo['mesagxoID']); eoecho(".</p>\n"); } else { eoecho("<code>" . $priskribo['mesagxoID'] . "</code>, kiu tamen ankorau^ ne ekzistas " . "en tiu renkontig^o. ("); ligu("nova_teksto.php?mesagxoID=" . $priskribo['mesagxoID'], "Kreu g^in!"); eoecho(")"); } } else { if (in_array('lingvo', $priskribo['opcioj'])) { // TODO: aliaj lingvoj $sql = datumbazdemando(array('ID'), 'tekstoj', "mesagxoID = '" . $_REQUEST['mesagxoID'] . "_de'", "renkontigxoID"); $rez = sql_faru($sql); $alia = mysql_fetch_assoc($rez); if ($alia) { eoecho("<p>Ekzistas "); ligu("nova_teksto.php?id=" . $alia['ID'], "germana versio de tiu teksto"); eoecho(".</p>"); } else { eoecho("<p>Por tiu teksto devus ekzisti germana versio."); ligu("nova_teksto.php?mesagxoID=" . $_REQUEST['mesagxoID'] . "_de", "Kreu g^in"); echo "</p>"; } } } } ?>
/** * kreas elektoliston (per radiaj butonoj) el la renkontigxo-konfiguroj, * en tabellinio. * <pre> * |--------+---------------| * | titolo | ( ) elekto 1 | * | | (*) elekto 2 | * | | ( ) elekto 3 | * |--------+---------------| * </pre> * @param eostring $titolo * @param string $nomo (la interna nomo) * @param asciistring $tipo la konfiguro-tipo, t.e. * sekcio de la konfiguro-tabelo. * @param asciistring $valoro la antauxelektota valoro. * @param Renkontigxo|int $renkontigxo * * @uses simpla_entajpbutono() * @uses datumbazdemando() */ function tabela_elektolisto_el_konfiguroj($titolo, $nomo, $tipo, $valoro, $renkontigxo = 0) { debug_echo("<!-- tabela_elektolisto_el_konfiguroj(" . $titolo . ", " . $nomo . ", " . $tipo . ", " . $valoro . ", " . var_export($renkontigxo, true) . ")\n -->"); if (is_object($renkontigxo)) { $renkontigxo = $renkontigxo->datoj['ID']; } if (!$renkontigxo or !is_int($renkontigxo)) { $renkontigxo = $_SESSION['renkontigxo']->datoj['ID']; } eoecho("<tr>\n <th>" . $titolo . "</th>\n <td>\n"); $sql = datumbazdemando(array('interna', 'grupo', 'teksto', 'aldona_komento'), 'renkontigxaj_konfiguroj', array('renkontigxoID' => $renkontigxo, 'tipo' => $tipo), "", array('order' => "grupo ASC")); $rez = sql_faru($sql); $antauxa_grupo = '#'; while ($linio = mysql_fetch_assoc($rez)) { debug_echo("<!-- " . var_export($linio, true) . "-->"); if ($linio['grupo'] != $antauxa_grupo) { if ($antauxa_grupo != '#') { echo "<br/>\n<br/>"; } $antauxa_grupo = $linio['grupo']; } else { echo "<br />\n"; } // echo $linio['interna'] . " "; simpla_entajpbutono($nomo, $valoro, $linio['interna']); eoecho(" " . $linio['teksto'] . "\n"); if ($linio['aldona_komento']) { eoecho("<br/>\n<span class='aldona_komento'>" . $linio['aldona_komento'] . "</span>\n"); } } echo " </p>\n"; echo " </td>\n</tr>\n"; }
/** * Eltrovas unu valoron el iu datumbaztabelo. * * Tiu funkcio estas kombino de {@link datumbazdemando()} * (por speciala kazo), * {@link sql_faru()}, {@link mysql_fetch_assoc() mysql_fetch_assoc()} kaj * simpla array-aliro. * * @param string $kampo nomo de iu kampo, aŭ pli ĝenerale SQL-esprimo * por precize unu valoro. * @param string|array $tabelnomoj nomo de unu tabelo, aŭ nomoj de pluraj * tabeloj en array (vidu {@link datumbazdemando()}) * @param string|array $restriktoj * SQL-restriktoj (vidu {@link datumbazdemando()}) * @param string|array $id_laux_sesio nomo(j) de sesio-variablo(j) * (vidu {@link datumbazdemando()}) * @param array $aliaj_ordonoj aldonaj konfiguraj opcioj * (vidu {@link datumbazdemando()}) * @return mixed la valoro de tiu unu SQL-esprimo. */ function eltrovu_gxenerale($kampo, $tabelnomoj, $restriktoj = "", $id_laux_sesio = "", $aliaj_ordonoj = "") { $sql = datumbazdemando(array($kampo => "valoro"), $tabelnomoj, $restriktoj, $id_laux_sesio); $rezulto = sql_faru($sql); $row = mysql_fetch_assoc($rezulto); return $row['valoro']; }
tabelentajpejo("Invitletero-retadreso", "invitleteroretadreso", $renk['invitleteroretadreso'], 30); tabelentajpejo("Tema respondulo", 'temarespondulo', $renk['temarespondulo'], 20, ""); tabelentajpejo("Tema retadreso", "temaretadreso", $renk['temaretadreso'], 30); tabelentajpejo("Distra respondulo", "distrarespondulo", $renk['distrarespondulo'], 20, ""); tabelentajpejo("Distra retadreso", "distraretadreso", $renk['distraretadreso'], 30); tabelentajpejo("Vespera respondulo", "vesperarespondulo", $renk['vesperarespondulo'], 20, ""); tabelentajpejo("Vespera retadreso", "vesperaretadreso", $renk['vesperaretadreso'], 30); tabelentajpejo("Muzika respondulo", "muzikarespondulo", $renk['muzikarespondulo'], 20, ""); tabelentajpejo("Muzika retadreso", "muzikaretadreso", $renk['muzikaretadreso'], 30); tabelentajpejo("Nokta respondulo", "noktarespondulo", $renk['noktarespondulo'], 20, ""); tabelentajpejo("Nokta retadreso", "noktaretadreso", $renk['noktaretadreso'], 30); tabelentajpejo("Novula/Junula respondulo", "novularespondulo", $renk['novularespondulo'], 20, ""); tabelentajpejo("Novula retadreso", "novularetadreso", $renk['novularetadreso'], 30); eoecho("\n </table>\n"); butono("sxangxu", "S^ang^u tiun renkontig^on"); butono("kreu", "Kreu novan renkontig^on"); eoecho("\n</form>\n\n <hr/>\n\n <h3 id='tekstoj'>Tekstoj</h3>\n <p>\n La <em>tekstoj</em> estas uzataj ekzemple por\n havi retmesag^tekst(er)ojn kaj similajn aferojn, kiuj varias\n lau^ renkontig^o,\n ne en la programo sed en la datumbazo.\n </p>"); $sql = datumbazdemando(array('count(*)' => 'nombro'), 'tekstoj', "renkontigxoID = '{$renk['ID']}'"); $rez = sql_faru($sql); $linio = mysql_fetch_assoc($rez); eoecho("\n<p>\n Nuntempe ekzistas " . $linio['nombro'] . " tekstoj por la aktuala\n renkontig^o.\n</p> <p>"); ligu("tekstoj.php", "Vidu la liston (kaj eble redaktu kelkajn)"); echo "<br/>"; ligu("nova_teksto.php", "Aldonu novan tekston"); echo "</p><p>"; ligu("administrado.php", "Reen al la administrado-pag^o."); echo "</p>"; HtmlFino(); echo "<!--"; var_export($_SESSION); echo "-->";
function traktu_kampon_interne($tabelnomo, $kamponomo, $dosiernomo, $restrikto, $atributoj) { if ($atributoj['flag']) { traktu_kampon_flag($tabelnomo, $kamponomo, $dosiernomo, $restrikto, $atributoj); return; } global $trovitaj, $chefa, $tradukoj; $helpajKampoj = array(); if ($atributoj['helpoteksto']) { $helpajKampoj[$atributoj['helpoteksto']] = 'helpoteksto'; } if ($atributoj['helpeDe']) { $helpajKampoj[$atributoj['helpeDe']] = 'helpo'; } /* * ideo: ni trairas ambaŭ samtempe ordigitaj laŭ ID, kaj * tiel trovas samtempe aldonendajn kaj forigendajn. */ $sql_org = datumbazdemando(array_merge(array('ID', $kamponomo => 'org'), $helpajKampoj), $tabelnomo, $restrikto, "", array('order' => 'ID ASC')); /* "\n SELECT `ID`, `" . $kamponomo . "` AS org" . $helpValSQL . "\n FROM `" . $tabelo_interna . "` " . "\n ORDER BY `ID` ASC "; */ $sql_trad = datumbazdemando(array('(0 + `cheno`)' => 'ID', 'cheno', 'traduko'), 'tradukoj', array("`dosiero` = '" . $dosiernomo . "'", "`iso2` = '" . $chefa . "'"), "", array("order" => "`ID` ASC")); /* "\n SELECT (0 + `cheno`) AS `ID`, `cheno`, `traduko` " . "\n FROM `" . $tabelo . "` " . "\n WHERE `dosiero` = '" . $dosiernomo . "' " . "\n AND `iso2` = '" . $chefa . "' " . "\n ORDER BY `ID` ASC "; */ echo("<pre>$sql_org</pre><pre>$sql_trad</pre>"); $rez_org = mysql_query($sql_org); $rez_trad = mysql_query($sql_trad); $linio_org = mysql_fetch_assoc($rez_org); $linio_trad = mysql_fetch_assoc($rez_trad); while (true) { if (null == $linio_org) { // ne plu estas linioj en la originala tabelo if (null == $linio_trad) { break; } // TODO: listu la restantajn $id_org = PHP_INT_MAX; $id_trad = (int) $linio_trad['ID']; } else if (null == $linio_trad) { // ne plu estas linioj en la traduktabeloj, sed ja en la originala // TODO: listu la restantajn $id_org = (int) $linio_org['ID']; $id_trad = PHP_INT_MAX; } else { $id_org = (int) $linio_org['ID']; $id_trad = (int) $linio_trad['ID']; } // echo "<pre>org: $id_org, trad: $id_trad</pre>\n"; if ($id_trad < $id_org) { // ni havas tradukon sen originalo - ne traktu nun, estos // trovita poste. // next(trad) $linio_trad = mysql_fetch_assoc($rez_trad); } else { // ni trovis linion en la originala tabelo, ĉu // kun aŭ sen traduko $trad_kampo = eotransformado($linio_org['org'], "por-tradukilo"); if ($id_org == $id_trad) { // linio kun jam ekzistanta traduko $cheno = $linio_trad['cheno']; // ==> ni komparu ĝin nun. if ($trad_kampo != $linio_trad['traduko']) { // proponu aktualigon skatolo_por_cheno("aktualigu", $tradukoj["stato-aktualigenda-db"], "retradukenda", $dosiernomo, 1, $cheno, $chefa, $linio_trad['traduko'], $trad_kampo); } // next(trad) $linio_trad = mysql_fetch_assoc($rez_trad); } else { // ni havas linion en la originala tabelo sen tradukoj $trovitaj[]= $dosiernomo . "#" . $id_org; if ($atributoj['helpoteksto']) { $cheno = ((string)$id_org) . " (" . $linio_org['helpoteksto'] . ")"; } else { $cheno = (string)$id_org; } $komento = ""; if ($atributoj['helpeDe']) { if ($atributoj['klarigoj']) { require_once($GLOBALS['prafix'] . "/iloj/iloj_tekstoj.php"); $helpdosiero = $GLOBALS['prafix'] . $atributoj['klarigoj']; $informoj = donu_tekstpriskribon($linio_org['helpo'], $helpdosiero); $komento = eotransformado($informoj['priskribo'], "por-tradukilo"); // echo "<pre>"; // // var_export(); // var_export($helpdosiero); // var_export($komento); // echo "</pre>"; } else { $komento = ""; } } // proponu aldonon skatolo_por_cheno("aldonu", $tradukoj["stato-aldonenda-db"], "aldonenda", $dosiernomo, 1, $cheno, $chefa, "", $trad_kampo, $komento); } // por la listo de trovitajxoj $trovitaj[]= $dosiernomo . "#" . $cheno; // next(org) $linio_org = mysql_fetch_assoc($rez_org); } // else }// while } // traktu_kampon
echo "</p>\n</form>\n"; } else { butono("sxangxu", "S^ang^u"); butono("kopiu", "Kopiu"); eoecho("(tiam donu novan nomon!)"); echo "</p>\n</form>\n"; echo "<hr/>\n"; eoecho("<h2>Kondic^oj por la unuopaj malalig^periodoj</h2>"); echo "<form action='malaligxkondicxsistemo.php' method='POST'>\n"; tenukasxe("ID", $kondicxsistemo->datoj['ID']); $sql = datumbazdemando(array("ID", "nomo", "limdato"), "aligxkategorioj", array("sistemoID = '" . $kondicxsistemo->datoj['aligxkategorisistemo'] . "'"), "", array("order" => "limdato DESC")); $rez = sql_faru($sql); echo "<table>\n"; eoecho("<tr><th>ID</th><th>nomo</th><th>limdato</th>" . "<th>kondic^o</th></tr>\n"); while ($linio = mysql_fetch_assoc($rez)) { $sql = datumbazdemando("kondicxtipo", "malaligxkondicxoj", array("sistemo = '" . $kondicxsistemo->datoj['ID'] . "'", "aligxkategorio = '" . $linio['ID'] . "'")); $lin2 = mysql_fetch_assoc(sql_faru($sql)); eoecho("<tr><td>" . $linio['ID'] . "</td><td>" . $linio['nomo'] . "</td><td>" . $linio['limdato'] . "</td><td>"); elektilo_simpla_db("kondicxtipo[{$linio['ID']}]", "malaligxkondicxotipoj", "nomo", "ID", $lin2['kondicxtipo'], "uzebla = 'j'"); echo "</td></tr>\n"; } echo "</table>\n<p>"; butono("sxangxuKond", "S^ang^u kondic^ojn"); echo "</p></form>"; } echo "<hr/>\n<p>"; ligu("kotizosistemoj.php", "C^iuj kotizosistemoj"); ligu("kategorisistemoj.php#malaligxsistemoj", "C^iuj kategoriosistemoj"); ligu("kotizoj.php", "c^io rilate al kotizoj"); echo "</p>"; HtmlFino();
/** * Montras HTML-elektilon (<select>-elementon) de partoprenantoj * Gxi montras personan nomon, familian nomon kaj la mallongigo * de renkontigxo, kaj kiam oni elektis ion, gxi sendas la * identifikilon ("ID"). * * $sql - la SQL-demando. La rezulto enhavu almenaux "ID", "nomo", "personanomo" * kaj "renkNumero" kiel kampoj. * Ekzempla SQL-demando por cxiuj partoprenantoj: * * $sql = datumbazdemando(array("pp.ID", "pp.nomo", "personanomo", * "max(renkontigxoID) as renkNumero" ), * array("partoprenantoj" => "pp", * "partoprenoj" => "pn" ), * "pn.partoprenantoID = pp.ID", * "", * array("group" => "pp.ID", * "order" => "personanomo, nomo") * ); * $nomo - la valoro de la "name"-atributo de la <select>-elemento. * La defauxlta valoro estas "partoprenantoidento". * */ function partoprenanto_elektilo($sql, $grandeco = '10', $nomo = "partoprenantoidento", $kun_identifikilo = FALSE) { if (substr($sql, 0, 6) != "SELECT") { darf_nicht_sein(); return false; } $rezulto = sql_faru($sql); $mallongigoj = array(); echo "<select size='{$grandeco}' name='" . $nomo . "'>\n"; while ($row = mysql_fetch_array($rezulto, MYSQL_BOTH)) { $mallongigo = $mallongigoj[$row["renkNumero"]]; // Ni sercxas por cxiu renkontigxo maksimume unu foje la // mallongigon if (empty($mallongigo)) { $rez = mysql_fetch_assoc(sql_faru(datumbazdemando("mallongigo", "renkontigxo", "ID = '" . $row["renkNumero"] . "'", "", array("limit" => "1")))); $mallongigo = $rez["mallongigo"]; $mallongigoj[$row["renkNumero"]] = $mallongigo; } echo "<option"; eoecho(" value = \"" . $row["ID"] . "\">" . $row['personanomo'] . ' ' . $row['nomo']); if ($mallongigo) { eoecho(" (" . $mallongigo . ")"); } if ($kun_identifikilo) { echo " (#" . $row["ID"] . ")"; } echo "</option>\n"; } echo "</select>\n"; }
/** * donas liston de ĉiuj entajpantoj, kun nomo kaj la informo, * ĉu la aktuala noto estas por ili aŭ ne. * @return array array de la formo * entajpantoID => array(nomo, noto_por_li) * Tie noto_por_li estas true, se tiu ĉi noto estas por * li, alikaze false. */ function listu_entajpantojn() { $niaj_entajpantoj = $this->listu_entajpantojn_por_noto(); $sql = datumbazdemando(array('ID', 'nomo'), 'entajpantoj'); $listo = array(); $rez = sql_faru($sql); while ($linio = mysql_fetch_assoc($rez)) { $listo[$linio['ID']] = array($linio['nomo'], in_array($linio['ID'], $niaj_entajpantoj)); } return $listo; }
?> ": return <?php echo $linio['ID']; ?> ; <?php } ?> default: return null; } } <?php $sql = datumbazdemando(array('landoID', 'kategorioID'), 'kategorioj_de_landoj', "sistemoID = '" . $kotizosistemo->datoj['landokategorisistemo'] . "'"); $rez = sql_faru($sql); $tekstoj = array(); $i = 0; while ($linio = mysql_fetch_assoc($rez)) { $i++; if ($i % 10 == 0) { $prefix = "\n "; } else { $prefix = ""; } $tekstoj[] = $prefix . '"' . $linio['landoID'] . '" : ' . $linio['kategorioID']; } ?> var landokategorioj = { <?php echo implode(', ', $tekstoj);
$form = new HTMLKotizoFormatilo(); $tab = $kotkal->kreu_kotizotabelon_malnova(); $form->formatu_tabelon($tab); } } echo "</td><td>"; if (in_array($_SESSION['partopreno']->datoj['alvenstato'], array('v', 'i')) and $_SESSION['partopreno']->datoj['renkontigxoID'] == $_SESSION['renkontigxo']->datoj['ID']) { rajtligu("akceptado-datoj.php", "akcepti", "", "akcepti"); } echo "</td></tr>\n"; // gehört eigentlich nach montru_aligxo; -> Nee. echo "<tr><td>"; /** kiam ri estas en kiu cxambro? */ $rezulto = eltrovu_cxambrojn($_SESSION["partopreno"]->datoj[ID]); while ($row = mysql_fetch_assoc($rezulto)) { $sql = datumbazdemando("nomo", "cxambroj", "id = '{$row['cxambro']}'"); $cxambronomo = mysql_fetch_assoc(sql_faru($sql)); eoecho(sekvandaton($partopreno_renkontigxo->datoj['de'], $row['nokto_de'] - 1) . " – " . sekvandaton($partopreno_renkontigxo->datoj['de'], $row['nokto_gxis']) . " (" . $row['rezervtipo'] . ")\n"); if (rajtas("cxambrumi")) { ligu("cxambro-detaloj.php?cxambronumero=" . $row["cxambro"], "c^ambro: " . $cxambronomo['nomo']); echo " "; ligu_butone('cxambroago.php?sp=partrezultoj.php', $row['rezervtipo'] == 'd' ? "forgesu" : "malrezervu", array('sendu' => 'forgesu_liton', 'forgesendalito' => $row["ID"])); } else { eoecho("c^ambro: " . $cxambronomo['nomo'] . " "); } echo "<br/>"; $havas_cxambron = "true"; } // while ($row) if ($_SESSION["partopreno"]->datoj['domotipo'] == "J") { if (!$havas_cxambron) {
function sxangxuEntajpanton(&$entajpanto) { if ($_POST['ID'] != $entajpanto->datoj['ID']) { // oni nur sxangxu siajn proprajn datojn darf_nicht_sein("ID = '" . $_POST['ID'] . "' != '" . $entajpanto->datoj['ID'] . "' = entajpanto-ID!"); return; } $sxangxita = false; if ($_POST['sendanto_nomo'] and $_POST['sendanto_nomo'] != $entajpanto->datoj['sendanto_nomo']) { $entajpanto->datoj['sendanto_nomo'] = $_POST['sendanto_nomo']; $sxangxita = true; } if ($_POST['retposxtadreso'] and $_POST['retposxtadreso'] != $entajpanto->datoj['retposxtadreso']) { $entajpanto->datoj['retposxtadreso'] = $_POST['retposxtadreso']; $sxangxita = true; } if ($_POST['partoprenanto_id'] != $entajpanto->datoj['partoprenanto_id']) { $num_id = intval($_POST['partoprenanto_id']); if ($num_id) { $sql = datumbazdemando("ID", "partoprenantoj", "ID = '{$num_id}'"); $rez = sql_faru($sql); if (mysql_num_rows($rez) < 1) { erareldono("Ne ekzistas partoprenanto kun ID = #" . $num_id . " - mi ne s^ang^as vian " . "partoprenanto-Identigilon!"); } else { $entajpanto->datoj['partoprenanto_id'] = $num_id; $sxangxita = true; } } else { $entajpanto->datoj['partoprenanto_id'] = null; $sxangxita = true; } } if ($_POST['pasvorto']) { if ($_POST['pasvorto'] == $_POST['dua_pasvorto']) { $entajpanto->datoj['kodvorto'] = $_POST['pasvorto']; $entajpanto->skribu(); eoecho("<p>Mi s^ang^is la pasvorton. Bonvolu denove "); ligu("komenci.php", "ensaluti"); echo "!</p>"; protokolu("pasvorts^ang^o"); $_SESSION["kodvorto"] = ""; $_SESSION["kodnomo"] = ""; unset($_SESSION['kkren']); session_destroy(); HtmlFino(); exit; } else { erareldono("Bonvolu entajpi dufoje la saman pasvorton!"); // erarmesagxo } } if ($sxangxita) { $entajpanto->skribu(); eoecho("<p>Mi s^ang^is viajn entajpanto-detalojn.</p>"); } else { echo "<!-- nenio sxangxenda -->"; } }
/** * * @param array $objektoj * <code>array('partopreno' => {@link Partopreno}, ...)</code> * @return boolean */ function kondicxo_havas_unulitan_cxambron($objektoj) { $partopreno = $objektoj['partopreno']; if ($partopreno->datoj["dulita"] != "U") { // ne mendis unulitan ĉambron return false; } if (estas_unu_el($partopreno->datoj['alvenstato'], 'm', 'n')) { // malaliĝis / ne venis return false; } if ($partopreno->datoj['domotipo'] != 'J') { return false; } $rez = eltrovu_cxambrojn($partopreno->datoj['ID']); if (mysql_num_rows($rez) > 0) { // ricevis ĉambron while ($linio1 = mysql_fetch_assoc($rez)) { $sql = datumbazdemando(array("litonombro", "dulita"), "cxambroj", "ID = '" . $linio1['cxambro'] . "'"); $linio2 = mysql_fetch_assoc(sql_faru($sql)); if ($linio2['litonombro'] <= 1 or $linio2['dulita'] == 'U') { return true; } } // ni ne trovis dulitan ĉambron, kvankam ri mendis return false; } else { // ankoraŭ ne havas ĉambron, // ~~> verŝajne ricevos dulitan return true; } }
ligu("renkontigxo.php", "Reen al la renkontig^o"); ligu("administrado.php", "Reen al la administrado-pag^o."); echo "\n</form>\n"; } else { // ############################################################ // nur montru cxiujn tekstojn (kun redakto-ligo). $GLOBALS['tekstpriskriboj'][""] = array(); eoecho("\n<form action='tekstoj.php' method='post'>\n\n\n <h2>Tekstoj</h2>\n <p>\n La <em>tekstoj</em> estas uzataj ekzemple por\n havi retmesag^tekstojn kaj similajn aferojn, kiuj varias lau^ renkontig^o,\n ne en la programo, sed en la datumbazo. Pri la signifoj legu en \n "); // TODO: movu la dokumentadon al pli tauxga loko ligu("http://www.esperanto.de/dej/vikio/IS-Datenbazo/Tekstoj", "la vikipag^o", "_blank"); eoecho("\n pri tiu temo. La tekstoj estu en esperanta c^-kodigo.\n </p>\n <ul><li>Vi povos redakti unuopan tekston (inkluzive la identifikilon) per la <code>red</code>-ligo.</li>\n <li>Alternative vi povos elekti plurajn tekstojn (meti hokon) kaj uzi la butonon <em>Redaktu la markitajn tekstojn</em> sube.</li>\n <li>Vi ec^ povos <em>redakti c^iujn tekstojn</em> per samnoma butono.</li>\n </ul>\n<table>"); echo "<tr><td colspan='4'>"; ligu("nova_teksto.php", "kreu novan tekston"); echo "</td></tr>\n"; eoecho("<tr><th>mesag^o-ID</th><td/><th>Valoro</th>" . "<th>Priskribo</th></tr>\n"); $sql = datumbazdemando(array('id', 'mesagxoID', 'teksto'), 'tekstoj', "renkontigxoID = '{$renk['ID']}'"); $rez = sql_faru($sql); while ($linio = mysql_fetch_assoc($rez)) { eoecho("\n <tr><th>" . $linio['mesagxoID'] . "</th>\n <td><input type='checkbox' name='redaktu[" . $linio['id'] . "]' value='true' /><br/>"); ligu('nova_teksto.php?id=' . $linio['id'], "red."); $priskribo = donu_tekstpriskribon($linio['mesagxoID']); $GLOBALS['tekstpriskriboj'][""][$priskribo['mesagxoID']]['uzata'] = true; eoecho("</td><td><p style='white-space: pre; white-space: pre-wrap'>" . $linio['teksto'] . "</pre>\n </td><td>" . $priskribo['priskribo'] . "\n </td>\n </tr>"); } echo "</table>"; butono('redaktu', "Redaktu la markitajn tekstojn"); butono('redaktu_cxiujn', "Redaktu c^iujn tekstojn"); ligu("renkontigxo.php", "Reen al la renkontig^o"); ligu("administrado.php", "Reen al la grava administrado"); echo "</form>\n"; $restantaj = array();