/**
 * @param Partopreno partopreno pp-objekto.
 * @param array $mangxmendo $_POST['mangxmendo']
 * @todo: atentu, kiam iu malplilongigas sian partoprentempon.
 */
function traktu_mangxomendojn($partopreno, $mangxmendo)
{
    $mangxolisto = listu_eblajn_mangxojn($partopreno);
    foreach ($mangxolisto as $mangxoID) {
        $antauxe_mendis = cxuMangxas($partopreno->datoj['ID'], $mangxoID);
        $nun_mendas = jesne_al_boolean($mangxmendo[$mangxoID]);
        if ($antauxe_mendis and !$nun_mendas) {
            forigu_el_datumbazo('mangxmendoj', array('partoprenoID' => $partopreno->datoj['ID'], 'mangxtempoID' => $mangxoID));
        } else {
            if ($nun_mendas and !$antauxe_mendis) {
                aldonu_al_datumbazo('mangxmendoj', array('partoprenoID' => $partopreno->datoj['ID'], 'mangxtempoID' => $mangxoID));
            }
        }
    }
}
/**
 * kreas tabelon en formo de array-oj.
 * @param Partopreno $partopreno
 * @return array (tagolisto, tabelo)
 */
function kreu_mangxtabelon($partopreno = null)
{
    $mangxolisto = listu_eblajn_mangxojn($partopreno);
    $tabelo = array();
    $tagolisto = array();
    foreach ($mangxolisto as $mangxoID) {
        $mtempo = new Mangxtempo($mangxoID);
        if ($partopreno) {
            $mendita = cxuMangxas($partopreno->datoj['ID'], $mangxoID);
        } else {
            if (isset($_REQUEST['mangxmendo'])) {
                $mendita = jesne_al_boolean($_REQUEST['mangxmendo'][$mangxoID]);
            } else {
                $mendita = true;
            }
        }
        $tabelo[$mtempo->datoj['mangxotipo']][$mtempo->datoj['dato']] = array('mtempo' => $mtempo, 'mendita' => $mendita);
        $tagolisto[] = $mtempo->datoj['dato'];
    }
    $tagolisto = array_values(array_unique($tagolisto));
    ksort($tabelo, SORT_STRING);
    return array($tagolisto, $tabelo);
}