function mangxu_kondicxosenditajxojn() { switch ($_REQUEST['sendu']) { case '': return $_REQUEST['id']; case 'kreu': $kondicxo = new Kondicxo(); $kondicxo->kopiu(); $kondicxo->validumu(); $kondicxo->datoj['entajpanto'] = $_SESSION['kkren']['entajpanto']; $kondicxo->skribu_kreante(); eoecho("<p>Kreis kondic^on #" . $kondicxo->datoj['ID'] . "</p>"); return $kondicxo->datoj['ID']; case 'sxangxu': $kondicxo = new Kondicxo($_REQUEST['ID']); $kondicxo->kopiu(); $kondicxo->validumu(); if (!$kondicxo->datoj['entajpanto']) { $kondicxo->datoj['entajpanto'] = $_SESSION['kkren']['entajpanto']; } $kondicxo->skribu(); eoecho("<p>S^ang^is kondic^on #" . $kondicxo->datoj['ID'] . "</p>"); return $kondicxo->datoj['ID']; default: darf_nicht_sein($_REQUEST); } }
/** * 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 enspezoprognoza_cxelo($kotizosistemo, $kategorioj, $datumoj) { $niaj_datumoj = $datumoj[enkodu_kategoriojn($kategorioj)]; $kotizo = $kotizosistemo->eltrovu_bazan_kotizon($kategorioj); $baza_kotizosumo = 0; $parta_kotizosumo = 0; $nombro_pp = 0; if ($niaj_datumoj) { foreach ($niaj_datumoj as $ero) { $nombro_pp++; if ($ero['bazakotizo'] != $kotizo) { darf_nicht_sein("ero: " . $ero['bazakotizo'] . ", gxenerale: " . $kotizo); } $parta_kotizosumo += $ero['partakotizo']; $baza_kotizosumo += $ero['bazakotizo']; } $GLOBALS['baza_kotizosumo'] += $baza_kotizosumo; $GLOBALS['parta_kotizosumo'] += $parta_kotizosumo; $GLOBALS['ppnombro'] += $nombro_pp; } eoecho("<span class='pp-nombro'>" . $nombro_pp . "</span> × "); eoecho("<span class='kotizo'>" . number_format($kotizo) . "</span><br/>"); eoecho("<span class='kotizosumo'>" . $baza_kotizosumo . "</span> ("); eoecho("<span class='partkotizosumo'>" . $parta_kotizosumo . "</span>)"); // TODO: kostoj, krompagoj ktp. }
/** * kalkulas, kiom validas la pago/rabato/... en nia cxefa * valuto. */ function enCxefaValuto() { if ($this->datoj['valuto'] == CXEFA_VALUTO) { return $this->datoj['kvanto']; } list($kurzo, $dato) = eltrovu_kurzon($this->datoj['valuto'], $this->datoj['dato']); if (!$kurzo) { darf_nicht_sein("mankas kurzo por " . $this->datoj['valuto'] . " je " . $this->datoj['dato']); } return $this->datoj['kvanto'] * $kurzo; }
/** * prenas la sercxon kun identifikilo $id el la * datumbazo, montras nomon, priskribon ktp. kaj * metas la sercxopciojn al $valoroj. */ function trovuSercxon($id, &$valoroj) { $sql = datumbazdemando(array("s.ID" => "ID", "s.nomo" => "sercxnomo", "e.nomo" => "entajpanto", "s.priskribo" => "priskribo", "s.sercxo" => "sercxo"), array("sercxoj" => "s", "entajpantoj" => "e"), array("s.entajpanto = e.ID", "s.ID = '{$id}'")); $rez = sql_faru($sql); if ($linio = mysql_fetch_assoc($rez)) { eoecho("<h3>Dau^rigita serc^o</h3>\n"); echo "<table>\n"; eoecho("<tr><th>ID</th><td>{$linio['ID']}</td></tr>\n"); eoecho("<tr><th>nomo</th><td>{$linio['sercxnomo']}</td></tr>\n"); eoecho("<tr><th>kreinto</th><td>{$linio['entajpanto']}</td></tr>\n"); eoecho("<tr><th>priskribo</th><td>{$linio['priskribo']}</td></tr>\n"); echo "<tr><td colspan='2'>"; ligu("sercoj.php?sendu=redaktu&id=16", "Redaktu informojn"); echo "</td></tr>\n"; echo "</table>"; $valoroj = malkodiguSercxon($linio['sercxo']); } else { darf_nicht_sein(); } }
/** * prenas la serĉon kun identigilo $id el la * datumbazo, montras nomon, priskribon ktp. kaj * metas la serĉopciojn al $valoroj. * * @param int $id identigilo de la serĉo * @paran array $valoroj tien ni metos la informojn. * @param boolean $montru se <val>true</val>, ni montras iun tabelan * superrigardon. Se <val>false</val>, ni faras nenion. */ function trovuSercxon($id, &$valoroj, $montru) { $sql = datumbazdemando(array("s.ID" => "ID", "s.nomo" => "sercxnomo", "e.nomo" => "entajpanto", "s.priskribo" => "priskribo", "s.sercxo" => "sercxo"), array("sercxoj" => "s", "entajpantoj" => "e"), array("s.entajpanto = e.ID", "s.ID = '{$id}'")); $rez = sql_faru($sql); if ($linio = mysql_fetch_assoc($rez)) { if ($montru) { eoecho("<h3>Dau^rigita serc^o</h3>\n"); echo "<table>\n"; eoecho("<tr><th>ID</th><td>{$linio['ID']}</td></tr>\n"); eoecho("<tr><th>nomo</th><td>{$linio['sercxnomo']}</td></tr>\n"); eoecho("<tr><th>kreinto</th><td>{$linio['entajpanto']}</td></tr>\n"); eoecho("<tr><th>priskribo</th><td>{$linio['priskribo']}</td></tr>\n"); echo "<tr><td colspan='2'>"; ligu("sercxoj.php?sendu=redaktu&id=" . $linio['ID'], "Redaktu informojn"); echo "</td></tr>\n"; echo "</table>"; } $valoroj = malkodiguSercxon($linio['sercxo']); if (!$valoroj['sercxo_titolo']) { $valoroj['sercxo_titolo'] = $linio['sercxnomo']; } $_SESSION['sekvontapagxo'] = "gxenerala_sercxo.php?antauxa_sercxo=" . $id . "&sendu=sercxu"; } else { darf_nicht_sein(); } }
case 'h': $partopreno->datoj['surloka_membrokotizo'] = $_POST['ago']; $partopreno->datoj['membrokotizo'] = 0; break; case '?': $partopreno->datoj['surloka_membrokotizo'] = '?'; // TODO: ebligu pluiron break; case 'j': case 'i': case 'k': $partopreno->datoj['surloka_membrokotizo'] = $_POST['ago']; $partopreno->datoj['membrokotizo'] = $_POST['kotizo-' . $_POST['ago']]; break; default: darf_nicht_sein("Nekonata ago-tipo: " . $_POST['ago']); } $partopreno->skribu(); $partopreno = new Partopreno($partopreno->datoj['ID']); } if (necesas_lokaasocio_traktado()) { akceptada_instrukcio("Necesas s^ang^i la aktualan staton antau^" . " pluiri al la sekva pas^o. "); } else { ligu_sekvan(); } akceptado_kesto_fino(); if (!necesas_lokaasocio_traktado()) { eoecho("<p>Lau^ la opinio de la programo ne necesas " . deviga_membreco_nomo . "-traktado por tiu ulo. Vi" . " (kiel h**o) kompreneble tamen rajtas fari tion.</p>"); } eoecho("<form action='akceptado-lokaasocio.php' method='POST' class='elekto-listo'>\n"); eoecho("<ul><li>" . "Foje kelkaj homoj nepre ig^u membroj de iuj organizoj. Je tiu" . " renkontig^o ");
/** * kreas liston de SQL-kondiĉoj el la $valoroj * (nur por kampoj de la uzataj tabeloj). * * @param array $uzatajtabeloj listo de la tabeloj, kies montrado estis * mendita. Nur el tiuj tabeloj ni akceptos kampojn. * @param array $valoroj la la senditaĵo de la formularo de * {@link gxenerala_sercxo.php}. * * @return array SQL-kondiĉoj por uzo de {@link datumbazdemando()}. */ function kreuKondicxojn($uzatajtabeloj, $valoroj) { $kondicxoj = array(); foreach ($valoroj as $varnomo => $jesNe) { $rezultoj = array(); if ('JES' == $jesNe and preg_match('/^sercxo_(.+)__(.+)_estasKriterio$/', $varnomo, $rezultoj)) { $tabelnomo = $rezultoj[1]; $kamponomo = $rezultoj[2]; if (!in_array($tabelnomo, $uzatajtabeloj)) { // ni ne atentas kondiĉojn en neuzataj tabeloj continue; } $tipo = $valoroj["sercxo_{$tabelnomo}__{$kamponomo}_tipo"]; $valoro = $valoroj["sercxo_{$tabelnomo}__{$kamponomo}_valoro"]; $nomo = $tabelnomo . "." . $kamponomo; switch ($tipo) { case 'sama': $kondicxoj[] = $nomo . " = '" . $valoro . "'"; break; case 'malpli': $kondicxoj[] = $nomo . " < '" . $valoro . "'"; break; case 'pli': $kondicxoj[] = $nomo . " > '" . $valoro . "'"; break; case 'inter': list($unua, $dua) = split('/', $valoro, 2); $kondicxoj[] = "'" . $unua . "' < " . $nomo; $kondicxoj[] = $nomo . " < '" . $dua . "'"; break; case 'LIKE': $kondicxoj[] = $nomo . " LIKE '" . $valoro . "'"; break; case 'REGEXP': $kondicxoj[] = $nomo . " RLIKE '" . $valoro . "'"; break; case 'parto': $kondicxoj[] = $nomo . " LIKE '%" . $valoro . "%'"; break; case 'plena': $kondicxoj[] = $nomo . " != ''"; case 'unu_el': $elektolisto = $valoroj["sercxo_{$tabelnomo}__{$kamponomo}_elekto"]; if (is_null($elektolisto)) { // nenio elektita -> nenio trovebla ... $kondicxo[] .= "1 = 0 /* {$nomo}: unu el neniuj */"; break; } if (!is_array($elektolisto)) { $elektolisto = array($elektolisto); } $variantoj = array(); foreach ($elektolisto as $elekto) { $variantoj[] .= "{$nomo} = '{$elekto}'"; } $kondicxoj[] = "/* unu el pluraj */ (" . join(") OR (", $variantoj) . ")"; break; default: // ne okazu! darf_nicht_sein(); } // switch } // if(match) } // foreach return $kondicxoj; }
/** * Analizas la POST-datumojn kaj el tio kreas * Partopreno- kaj partoprenanto-objektojn. * * (Ne metas ilin en la datumbazon.) * * @return &array * array({@link Partoprenanto}, {$link Partopreno}, {$link Invitpeto}) */ function &mangxu_Aligxilajn_datumojn($renkontigxo = null) { $renkontigxo = kreuRenkontigxon($renkontigxo); $partoprenanto = new Partoprenanto(); $partoprenanto->kopiu(); $partopreno = new Partopreno(); debug_echo("<!-- kreita partopreno: " . var_export($partopreno, true) . "\n -->"); $partopreno->kopiu(); debug_echo("<!-- kopiita partopreno: " . var_export($partopreno, true) . "\n -->"); if ($partopreno->datoj['de'] == $renkontigxo->datoj['de'] and $partopreno->datoj['gxis'] == $renkontigxo->datoj['gxis']) { $partopreno->datoj['partoprentipo'] = "t"; } else { $partopreno->datoj['partoprentipo'] = "p"; } if (mangxotraktado == 'ligita') { if ($domotipo[0] == "J") { $partopreno->datoj['kunmangxas'] = "J"; } else { $partopreno->datoj['kunmangxas'] = "N"; } } else { if (mangxotraktado == 'libera') { //// TODO: kiel eblas trakti la mangxomendojn sen meti ilin //// jam nun en la datumbazon? // // traktu_mangxomendojn($partopreno, $_POST['mangxmendo']); } else { darf_nicht_sein(mangxotraktado); } } $partopreno->datoj['aligxdato'] = date("Y-m-d"); // if($_POST['cxambrotipo'] == 'd') // dulita // { // // gea cxambro // $partopreno->datoj['cxambrotipo'] = 'g'; // $partopreno->datoj['dulita'] = 'J'; // } if (KAMPOELEKTO_IJK) { if ($_POST['domotipo'] == 'J1') { // unulita $partopreno->datoj['domotipo'] = 'J'; $partopreno->datoj['dulita'] = 'U'; } else { if ($_POST['domotipo'] == 'J') { // dulita $partopreno->datoj['dulita'] = 'J'; } else { // plurlita $partopreno->datoj['dulita'] = 'N'; } } } $partopreno->datoj['renkontigxoID'] = $renkontigxo->datoj["ID"]; $partopreno->datoj['partoprenantoID'] = $partoprenanto->datoj['ID']; $partopreno->datoj['alvenstato'] = 'v'; // $partopreno->datoj['traktstato']='N'; $partopreno->datoj['havasNomsxildon'] = 'N'; $partopreno->datoj['havasMangxkuponon'] = 'N'; $partopreno->datoj['KKRen'] = 'n'; // $partopreno->datoj['surloka_membrokotizo'] = '?'; $partopreno->datoj['tejo_membro_kontrolita'] = '?'; if ($partopreno->datoj['tejo_membro_laudire'][0] != 'j') { // TODO: igxos? $partopreno->datoj['tejo_membro_laudire'] = 'n'; } if ($_POST['invitletero'] == 'J') { $partopreno->mia_invitpeto =& new Invitpeto(); $partopreno->mia_invitpeto->kopiu(); // $partopreno->mia_invitpeto->datoj['ID'] = $partopreno->datoj['ID']; $partopreno->mia_invitpeto->datoj['invitletero_sendenda'] = '?'; $partopreno->mia_invitpeto->datoj['invitletero_sendodato'] = '0000-00-00'; } debug_echo("<!-- fin-kreita partopreno: " . var_export($partopreno, true) . "\n -->"); return array(&$partoprenanto, &$partopreno, &$partopreno->mia_invitpeto); }
// TODO: kontrolu, cxu necesas sxangxo sxangxu_datumbazon($tipo . "kategorioj", $datumoj, $katID); } $katSistemo = donu_katsistemon($_REQUEST['id'], $tipo); $katSistemo->mangxu_aliajn_kategorisxangxojn(); eoecho("<p>S^ang^is plurajn " . donu_eokatnomon($tipo) . "jn por sistemo #" . $_REQUEST['id'] . "</p>\n"); break; case 'katNova': // kreas malplenan kategorio-objekton. $kategorio = donu_kategorion($tipo, 0); $kategorio->kopiu(); $kategorio->datoj['sistemoID'] = $_REQUEST['id']; $kategorio->skribu_kreante(); break; default: darf_nicht_sein("sendu: '" . $_REQUEST['sendu'] . "'"); } if ($_REQUEST['id']) { $katsistemo = donu_katsistemon($_REQUEST['id'], $tipo); eoecho("<h1>Redaktado de " . donu_eokatsisnomon($tipo) . "</h1>\n"); } else { // $katsistemo = donu_katsistemon(0, $tipo); eoecho("<h1>Nova " . donu_eokatsisnomon($tipo) . "</h1>\n"); } eoecho("<h2>Bazaj datumoj</h2>\n"); echo "<form action='kategorisistemo.php?tipo=" . $tipo . "' method='POST'>\n"; echo "<table>\n"; tabela_kasxilo("ID", "ID", $katsistemo->datoj['ID']); tabelentajpejo("nomo", 'nomo', $katsistemo->datoj['nomo'], 20); if ($_REQUEST['id']) { $entajpanto = $katsistemo->datoj['entajpanto'];
/** * Kreas novan piednoton. * @param u8string $teksto la teksto de la piednoto. * @param u8string $signo_propono proponita signo. Se "" (aux ne donita), * kreas mem signon. * @return u8string la signo uzenda por la piednoto. * @abstract */ function kreu_piednoton($teksto, $signo_propono = "") { darf_nicht_sein(); }
/** * Subklasoj devas redifini tiun metodon. * * @return mixed la sekva rezulto. NULL, se ne estas plia rezulto. * @abstract */ function sekva() { darf_nicht_sein("tiu funkcio estu anstatauxigota en subklaso"); }
/** * eltrovas la aktualan valoron de tiu valor-esprimo por * la menciitaj objektoj. * @return string|number * @param objektlisto $objektoj estu * array(nomo => object|array, * ... ) * @abstract */ function aktuala_valoro($objektoj) { darf_nicht_sein("tiu funkcio estu anstatauxita en subklaso."); }
/** * kreas SQL-klaŭzon por unuopa kampo. * @param array $priskribo la kolumno-specifikaĵo, * en la formo <code> * array( kamponomo, tipo [=> grandeco ], ceteraĵoj ... ) * </code> * <em>ceteraĵoj</em> havas la sekvajn eblajn formojn: * - komento => ... (kolumna komento) * - default => ... (defaŭlta valoro) * - charset => ... (difinas alian signokodigon) * - ascii (same kiel "charset => ascii") * - null (en tiu kolumno eblas havi null-elementojn. * - auto_increment (tiu kolumno enhavas aŭtomatajn numerojn.) * - tradukebla (tiu kolumno estos tradukebla - por tiu indiko * ne estos kreita SQL, sed la informo estos * savita en aparta dosiero, kun la tabelnomo.) * - tradukebla => array(helpo-kampo, klarigo-dosiero) * ... * @param sqlstring $tabelnomo nomo de la tabelo, en kiu aperos tiu kampo. * * @return sqlstring la SQL-ekvivalento */ function donu_kampo_sql($priskribo, $tabelnomo) { $eroj = array(); // kamponomo $kamponomo = reset($priskribo); next($priskribo); // tipo list($sx, $val) = each($priskribo); if (is_string($sx)) { $tipo = $sx . '(' . $val . ')'; } else { $tipo = $val; } $null = false; // la resto while (list($sx, $val) = each($priskribo)) { switch ($sx) { case 'komento': $eroj[] = "\n COMMENT '" . addslashes($val) . "'"; break; case 'default': if (is_null($val)) { $eroj[] = "DEFAULT NULL"; $null = true; } else { $eroj[] = "DEFAULT '{$val}'"; } break; case 'charset': if (CHARSET_DB_SUPPORT) { $tipo .= " character set {$val}"; } break; case 'tradukebla': $linio = 'tradukuKampon: "' . $kamponomo . '" en: "' . $tabelnomo . '"'; foreach ($val as $nom => $txt) { $linio .= " " . $nom . ': "' . $txt . '"'; } fwrite($GLOBALS['tradukoj'], $linio . ";\n"); break; default: if (!is_int($sx)) { darf_nicht_sein('$sx: ' . $sx . ', $val: ' . $val); } switch ($val) { case 'null': $null = true; break; case 'auto_increment': $eroj[] = "auto_increment"; break; case 'ascii': if (CHARSET_DB_SUPPORT) { $tipo .= " character set ascii"; } break; case 'tradukebla': fwrite($GLOBALS['tradukoj'], 'tradukuKampon: "' . $kamponomo . '" en: "' . $tabelnomo . '"' . ";\n"); break; default: darf_nicht_sein('$sx: ' . $sx . ', $val: ' . $val); } } // switch($sx) } // while(each) $sql = "`" . $kamponomo . "` " . $tipo . ""; if (!$null) { $sql .= " NOT NULL"; } if (count($eroj)) { $sql .= ' ' . implode(' ', $eroj); } return $sql; }
} debug_echo("<!-- kunmangxas: " . $kunmangxas . "-->"); entajpbutono("<strong>Mang^ado:</strong> ", 'kunmangxas', $kunmangxas, 'J', 'J', "jes (sen krompago) "); entajpbutono("", 'kunmangxas', $kunmangxas, 'K', 'K', "krompagas por mang^i "); entajpbutono("", 'kunmangxas', $kunmangxas, 'N', 'N', "ne "); entajpbutono("", 'kunmangxas', $kunmangxas, '?', '?', " lau^ domotipo (junulargastejo: J, memzorgantejo: N)", "kutima"); } else { if (mangxotraktado == "libera") { require_once $prafix . "/iloj/iloj_mangxoj.php"; require_once $prafix . "/tradukendaj_iloj/trad_htmliloj.php"; echo "</p>"; eoecho("<p>Mang^mendoj:</p>"); montru_mangxomendilon($_SESSION['partopreno']); echo "<p>"; } else { darf_nicht_sein("nesubtenita mangxotraktado: '" . mangxotraktado . "'"); } } entajpbutono("<br/>Mi s^atus mang^i ... <br/>", 'vegetare', $_SESSION['partopreno']->datoj['vegetare'][0], "N", 'N nevegetare', "nevegetare | ", "kutima"); entajpbutono("", 'vegetare', $_SESSION['partopreno']->datoj['vegetare'][0], "J", 'J vegetare', " vegetare | "); entajpbutono("", 'vegetare', $_SESSION['partopreno']->datoj['vegetare'][0], "A", 'A vegane', "vegane. <br/>"); echo "<hr/>\n"; // entajpbokso("<BR>","littolajxo",$partopreno->datoj[litolajxo][0],"J", // "JES","Mi mendas litolajxon"); if (KAMPOELEKTO_IJK) { debug_echo("<!-- konflin-elekto: " . var_export($GLOBALS['konfirmilolingvoj_elekto'], true) . "-->"); $temp_listo = array('eo' => "nur Esperanto"); foreach ($GLOBALS['konfirmilolingvoj_elekto'] as $kodo => $nomo) { $temp_listo[$kodo] = "Ankau^ " . $nomo; } eoecho("<br/> Konfirmilo-lingvo:");
break; } $tipo = new Malaligxkondicxotipo(); $tipo->kopiu(); $tipo->skribu_kreante(); $_REQUEST['id'] = $tipo->datoj['ID']; break; case 'sxangxu': echo "<!-- " . var_export($_REQUEST, true) . "-->"; $tipo = new Malaligxkondicxotipo($_REQUEST['ID']); $tipo->kopiu(); $tipo->skribu(); $_REQUEST['id'] = $tipo->datoj['ID']; break; default: darf_nicht_sein("sendu: " . $_REQUEST['sendu']); } // TODO if ($_REQUEST['id']) { $malaligxkondicxotipo = new Malaligxkondicxotipo($_REQUEST['id']); eoecho("<h1>Redakto de malalig^kondic^otipo <em>" . $malaligxkondicxotipo->datoj['nomo'] . "</em></h1>"); } else { eoecho("<h1>Kreado de nova malalig^kondic^otipo</h1>"); } echo "<form action='malaligxkondicxotipo.php' method='POST'>\n"; echo "<table>\n"; tabela_kasxilo("ID", "ID", $malaligxkondicxotipo->datoj['ID']); tabelentajpejo("nomo", "nomo", $malaligxkondicxotipo->datoj['nomo'], 20); /*tabelentajpejo("nomo_lokalingve", "nomo_lokalingve", $malaligxkondicxotipo->datoj['nomo_lokalingve'], 20); */ tabelentajpejo("mallongigo", "mallongigo", $malaligxkondicxotipo->datoj['mallongigo'], 10);
/** * traktas <tekstero>n el la gramatiko cxe * transformu_tekston(). */ function simpla_teksttransformo($sxablonero, $datumoj) { $teksto = ""; $sxablona_pozicio = 0; while (false !== ($komenco = strpos($sxablonero, '{{', $sxablona_pozicio))) { // la <simpla_teksto> el (4). $teksto .= substr($sxablonero, $sxablona_pozicio, $komenco - $sxablona_pozicio); $fino = strpos($sxablonero, '}}', $komenco + 2); if ($fino === false) { darf_nicht_sein(); } // la <variablo> el (4). $teksto .= teksttransformo_donu_datumon(substr($sxablonero, $komenco + 2, $fino - ($komenco + 2)), $datumoj); // la sekva iteracio (aux la post-iteracia parto de la funkcio) // traktas la <tekstero>n el (4). $sxablona_pozicio = $fino + 2; } // la simpla_teksto el (3). $teksto .= substr($sxablonero, $sxablona_pozicio); return $teksto; }
function sql_eraro($sql = '') { $eraro = mysql_error(); if ($eraro) { echo "<BR> Io eraro okazis cxe la sql esprimo <code>{$sql}</code>"; echo "<BR> Estis: <code>" . mysql_error() . "</code>"; // TODO: Das machen wir bald via Automatik.!!! //eoecho ("<BR><BR>Bonvolu reporti g^in al nia <a href='mailto:".teknika_administranto_retadreso."'>administrado</a><BR><BR>"); darf_nicht_sein(); ligu("index.php", "--> komenca pag^o", "_top"); exit; } }
/** * Analizas ĉenon. * * Eblaj formato de ĉenoj: * * - ĉeno (prenas ĝin el la lasta per * {@link eniru_dosieron} anoncita dosiero) * - #ĉeno (identa) * - dosiero#ĉeno (prenas la dosieron en la sama dosierujo) * - dosierujo/dosiero#ĉeno (iras al alia dosierujo, relative) * - /dosierujo/dosiero#ĉeno (duon-absoluta, uzas la saman * "protokolon") * - proto:/dosierujo/dosiero#ĉeno (indikas absolutan lokon) * * - ~#ĉeno malatentas la dosieron de {@link eniru_dosieron}, * sed provas mem eltrovi, kiu dosiero vokas nin. * * @param tradcheno $origina_cheno la ĉeno analizenda * @param string|array $baza_dosiero Se estas cxeno, uzenda en * ghisdatigo-moduso, tiam ni uzas tiun * (internan) nomon kiel bazon (por ĉiuj * formoj krom proto:/...) * Se estas array, ni uzas la lastan elementon * de gxi, krom en la '~#'-kazo, kiam ni prenas * la vokantan dosieron. * Se "" (aux ne donita), ni prenas la lastan * elementon de $GLOBALS['traduko_dosieroj'] * kiel bazo. * @return array <code> * array('dosiero' => tuta_dosiernomo, * 'cheno' => ĉeno), * </code> * kie tuta_dosiernomo enhavas proto:/dosierujo/dosiero. */ function analizu_chenon($origina_cheno, $baza_dosiero = "") { debug_echo("<!-- analizu_chenon('" . $origina_cheno . "', " . var_export($baza_dosiero, true) . ")-->"); // echo ("<!--(ac) origina_cheno: " . $origina_cheno . // ($baza_dosiero? ", baza_dosiero: " . $origina_cheno : "") . // " \n-->"); list($dosiero, $cxeno) = explode('#', $origina_cheno, 2); debug_echo("<!--(ac) dosiero: " . $dosiero . ", cxeno: " . $cxeno . "\n-->"); if ($dosiero == '~') { // formo "~#cheno" if (is_string($baza_dosiero)) { return array('dosiero' => $baza_dosiero, 'cheno' => $cxeno); } $abs_dosiero = eltrovu_vokantan_dosieron(); $dosiero = absoluta_dosiernomo_al_interna($abs_dosiero); debug_echo("<!--(ac) dosiero: " . $dosiero . ", cxeno: " . $cxeno . "\n-->"); return array('dosiero' => $dosiero, 'cheno' => $cxeno); } // if ~ if (is_array($baza_dosiero)) { $baza_dosiero = end($baza_dosiero); } if (!$baza_dosiero) { darf_nicht_sein(); $baza_dosiero = end($GLOBALS['traduko_dosieroj']) or $baza_dosiero = 'nedifinita:/nedifinita'; } debug_echo("<!--(ac) baza_dosiero: " . $baza_dosiero . "\n-->"); if ($cxeno == "") { // formo "ĉeno" sen #, do ĉeno estas en $dosiero return array('dosiero' => $baza_dosiero, 'cheno' => $dosiero); } return array('dosiero' => kunmetu_uri_relative($dosiero, $baza_dosiero), 'cheno' => $cxeno); }
/** * specifa por IJK 2009, pro manko da tempo. * @todo prenu la tekstojn el la datumbazo. */ function kreu_lastan_informmesagxan_tekston($partoprenanto, $partopreno, $renkontigxo, $kodigo) { $enkonduko = "Kara " . $partoprenanto->datoj['personanomo'] . ",\n\nla organiza teamo g^ojas, ke vi venos al la 65a Internacia\nJunulara Kongreso en Liberec'.\nJen la lasta informa retmesag^o kun gravaj informoj por\nc^iuj partoprenantoj. Bonvolu legi g^in zorge.\n\n Enhavo\n========\n\n"; $enhavo[1] = array("Antau^kongresa informilo.", "\nSe vi ne scias, kiel veni al la IJK, vi vers^ajne maltrafis la\nantau^kongresan informilon, kiun ni sendis lastan semajnon. G^i\nestas els^utebla en PDF-formato (811 KB) tie:\n http://ijk.esperanto.cz/dokumentoj/antaukongresilo_ijk2009.pdf\n"); $enhavo[] = array("Prago: S^ang^o de bus-kajo", "\nAtentigo por tiuj kiuj veturos al Liberec' el Prago:\nOkazis s^ang^o en la busa stacidomo Černý Most. Auxtobusoj al\nLiberec' nun foriras el haltejo numero 6 (ne plu 7). Tamen,\nse vi alveninte per metroo al Černý Most elserc^os tie nian\nbonveniganton, tiu volonte asistos al vi pri c^io."); $enhavo[] = array("Kultur-Lingva Festivalo", "\nNi memorigas vin ke tradicie dum IJK okazas KLF, la Kultur-Lingva\nFestivalo, malfermita por la urbo kaj neesperantistoj. Tio estas bonega\ns^anco montri al homoj, kiel funkcias Esperanto kunigante diversajn\nnaciojn.\n\nC^i-foje KLF okazos 23-an de Julio (j^au^do), en la urboplaco de Liberec'.\n\nPrezentu vian landon dum KLF!\nMontru specialaj^ojn de via lando al lokaj urbanoj kaj pli ol 300\nesperantistoj de diversaj landoj, kiuj certe malsatas je ekscio pri\naliaj kulturoj kaj kutimoj.\n\nPor prezenti vian landon kaptu materialojn, mangxaj^ojn, vestaj^ojn, c^ion\nlau^ via plac^o, kio montras vian kulturon. Estus pli bone se vi povus\nprezenti nacian kanton au^ dancon, kiu reprezentas vian regionon.\n\nSe vi havas demandojn - simple kontaktu ijk.klf@esperanto.cz. "); $enhavo[] = array("Ludoj por la ludejo", "\nBonvolu atenti ke ankau^ c^ijare estos ludejo dum IJK. Bonvolu kunporti\nviajn plej s^atatajn ludojn por provi ilin kun viaj amikoj el la tuta mondo."); $kotizo = new Kotizokalkulilo($partoprenanto, $partopreno, $renkontigxo, new Kotizosistemo($renkontigxo->datoj['kotizosistemo'])); debug_echo("<!-- kotizokalkulilo: \n" . var_export($kotizo, true) . "-->"); $kotForm = new TekstaKotizoFormatilo($lingvo, $kodigo); $kotizo->tabelu_kotizon($kotForm); $enhavo[] = array("Via kotizokalkulado", "\nJen la tabelo de via kotizo, lau^ c^iuj antau^pagoj, kiuj\ng^is nun alvenis en nia datumbaza sistemo.\n\nSe mankas antau^pago de vi, bonvolu sendi noton al\nijk.kasisto@esperanto.cz kaj ijk.admin@esperanto.cz,\nkaj kunportu pruvilon pri via pago al la IJK, kaj ni\npovos solvi tion surloke.\n\n(Tia mankanta antau^pago ankau^ povas influi vian alig^kategorion,\n do ne necesas pri tio aparte plendi.)\n\n" . $kotForm->preta_tabelo . "\n"); switch ($partopreno->datoj['studento']) { case 'n': break; case 'j': $enhavo[] = array("Studenta legitimilo", "\nVi indikis, ke vi estos lernanto au^ studento dum IJK.\nTio bonas, c^ar ni tiel povas iom s^pari pri la c^ambrokostoj,\nkaj eble ankau^ iu ekskurso ig^os malpli kosta por vi.\n\nBonvolu ne forgesi kunporti iun studentan legitimilon.\n"); break; case '?': $enhavo[] = array("Studento?", "\nSe vi estos studento au^ lernanto dum IJK, bonvolu\nkunporti vian studentan legitimilon. Tio por ni ebligas\ns^pari iomete pri la c^ambrokostoj, kaj eble ankau^ iu\nekskurso ig^os malpli kosta por vi.\n"); break; default: darf_nicht_sein($partopreno->datoj['studento']); } switch ($partopreno->datoj['tejo_membro_kontrolita'] . $partopreno->datoj['tejo_membro_laudire']) { case 'jn': case 'jj': // nenio farenda break; case 'nn': $ne_estas = "\nLau^ nia kontrolo, vi g^is nun ne estas membro por 2009.\nVi povas alig^i (kaj pagi vian kotizon) surloke dum la\nakceptado.\n\nSe vi jam pagis vian kotizon, bonvolu kunporti pruvilon\npri tio al IJK.\n(Membrokarto kun aktuala membromarko ankau^ sufic^as.) "; if ($partoprenanto->datoj['naskigxdato'] >= "1979-01-01") { $enhavo[] = array("TEJO-membreco", "\nSe vi estos individua membro de UEA por 2009 en kategorioj MA-T\nau^ MJ-T (au^ DM-T respektive DMJ-T), t.e. individua membro de\nTEJO, vi ricevos rabaton depende de via landokategorio dum IJK." . $ne_estas); } else { $enhavo[] = array("UEA-membreco", "\nSe vi estos individua membro de UEA por 2009 en kategorioj MA\nau^ MJ (au^ DM respektive DMJ), t.e. individua membro de TEJO,\nvi ricevos rabaton depende de via landokategorio dum IJK." . $ne_estas); } break; case 'nj': $ne_membro = "\nvi povas alig^i (kaj pagi vian kotizon) surloke dum la akceptado.\n\nSe vi jam pagis vian kotizon, bonvolu kunporti pruvilon\npri tio al IJK.\n(Membrokarto kun aktuala membromarko ankau^ sufic^as.) "; if ($partoprenanto->datoj['naskigxdato'] >= "1979-01-01") { $enhavo[] = array("TEJO-membreco", "\nVi asertis esti membro de TEJO por 2009, sed nia kontrolo\ndonis kontrau^an rezulton. Por tamen ricevi la UEA-rabaton," . $ne_membro); } else { $enhavo[] = array("UEA-membreco", "\nVi asertis esti membro de UEA por 2009, sed nia kontrolo\ndonis kontrau^an rezulton. Por tamen ricevi la UEA-rabaton," . $ne_membro); } break; default: echo "nevalida membrec-kombino: [" . $partopreno->datoj['tejo_membro_kontrolita'] . $partopreno->datoj['tejo_membro_laudire'] . ']'; } $malenkonduko = "\nG^is la IJK en Liberec' post malpli ol unu semajno!\nNome de la organiza teamo salutas\nPau^lo Ebermann\n(Administranto)\n"; $teksto = eotransformado($enkonduko, $kodigo); foreach ($enhavo as $i => $ero) { $teksto .= "({$i}) " . eotransformado($ero[0], $kodigo) . "\n"; } foreach ($enhavo as $i => $ero) { $titolo = "({$i}) " . eotransformado($ero[0], $kodigo); $teksto .= "\n\n\n"; $teksto .= " " . $titolo . "\n"; $teksto .= str_repeat("=", mb_strlen($titolo, 'utf-8') + 2); $teksto .= "\n"; $teksto .= eotransformado($ero[1], $kodigo); } $teksto .= "\n\n\n" . eotransformado($malenkonduko, $kodigo); return $teksto; }
/** * donas tradukon de datumbazero laŭ lingvo. * * @param string $tabelo (abstrakta) tabelnomo * @param string $kampo kamponomo * @param string $id identigilo de la datumbaza objekto * @param string $lingvo la ISO-kodo de la lingvo. * @return string la tradukon de tiu valoro. */ function traduku_datumbazeron($tabelo, $kampo, $id, $lingvo) { $dosiero = $GLOBALS['agordoj']["db-trad-prefikso"] . ':/' . $tabelo."/".$kampo; // $query = // "SELECT traduko FROM `". $GLOBALS['agordoj']['db_tabelo'] . "` " . // " WHERE (dosiero = '$dosiero') " . // " AND (iso2 = '$lingvo') " . // // ĉeno + 0: estas stranga maniero konverti cheno al numero, uzante // // nur la komencon (kie estas ciferoj), forĵetante la reston. // " AND (cheno+0 = '$id')"; // debug_echo("<!--" . $query . "-->"); $sql = datumbazdemando('traduko', 'tradukoj', array('dosiero' => $dosiero, 'iso2' => $lingvo, '(cheno+0)' => $id)); $rez = sql_faru($sql); switch(mysql_num_rows($rez)) { case 0: // traduko mankas return null; case 1: $linio = mysql_fetch_assoc($rez); return $lingvo == 'eo' ? transformu_x_al_eo($linio['traduko']): $linio['traduko']; default: // pluraj tradukoj por sama dosiero + lingvo + ĉeno - ne okazu. darf_nicht_sein("pluraj tradukoj por " . $dosiero . " # " .$id . " [" + $lingvo + "]"); } }
/** * Kalkulas la bazan prezon por la renkontigxo. * * $renkontigxo - la identifikilo de la renkontigxo * $agxo - la agxkategorio (0-2 por $renkontigxo < 4, * 0-4 por $renkontigxo >= 4) * $kategorio - la aligxkategorio (0-2 por $renkontigxo < 4, * 1-2 por $renkontigxo >= 4) * $domo - tipo de la domo. Gravas nur la unua litero, estu aux * "J" (junulargastejo) aux "M" (memzorgantejo) * $landakategorio - necesas nur por $renkontigxo == 4. Estu * "A", "B" aux "C". */ function kutimaprezo($renkontigxo, $agxo, $kategorio, $domo, $landakategorio = "A") { //TODO: Im Moment noch jedesmal aufs neue zu schreiben //TODO: Das wird später aus der DB gezogen!!! if ($renkontigxo == '2' || $renkontigxo == '1') { //Trier und Rotenburg if ($domo[0] != "M") { if ($agxo == 2 and $kategorio == 0) { $baza = 172.0; } else { if ($agxo == 2 and $kategorio == 1) { $baza = 142.0; } else { if ($agxo == 2 and $kategorio == 2) { $baza = 128.0; } else { if ($agxo == 1 and $kategorio == 2) { $baza = 152.0; } else { if ($agxo == 1 and $kategorio == 1) { $baza = 172.0; } else { if ($agxo == 1 and $kategorio == 0) { $baza = 212.0; } else { if ($agxo == 0 and $kategorio == 0) { $baza = 232.0; } else { if ($agxo == 0 and $kategorio == 1) { $baza = 202.0; } else { if ($agxo == 0 and $kategorio == 2) { $baza = 182.0; } else { return -1; } } } } } } } } } } else { if ($agxo > 0 and $kategorio == 0) { $baza = 85.0; } else { if ($agxo > 0 and $kategorio == 1) { $baza = 75.0; } else { if ($agxo > 0 and $kategorio == 2) { $baza = 65.0; } else { if ($agxo == 0 and $kategorio == 0) { $baza = 130.0; } else { if ($agxo == 0 and $kategorio == 1) { $baza = 120.0; } else { if ($agxo == 0 and $kategorio == 2) { $baza = 110.0; } else { return -1; } } } } } } } //kampo ("baza", $baza); } else { if ($renkontigxo == '3') { if ($domo[0] != "M") { if ($agxo == 2 and $kategorio == 0) { $baza = 175.0; } else { if ($agxo == 2 and $kategorio == 1) { $baza = 150.0; } else { if ($agxo == 2 and $kategorio == 2) { $baza = 130.0; } else { if ($agxo == 1 and $kategorio == 0) { $baza = 210.0; } else { if ($agxo == 1 and $kategorio == 1) { $baza = 180.0; } else { if ($agxo == 1 and $kategorio == 2) { $baza = 160.0; } else { if ($agxo == 0 and $kategorio == 0) { $baza = 250.0; } else { if ($agxo == 0 and $kategorio == 1) { $baza = 220.0; } else { if ($agxo == 0 and $kategorio == 2) { $baza = 190.0; } else { return -1; } } } } } } } } } } else { if ($agxo > 0 and $kategorio == 0) { $baza = 90.0; } else { if ($agxo > 0 and $kategorio == 1) { $baza = 80.0; } else { if ($agxo > 0 and $kategorio == 2) { $baza = 70.0; } else { if ($agxo == 0 and $kategorio == 0) { $baza = 135.0; } else { if ($agxo == 0 and $kategorio == 1) { $baza = 125.0; } else { if ($agxo == 0 and $kategorio == 2) { $baza = 115.0; } else { return -1; } } } } } } } //kampo ("baza", $baza); return $baza; } else { if ($renkontigxo == '4' or $renkontigxo == '5' or $renkontigxo == '6') { // 4 == Wetzlar 04/05, 5 == Xanten 05/06, // 6 == Wewelsburg 06/07 if ($domo[0] == "J") { if ($kategorio == 2) { if ($landakategorio == "A") { switch ($agxo) { case 0: return 100.0; case 1: return 140.0; case 2: return 170.0; case 3: return 220.0; case 4: return 240.0; default: darf_nicht_sein(); } } else { if ($landakategorio == "B") { switch ($agxo) { case 0: return 85.0; case 1: return 119.0; case 2: return 144.5; case 3: return 187.0; case 4: return 204.0; default: darf_nicht_sein(); } } else { if ($landakategorio == "C") { switch ($agxo) { case 0: return 75.0; case 1: return 105.0; case 2: return 127.5; case 3: return 165.0; case 4: return 180.0; default: darf_nicht_sein(); } } else { darf_nicht_sein(); } } } } else { if ($kategorio == 1) { if ($landakategorio == "A") { switch ($agxo) { case 0: return 120.0; case 1: return 170.0; case 2: return 200.0; case 3: return 250.0; case 4: return 270.0; default: darf_nicht_sein(); } } else { if ($landakategorio == "B") { switch ($agxo) { case 0: return 102.0; case 1: return 144.5; case 2: return 170.0; case 3: return 212.5; case 4: return 229.5; default: darf_nicht_sein(); } } else { if ($landakategorio == "C") { switch ($agxo) { case 0: return 90.0; case 1: return 127.5; case 2: return 150.0; case 3: return 187.5; case 4: return 202.5; default: darf_nicht_sein(); } } else { darf_nicht_sein(); } } } } else { darf_nicht_sein(); } } } else { if ($domo[0] == "M") { if ($kategorio == 2) { if ($landakategorio == "A") { switch ($agxo) { case 0: return 30.0; case 1: return 60.0; case 2: return 80.0; case 3: return 100.0; case 4: return 120.0; default: darf_nicht_sein(); } } else { if ($landakategorio == "B") { switch ($agxo) { case 0: return 21.0; case 1: return 42.0; case 2: return 56.0; case 3: return 70.0; case 4: return 84.0; default: darf_nicht_sein(); } } else { if ($landakategorio == "C") { switch ($agxo) { case 0: return 12.0; case 1: return 24.0; case 2: return 32.0; case 3: return 40.0; case 4: return 48.0; default: darf_nicht_sein(); } } else { darf_nicht_sein(); } } } } else { if ($kategorio == 1) { if ($landakategorio == "A") { switch ($agxo) { case 0: return 40.0; case 1: return 70.0; case 2: return 95.0; case 3: return 120.0; case 4: return 140.0; default: darf_nicht_sein(); } } else { if ($landakategorio == "B") { switch ($agxo) { case 0: return 28.0; case 1: return 49.0; case 2: return 66.5; case 3: return 84.0; case 4: return 98.0; default: darf_nicht_sein(); } } else { if ($landakategorio == "C") { switch ($agxo) { case 0: return 16.0; case 1: return 28.0; case 2: return 38.0; case 3: return 48.0; case 4: return 56.0; default: darf_nicht_sein(); } } else { darf_nicht_sein(); } } } } else { darf_nicht_sein(); } } } else { darf_nicht_sein(); } } // ni espereble jam faris "return" dum la lasta if_else-kaskado darf_nicht_sein(); } else { if ($renkontigxo == '7') { // 7 == Würzburg 07/08 if ($domo[0] == "J") { // junulargastejo switch ($kategorio) { case 'tre_frua': switch ("{$agxo}") { case 'bebo': return 0; case 0: // sub 18 switch ($landakategorio) { case 'A': return 100; case 'B': return 80; case 'C': return 70; default: darf_nicht_sein(); } case 1: // sub 22 switch ($landakategorio) { case 'A': return 140; case 'B': return 120; case 'C': return 100; default: darf_nicht_sein(); } case 2: // sub 27 switch ($landakategorio) { case 'A': return 175; case 'B': return 145; case 'C': return 125; default: darf_nicht_sein(); } case 3: // sub 36 switch ($landakategorio) { case 'A': return 230; case 'B': return 190; case 'C': return 170; default: darf_nicht_sein(); } case 4: // maljuna switch ($landakategorio) { case 'A': return 250; case 'B': return 210; case 'C': return 185; default: darf_nicht_sein(); } default: darf_nicht_sein(); } // tre_frua // tre_frua case 'frua': switch ("{$agxo}") { case 'bebo': return 0; case 0: // sub 18 switch ($landakategorio) { case 'A': return 110; case 'B': return 95; case 'C': return 80; default: darf_nicht_sein(); } case 1: // sub 22 switch ($landakategorio) { case 'A': return 150; case 'B': return 130; case 'C': return 115; default: darf_nicht_sein(); } case 2: // sub 27 switch ($landakategorio) { case 'A': return 185; case 'B': return 155; case 'C': return 140; default: darf_nicht_sein(); } case 3: // sub 36 switch ($landakategorio) { case 'A': return 240; case 'B': return 200; case 'C': return 180; default: darf_nicht_sein(); } case 4: // maljuna switch ($landakategorio) { case 'A': return 260; case 'B': return 220; case 'C': return 195; default: darf_nicht_sein(); } default: darf_nicht_sein(); } case 'kutima': case 'malfrua': // malfrua havas saman bazan kotizon kiel 'kutima', // sed krompagon de 10 euxroj. switch ("{$agxo}") { case 'bebo': return 0; case 0: // sub 18 switch ($landakategorio) { case 'A': return 130; case 'B': return 110; case 'C': return 95; default: darf_nicht_sein(); } case 1: // sub 22 switch ($landakategorio) { case 'A': return 185; case 'B': return 155; case 'C': return 140; default: darf_nicht_sein(); } case 2: // sub 27 switch ($landakategorio) { case 'A': return 215; case 'B': return 185; case 'C': return 160; default: darf_nicht_sein(); } case 3: // sub 36 switch ($landakategorio) { case 'A': return 270; case 'B': return 230; case 'C': return 200; default: darf_nicht_sein(); } case 4: // maljuna switch ($landakategorio) { case 'A': return 290; case 'B': return 250; case 'C': return 220; default: darf_nicht_sein(); } default: darf_nicht_sein(); } default: darf_nicht_sein(); } darf_nicht_sein(); } // junulargastejo if ($domo[0] == "M") { // memzorgantejo switch ($kategorio) { case 'tre_frua': switch ("{$agxo}") { case 'bebo': return 0; case 0: // sub 18 switch ($landakategorio) { case 'A': return 15; case 'B': return 8; case 'C': return 5; default: darf_nicht_sein(); } case 1: // sub 22 switch ($landakategorio) { case 'A': return 35; case 'B': return 20; case 'C': return 10; default: darf_nicht_sein(); } case 2: // sub 27 switch ($landakategorio) { case 'A': return 50; case 'B': return 30; case 'C': return 15; default: darf_nicht_sein(); } case 3: // sub 36 switch ($landakategorio) { case 'A': return 60; case 'B': return 40; case 'C': return 20; default: darf_nicht_sein(); } case 4: // maljuna switch ($landakategorio) { case 'A': return 75; case 'B': return 50; case 'C': return 25; default: darf_nicht_sein(); } default: darf_nicht_sein(); } // tre_frua // tre_frua case 'frua': switch ("{$agxo}") { case 'bebo': return 0; case 0: // sub 18 switch ($landakategorio) { case 'A': return 20; case 'B': return 15; case 'C': return 10; default: darf_nicht_sein(); } case 1: // sub 22 switch ($landakategorio) { case 'A': return 40; case 'B': return 25; case 'C': return 17; default: darf_nicht_sein(); } case 2: // sub 27 switch ($landakategorio) { case 'A': return 55; case 'B': return 40; case 'C': return 22; default: darf_nicht_sein(); } case 3: // sub 36 switch ($landakategorio) { case 'A': return 70; case 'B': return 45; case 'C': return 28; default: darf_nicht_sein(); } case 4: // maljuna switch ($landakategorio) { case 'A': return 80; case 'B': return 50; case 'C': return 33; default: darf_nicht_sein(); } default: darf_nicht_sein(); } case 'kutima': case 'malfrua': // malfrua havas saman bazan kotizon kiel 'kutima', // sed krompagon de 10 euxroj. switch ("{$agxo}") { case 'bebo': return 0; case 0: // sub 18 switch ($landakategorio) { case 'A': return 25; case 'B': return 19; case 'C': return 12; default: darf_nicht_sein(); } case 1: // sub 22 switch ($landakategorio) { case 'A': return 45; case 'B': return 33; case 'C': return 20; default: darf_nicht_sein(); } case 2: // sub 27 switch ($landakategorio) { case 'A': return 65; case 'B': return 45; case 'C': return 25; default: darf_nicht_sein(); } case 3: // sub 36 switch ($landakategorio) { case 'A': return 80; case 'B': return 60; case 'C': return 33; default: darf_nicht_sein(); } case 4: // maljuna switch ($landakategorio) { case 'A': return 95; case 'B': return 65; case 'C': return 38; default: darf_nicht_sein(); } default: darf_nicht_sein(); } default: darf_nicht_sein(); } darf_nicht_sein(); } // memzorgantejo darf_nicht_sein(); } else { // defauxlto, por ke almenaux io okazu return 888.88; } } } } }
if (DEBUG) { echo "<!-- " . var_export($_REQUEST, true) . "-->"; echo "<!-- prafix: '" . $GLOBALS['prafix'] . "' -->"; } $sql = datumbazdemando(array('renkontigxoID', 'mesagxoID', 'teksto'), 'tekstoj', "ID = '{$_REQUEST['id']}'"); $rez = sql_faru($sql); switch (mysql_num_rows($rez)) { case 0: // eraro, mankas datumbazero darf_nicht_sein(); break; case 1: // en ordo break; default: darf_nicht_sein(); } $linio = mysql_fetch_assoc($rez); if ($linio['renkontigxoID'] != $_SESSION['renkontigxo']->datoj['ID']) { $_SESSION['renkontigxo'] = new Renkontigxo($linio['renkontigxoID']); } // redakto de ekzistanta teksto eoecho("<h2>Redakto de ekzistanta teksto</h2>"); eoecho("<p>Vi nun s^ang^os tekston (#" . $_REQUEST['id'] . ") de la renkontig^o " . $_SESSION['renkontigxo']->datoj['mallongigo'] . " (#" . $_SESSION['renkontigxo']->datoj['ID'] . ").</p>"); $id_postt = "(Kutime ne necesas s^ang^i tiun - faru tion nur," . " se vi scias, ke kaj kial tio necesas.)"; $_REQUEST['mesagxoID'] = $linio['mesagxoID']; $_REQUEST['teksto'] = $linio['teksto']; } else { eoecho("<h2>Aldono de nova teksto</h2>"); eoecho("<p>Vi nun aldonos tekston al la renkontig^o " . $_SESSION['renkontigxo']->datoj['mallongigo'] . " (#" . $_SESSION['renkontigxo']->datoj['ID'] . ").</p>"); $id_postt = "";
case 'nn': case 'n?': $statoteksto = "{$ri} ne estas TEJO-membro por " . TEJO_MEMBRO_JARO . "."; akceptada_instrukcio("Demandu {$ri}n, c^i {$ri} volas ig^i TEJO-membro" . " por " . TEJO_MEMBRO_JARO . ", pagi " . "la kotizon nun kaj ricevi rabaton."); akceptada_instrukcio("Se jes, donu al {$ri} UEA-membrig^ilon, kiun" . " {$ri} plenigu. (Tie ankau^ trovig^os {$ri}a" . " kotizo.)"); akceptada_instrukcio("Elektu sube la g^ustan punkton kaj entajpu la " . " kotizon, poste <em>S^ang^u</em>."); $stato = 'ne'; break; case 'np': case 'jp': $statoteksto = "{$ri} ne estas TEJO-membro por " . TEJO_MEMBRO_JARO . " (= ne ricevas rabaton), sed tamen ial" . " pagas " . $partopreno->datoj['tejo_membro_kotizo'] . " E^ al TEJO/UEA (ekzemple membrokotizo por troag^ulo," . " kategorio MG, au^ por alia persono)."; akceptada_instrukcio("Nenio plu farendas pri TEJO."); $stato = "pagas"; break; default: darf_nicht_sein("illegaler Zustand von <code>tejo_membro_laudire</code> (" . $partopreno->datoj['tejo_membro_laudire'] . ") oder <code>tejo_membro_kontrolita</code> (" . $partopreno->datoj['tejo_membro_kontrolita'] . ")."); } // if ($partoprenanto->datoj['naskigxdato'] < TEJO_AGXO_LIMDATO) // { // akceptada_instrukcio("Lau^ nia kalkulo, {$ri} estas " . // "<strong>tro ag^a</strong> por ig^i " . // "TEJO-membro."); // } ligu_sekvan("TEJO-kotizo klaras."); akceptado_kesto_fino(); if (!necesas_tejo_traktado()) { eoecho("<p>Lau^ la opinio de la programo ne necesas " . "TEJO-traktado por tiu ulo. Vi (kiel h**o) " . "kompreneble tamen rajtas fari tion.</p>"); } eoecho("<p>Se {$ri} estos membro de TEJO por la jaro " . TEJO_MEMBRO_JARO . ", {$ri} ricevos rabaton" . " de " . TEJO_RABATO . " E^.\n</p>"); eoecho("<h3>Aktuala stato</h3>\n"); if ($partoprenanto->datoj['naskigxdato'] < TEJO_AGXO_LIMDATO) {
/** * metas tabelcxelon por lito-uzo de unu partoprenanto. * * @param array $rezervinformoj (rezulto de {@link uzata_cxambro}) * @param int $nokto numero de la nokto * @param int $partoprenoID identigilo de tiu partopreno, por kiu * ni estas sercxanta liton (aux kiun ni * rigardas) * @param string $grandeco aux "granda" aux io alia. */ function metu_partoprenant_litan_keston($rezervinformoj, $nokto, $partoprenoID, $grandeco) { if ($rezervinformoj['rezervtipo'] == 'd') { $klaso = 'disdonita'; } else { if ($rezervinformoj['rezervtipo'] == 'r') { $klaso = 'rezervita'; } else { darf_nicht_sein("rezervtipo: '" . $rezervinformoj['rezervtipo'] . "'"); } } $diferenco = $rezervinformoj['nokto_gxis'] - $nokto; if ($rezervinformoj['ID'] == $partoprenoID) { $klaso .= " mialito"; } echo "<td class='" . $klaso . "' colspan='" . ($diferenco + 1) . "'>"; $loka_partoprenanto = new Partoprenanto($rezervinformoj['partoprenantoID']); $loka_partopreno = new Partopreno($rezervinformoj['ID']); if ($grandeco == 'granda' or $diferenco > 3) { $teksto = $loka_partoprenanto->tuta_nomo() . " (" . $loka_partoprenanto->landonomo() . "/" . $loka_partoprenanto->datoj['sekso'] . "/" . $loka_partopreno->datoj['agxo'] . "/" . $loka_partopreno->datoj['cxambrotipo'] . ")"; ligu("partrezultoj.php?partoprenidento=" . $rezervinformoj['ID'], $teksto); if ($grandeco == 'granda') { // ecx pli granda ... // ni eluzas, ke nia CSS-klaso samtempe estas // la gxusta vorto (:-) echo '<br/> (' . $klaso . ')'; $forgesu_butono = $rezervinformoj['rezervtipo'] == 'r' ? "malrezervu" : "elj^etu"; $disdonu_butono = "disdonu"; } else { // mezgranda $forgesu_butono = "for"; $disdonu_butono = 'donu'; } } else { // malgranda ligu("partrezultoj.php?partoprenidento=" . $rezervinformoj['ID'], $rezervinformoj['rezervtipo']); $forgesu_butono = 'x'; $disdonu_butono = 'd'; } echo " "; butono($rezervinformoj['litoID'], $forgesu_butono, 'forgesu_liton'); if ($rezervinformoj['rezervtipo'] == 'r') { butono($rezervinformoj['litoID'], $disdonu_butono, 'disdonu_rezervitan_liton'); } echo "</td>"; return $diferenco; }
/** * kontrolas, ĉu estis eraro en la lasta SQL-agado. * Se jes, montras tiun eraron kaj finas per {@link darf_nicht_sein()}. */ function sql_eraro($sql = '') { $eraro = mysql_error(); if ($eraro) { eoecho("<p> Iu eraro okazis c^e la SQL-esprimo"); echo "<code>{$sql}</code>\n"; echo "<br/> Estis: <code>" . mysql_error() . "</code></p>\n"; darf_nicht_sein(); } }
/** * Montras HTML-elektilon (<select>-elementon) de partoprenantoj * Ĝi montras personan nomon, familian nomon kaj la mallongigo * de renkontiĝo, kaj kiam oni elektis ion, ĝi sendas la * identifikilon ("ID"). * * @param sqlstring $sql - la SQL-demando. La rezulto enhavu * almenaŭ "ID", "nomo", "personanomo", eble ankaux * "renkNumero" kiel kampoj. (Pliaj kampoj eblas, sed ne * estas uzataj.) * Ekzempla SQL-demando por ĉiuj partoprenantoj: * <code> * $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") * ); * </code> * @param string $nomo - la valoro de la "name"-atributo de la * <select>-elemento. La defaŭlta 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_assoc($rezulto)) { if ($row['renkNumero']) { $mallongigo = $mallongigoj[$row["renkNumero"]]; // Ni serĉas por ĉiu renkontiĝo 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; } } else { $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"; }
/** * anstatauxenda en subklasoj. * * La funkcio metu la informojn pri la baza kotizo en $this->detalolisto, * kaj plialtigu $this->sumo per gxi. * Ankaux metu la uzitajn kategoriojn en $this->kategorioj. */ function kalkulu_bazan_kotizon() { darf_nicht_sein(); }
function metu_bazan_kotizotabelon($redaktebla, $tipoj, $identigiloj, $aldone, $titolo) { $tipo = array_pop($tipoj); $katsistemo = $this->donu_kategorisistemon($tipo); $ordigo = $katsistemo->donu_kategorian_ordigon(); $sekva_tipo = array_pop($tipoj); if (count($tipoj)) { darf_nicht_sein("pli ol 0: " . count($tipoj)); } eoecho("<table class='kotizotabelo-baza'><caption>" . $titolo . "</caption>"); $this->metu_kotizotitollinion($sekva_tipo); $rez = sql_faru(datumbazdemando(array("nomo", 'ID'), $tipo . "kategorioj", array("sistemoID" => $katsistemo->datoj['ID']), "", array("order" => $ordigo))); while ($linio = mysql_fetch_assoc($rez)) { $identigiloj[$tipo] = $linio['ID']; $this->metu_bazan_kotizolinion($redaktebla, $sekva_tipo, $identigiloj, $linio['nomo'], $aldone); } echo "</table>"; }
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 -->"; } }