$order, 'min' => min($m1, min($m2, $m3)), 'max' => max($m1, max($m2, $m3)) ); //return array('order' => $order, 'min' => min($result[$order[0]]['o1']/$capacities[$order[0]]/$weights[0], min($result[$order[1]]['o2']/$capacities[$order[1]]/$weights[1], $result[$order[2]]['o3']/$capacities[$order[2]]/$weights[2]))); //return array('order' => $order, 'min' => min($result[$order[0]]['o1'], min($result[$order[1]]['o2'], $result[$order[2]]['o3']))); //return array('order' => $order, 'min' => min($weights[0]*$result[$order[0]]['o1'], min($weights[1]*$result[$order[1]]['o2'], $weights[2]*$result[$order[2]]['o3']))); //print_r($return); //exit; return $return; } //print_r($result); $possibilities = array_map('find_min_of_order', $selector); // find possibility with largest 'min' //print_r($possibilities); shuffle($possibilities); $best = $possibilities[0]; for ($i = 1; $i < count($possibilities); $i++) { if ($best['min'] < $possibilities[$i]['min']) { $best = $possibilities[$i]; } } if ($best['min'] <= 0) { $_SESSION['err'] = 'De gekozen combinatie van workshops is helaas reeds volgeboekt.'; header('Location: '.$location.sprint_url_parms($_POST, 1)); exit; } // neem degene met de meeste plek for ($i = 1; $i < count($possibilities); $i++) { if ($best['max'] < $possibilities[$i]['max'] && $possibilities[$i]['min'] > 0) { $best = $possibilities[$i]; } } // dit is de verdeling van de workshops over de rondes, nu nog lokalen zoeken echo("best:\n"); print_r($best); function select_lokaal($namens, $ronde, $oudersws_id) { global $db, $soft_limit; assert($ronde == 1 || $ronde == 2 || $ronde == 3); $infos = mdb2_all_assoc_rekey($db, << 0 ORDER BY lokaal_id EOQ ); echo("function select lokaal aangeroepen voor ronde $ronde!\n"); $aantal_lokalen = count($infos); $first_less_than_fullish = 0; $least_full_factor = 1; $least_full = 0; if (!$aantal_lokalen) return 0; foreach ($infos as $lokaal_id => $info) { $factor = 1 - $info['o']/$info['t']; if ($info['o'] > 0 && $least_full_factor > $factor) { $least_full_factor = $factor; $least_full = $lokaal_id; } if ($factor >= $soft_limit) { $infos[$lokaal_id]['lessthanfullish'] = 0; } else { if (!$first_less_than_fullish) $first_less_than_fullish = $lokaal_id; $infos[$lokaal_id]['lessthanfullish'] = 1; } } print_r($infos); if ($first_less_than_fullish) return $first_less_than_fullish; else if ($least_full) return $least_full; else return 0; } $r1_lokaal_id = select_lokaal($namens, 1, $best['order'][0]); $r2_lokaal_id = select_lokaal($namens, 2, $best['order'][1]); $r3_lokaal_id = select_lokaal($namens, 3, $best['order'][2]); echo('$r1_lokaal_id='.$r1_lokaal_id."\n"); echo('$r2_lokaal_id='.$r2_lokaal_id."\n"); echo('$r3_lokaal_id='.$r3_lokaal_id."\n"); mdb2_exec($db, <<inschrijf secret = $inschrijf_secret, inschrijving_id = $inschrijving_id, authcode = $authcode"); $info = mdb2_single_row($db, MDB2_FETCHMODE_ASSOC, <<

Geachte heer/mevrouw,

U hebt zich zojuist via onze website ingeschreven voor de voorlichtingsavond op het Oostvaarders College op $deadline_text.

De voorlichting voor ouders vindt plaats in drie ronden.

  • Ronde 1 (19:25 - 19:50): {$info['ronde_1']}
  • Ronde 2 (20:00 - 20:25): {$info['ronde_2']}
  • Ronde 3 (20:35 - 21:00): {$info['ronde_3']}

Uw inschrijving is geldig voor $personen.

Tot ziens op $deadline_text. De inloop is vanaf $inloop_text uur, we starten om $start_text uur. Deze mail, uitgeprint of op uw smartphone, is uw toegangsbewijs.

Met vriendelijke groeten,

De organisatie voorlichtingsavond M. Leyten, G. Kiesewetter en S. Nietvelt

-- 
srv-ovc-linux: (id={$info['inschrijving_id']},authcode=$authcode)
EOQ , <<