/** * 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); }
/** * sercxas en dosiero pri cxenoj tradukendaj. * @param string $dosiero dosiernomo (sur disko) * @param string $interna dosiernomo (en datumbazo) */ function traktu_dosieron($abs_dosiero, $interna) { // echo "(traktas " . $dosiero . " ...) <br />\n"; global $trovitaj, $tabelo, $chefa, $tradukoj; if (isset($_GET["parta"]) && (filemtime($dosiero) < time() - (60*60*24*7))) { return; } $tuto = join("", file($abs_dosiero)); preg_match_all("/CH([_a-z]*)\s*\(\s*[\"']([^\"']*)[\"']\s*(,|\))/", $tuto, $chenoj); $chenoj = $chenoj[2]; for ($i = 0; $i < count($chenoj); $i++) { // $cxeno, $dosiero extract(analizu_chenon($chenoj[$i], $interna)); if (!in_array($dosiero . "#" . $cheno, $trovitaj)) { $trovitaj[] = $dosiero . "#" . $cheno; if (eltrovu_gxenerale("COUNT(*)", "tradukoj", array("dosiero = '$dosiero'", "cheno = '$cheno'", "iso2 = '$chefa'")) < 1) { // $query = "SELECT traduko FROM $tabelo WHERE " // . "dosiero = '$dosiero' AND cheno = '$cheno' " // . "AND iso2 = '$chefa'"; // $result = mysql_query($query); // $row = mysql_fetch_array($result); // if (!$row) { // mankas en la datumbazo skatolo_por_cheno("aldonu", $tradukoj["stato-aldonenda"], "aldonenda", $dosiero, 1, $cheno, $chefa); } } } }
/** * @param array $tagolisto * @param array $para */ function montru_mangxojn_laux_tage($titolo, $kondicxoj, $tagolisto, &$para) { $kondicxoj[] = "t.ID = mangxtempoID"; $kondicxoj[] = "p.ID = partoprenoID"; $tabeloj = array("mangxtempoj" => "t", "mangxmendoj" => "m", "partoprenoj" => "p"); $linioj = eltrovu_gxenerale("count(DISTINCT mangxotipo)", $tabeloj, $kondicxoj, "t.renkontigxoID"); $sql = datumbazdemando(array("dato", "mangxotipo", "count(partoprenoID)" => "num"), $tabeloj, $kondicxoj, "t.renkontigxoID", array("group" => "mangxotipo ASC, dato ASC")); formatu_mangxrezulton($titolo, $linioj, $sql, $para, $tagolisto); }
/** * eltrovas kaj redonas la bazan kotizon por tiu kategorio. * * @param array $kategorioj array() en la formo * agx => ..., // id de agxkategorio * lando => ..., // id de landokategorio * logx => ..., // id de logxkategorio * aligx => ..., // id de aligxkategorio * aux kie la valoroj (por samaj sxlosiloj) estas de la * formo * array(ID => ..., ...). * @return number la baza kotizo. */ function eltrovu_bazan_kotizon($kategorioj) { $restriktoj = array("kotizosistemo = '" . $this->datoj['ID'] . "'"); foreach ($kategorioj as $nomo => $id) { if (is_array($id)) { $id = $id['ID']; } $restriktoj[] = "{$nomo}kategorio = '{$id}'"; } $num = eltrovu_gxenerale('kotizo', 'kotizotabeleroj', $restriktoj); debug_echo("<!-- eltrovu_bazan_kotizon(...)\n ==> " . $num . "-->"); return $num; }
/** * eltrovas, ĉu ekzistas traduko en la aktuala lingvo. * * @param tradcheno $origina_cheno * @return int 1, se ekzistas traduko, 0 alikaze. * @todo pripensu, ĉu ni bezonas tiun funkcion - se jes, * pripensu pli bonan rezult-tipon (kaj plibeligu implementadon), * se ne, forĵetu. */ function ekzistas($origina_cheno) { global $traduko_dosieroj, $trad_lingvo, $db, $agordoj; if ($_GET["antaumontro"]) $trad_lingvo = $_GET["lingvo"]; if (!$trad_lingvo) $trad_lingvo = $agordoj["chefa_lingvo"]; // $cheno, $dosiero extract(analizu_chenon($origina_cheno)); // $db = konektu(); // $tabelo = $agordoj["db_tabelo"]; // $query = "SELECT traduko FROM $tabelo WHERE dosiero" // . " = '$dosiero' AND cheno = '$cheno' AND iso2 = '$trad_lingvo'"; return eltrovu_gxenerale("COUNT(*)", 'tradukoj', array("dosiero" => $dosiero, "cheno" => $cheno, "iso2" => $trad_lingvo)); // $result = mysql_query($query); // return mysql_num_rows($result); }
function kalkulu_mangxojn($partopreno, $mangxotipo) { $num = eltrovu_gxenerale('COUNT(ID)', array('mangxtempoj' => 't', 'mangxmendoj' => 'm'), array("m.mangxtempoID = t.ID", 'm.partoprenoID' => $partopreno->datoj['ID'], 't.mangxotipo' => $mangxotipo)); return intval($num); }
/** * donas iun renkontigxo- kaj lingvo-specifan tekston * */ function donu_tekston_lauxlingve($identifikilo, $lingvo, $renkontigxo = "") { $renkontigxo = kreuRenkontigxon($renkontigxo); $id = eltrovu_gxenerale("ID", "tekstoj", array("mesagxoID = '" . $identifikilo . "'", "renkontigxoID = '" . $renkontigxo->datoj['ID'] . "'")); $teksto = traduku_datumbazeron("tekstoj", "teksto", $id, $lingvo); if (isset($teksto)) { return $teksto; } return "[traduko mankas (" . $lingvo . "): [" . donu_tekston($identifikilo, $lingvo, $renkontigxo) . "]]"; }
/** * montras ligojn al aliaj administraj paĝoj, depende de la * rajtoj de la aktuala uzanto. */ function montru_aliajn_ligojn() { eoecho("<h2>Aliaj gravaj aferoj</h2>"); rajtligu("landoj.php", "rigardu kaj eble s^ang^u la landoliston", "", "administri"); eoecho("<br/>"); eoecho("<p>Elprintu partoprenstatistikon:<br/>\n"); rajtligu("demandoj.php", "partopren statistikojn", "", "administri"); echo "(das ist leider zur Zeit etwas kaputt) <br/>"; rajtligu("finkalkulado.php", "Finkalkulado", "", "administri"); echo "<br/>"; rajtligu("cxambrostatistiko.php", "montru la c^ambrostatistikon kaj la mang^statistikon", "", "administri"); echo "</p>"; if (!rajtas("teknikumi")) { echo "<hr/>\n"; return; } echo "<hr/>\n"; eoecho("<h2>Nur por teh^nikistoj</h2>\n<p>"); if (mangxotraktado == "libera") { ligu("mangxredakto.php", "Mang^o-listo"); } rajtligu("entajpantoj.php", "rigardu kaj eble s^ang^u la entajpantoliston", "", "teknikumi"); eoecho("<br/>"); rajtligu("renkontigxo.php", "redaktu la renkontig^o-datumojn", "", "teknikumi"); eoecho("<br/>"); rajtligu("kreu_cxambron.php", "kreu novan c^ambron", "", "teknikumi"); eoecho("<br/>Internaj dosierujoj: "); echo "<span class='speciala'>"; rajtligu("specialaj_skriptoj/", "specialaj skriptoj", "", "teknikumi"); echo "</span>"; rajtligu("dosieroj/", "dosieroj", "", "teknikumi"); rajtligu("instalilo/", "instalilo", "", "teknikumi"); rajtligu("dosieroj_generitaj/", "dosieroj generitaj", "", "teknikumi"); rajtligu("doku/", "dokumentaj^oj", "", "teknikumi"); eoecho("</p>"); eoecho("\n <h3 id='renkkonfig'>Renkontig^o-konfiguroj</h3>\n <p>\n La renkontig^o-konfiguroj estas uzataj ekzemple por la listo de\n pagotipoj, kialoj por individuaj rabatoj kaj krompagoj, valutoj\n kaj log^tipoj, kiuj estas specifaj por c^iu renkontig^o.\n </p>\n"); $num = eltrovu_gxenerale("count(*)", 'renkontigxaj_konfiguroj', array(), array('renkontigxo' => 'renkontigxoID')); eoecho("\n <p>\n Nun estas {$num} konfiguroj por la aktuala renkontig^o (" . $_SESSION['renkontigxo']->datoj['mallongigo'] . "). "); ligu("renkontigxaj_konfiguroj.php", "vidu la liston kaj eble redaktu ion"); ligu("renkontigxaj_konfiguroj.php?id=nova", "kreu novan konfiguron"); eoecho("\n </p>\n"); eoecho("\n <h3 id='kurzoj'>Kurzoj</h3>\n <p>"); ligu("kurzoj.php", "Listu kurzojn kaj aldonu novajn"); echo "</p>\n"; eoecho("\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 = '" . $_SESSION['renkontigxo']->datoj['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"); ligu("tekstoj.php", "Vidu la liston (kaj eble redaktu kelkajn)"); ligu("nova_teksto.php", "Aldonu novan tekston"); echo "</p><p>"; echo "<hr/>\n"; }
/** * redonas la tekston (eble kun tradukoj) * por iu konfigura opcio. * * @param asciistring $tipo * @param asciistring $interna * @param int $renkID * @return eostring */ function donu_konfiguran_tekston($tipo, $interna, $renkID) { $id = eltrovu_gxenerale('id', 'renkontigxaj_konfiguroj', array('tipo' => $tipo, 'interna' => $interna, 'renkontigxoID' => $renkID)); $konfiguro = new Renkontigxa_Konfiguro($id); return $konfiguro->tradukita('teksto'); }
session_start(); malfermu_datumaro(); // $elekto estas identigilo de la elektata sercx-ago. $elekto = $_REQUEST['elekto']; if ($elekto == "laborontajnotoj") { $sercxilo = kreu_NotoTabelilon("listo_notoj_cxiuj", true, $_REQUEST['montro']); if ($_REQUEST['montro'] == 'cxiuj') { $teksto = "C^iuj notoj"; } else { $teksto = "C^iuj " . $_REQUEST['montro'] . " notoj"; } $sercxilo->metu_antauxtekston($teksto); $sercxilo->montru_rezulton_en_HTMLdokumento(); } else { if ('nenula_saldo' == $elekto) { $num_valutoj = eltrovu_gxenerale("count('ID')", 'renkontigxaj_konfiguroj', array('tipo' => 'valuto'), 'renkontigxoID'); $sql = datumbazdemando(array('p.ID', 'p.partoprenantoID', 'pn.nomo', 'pn.personanomo'), array('partoprenoj' => 'p', 'partoprenantoj' => 'pn'), array("p.alvenstato = 'a' or " . " p.alvenstato = 'i'", 'pn.ID = p.partoprenantoID'), "renkontigxoID", array("order" => "pn.personanomo, pn.nomo")); $rez = sql_faru($sql); $renkontigxo = $_SESSION['renkontigxo']; $kotsistemo = new Kotizosistemo($renkontigxo->datoj['kotizosistemo']); HtmlKapo(); eoecho("<h1>Ne-nulaj saldoj</h1>\n <p>Jen listo de c^iuj partoprenintoj de " . $renkontigxo->datoj['mallongigo'] . ", kies pago-kotizo-saldo\n estas ne-nula.</p>\n <table>\n <thead>\n <tr><th>nomo</th><th>saldo</th><th colspan='" . $num_valutoj . "'>pagenda</th><th colspan='" . $num_valutoj . "'>repagenda</th></tr>\n </thead>\n <tbody>"); $sumoj_pag = array(); $sumoj_repag = array(); $faktoroj = array(false => 1.0, true => -1.0); $klasoj = array(false => 'pagenda', true => 'repagenda'); $sumoj = array(false => &$sumoj_pag, true => &$sumoj_repag); while ($linio = mysql_fetch_assoc($rez)) { $prenanto = new Partoprenanto($linio['partoprenantoID']); $preno = new Partopreno($linio['ID']); $kot = new Kotizokalkulilo($prenanto, $preno, $renkontigxo, $kotsistemo);