/** * 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 metu_la_liston() { $listilo = new SQL_alternate_merge("personanomo", "sxildnomo"); // tiuj estas por la plenaj adresoj: $listilo->maldekstra_datumbazdemando(array('personanomo', 'p.nomo' => 'fnomo', 'sxildnomo', 'adreso', 'posxtkodo', 'urbo', 'l.nomo' => 'landonomo', 'sxildlando', 'telefono', 'tujmesagxiloj', 'retposxto', '"1"' => 'plena'), array('partoprenantoj' => 'p', 'partoprenoj' => 'pp', 'landoj' => 'l'), array('p.ID = pp.partoprenantoID', 'p.lando = l.ID', 'pp.alvenstato' => 'a', 'pp.intolisto' => 'J'), array("renkontigxo" => "pp.renkontigxoID"), array("order" => "personanomo ASC")); // por la plusendoj ni bezonas nur sxildnomon kaj veran nomon. $listilo->dekstra_datumbazdemando(array("sxildnomo", "personanomo", "nomo" => "fnomo"), array('partoprenantoj' => 'p', 'partoprenoj' => 'pp'), array('p.ID = pp.partoprenantoID', "p.sxildnomo <> ''", 'pp.alvenstato' => 'a'), array('renkontigxo' => "pp.renkontigxoID"), array("order" => "sxildnomo ASC")); metu_ordigolokalajxon('eo'); while ($linio = $listilo->sekva()) { $this->aldonu_adreson($linio); } }
/** * ordigas array laux lingvo. * * @todo faru pli bone konfigurebla - nun estas speciale * por la haveblaj LOCALE-valoroj en la eo.de-servilo. */ function ordigu_laux_lingvo(&$array, $lingvo) { if ($lingvo and defined("STR_KOMPARO_" . $lingvo)) { $komp = constant("STR_KOMPARO_" . $lingvo); uasort($array, $komp); } else { if ($lingvo) { metu_ordigolokalajxon($lingvo); asort($array, SORT_LOCALE_STRING); } } }