public function ritira(string $motivo) { global $sessione; // DA CHIEDERE: // se la partecipazione di un istruttore è ritirata // prima che partano i giorni "buffer", c'è ancora tempo per cercare altri istruttori // diversamente il corso viene annullato d'ufficio $comitato = Comitato::daOid($c->organizzatore); if (!$sessione->utente()->presiede($comitato)) { // N.B.: da estendere anche al delegato del presidente return false; } if (!$this->modificabile() && $this->stato == PARTECIPAZIONE_ACCETTATA && $this->ruolo == CORSO_RUOLO_DOCENTE) { // cancellazione del corso e collegati, // compreso il record db di questo oggetto PartecipazioneCorso // notifiche a chi di dovere return true; } // mettere corso in stato pending if (!empty($motivo)) { $this->note = $this->note . ' Partecipazione ritirata dal presidente/delegato: "' . $motivo . '".'; } $this->stato = PARTECIPAZIONE_RITIRATA; return true; }