*/ MultiPort::removeUserAppointments($userObj, array($msg_id)); $form = CommunicationModuleHtmlLib::getOperationWasSuccessfullView($text); } elseif (isset($_GET['err_msg'])) { $error_message = translateFN('An error occurred while processing your request, please try again later.') . '<br />' . translateFN('If the problem persists, please contact the administrator.'); $form = CommunicationModuleHtmlLib::getOperationWasSuccessfullView($error_message); } else { if (isset($msg_id)) { $data = MultiPort::getUserAppointment($userObj, $msg_id); $_SESSION['practitioner_proposal'] = $data; $_SESSION['event_msg_id'] = $msg_id; /* * Check if the user has already an appointment in one of the proposed dates * or if an appointment proposal is in the past. */ $datetimesAr = ADAEventProposal::extractDateTimesFromEventProposalText($data['testo']); if ($datetimesAr === FALSE) { $errObj = new ADA_Error(NULL, translateFN("Errore nell'ottenimento delle date per l'appuntamento")); } /* * Obtain a messagehandler instance for the correct tester */ if (MultiPort::isUserBrowsingThePublicTester()) { /* * In base a event_msg_id, ottenere connessione al tester appropriato */ $data_Ar = MultiPort::geTesterAndMessageId($msg_id); $tester = $data_Ar['tester']; } else { /* * We are inside a tester
public static function getProposedEventForm($data = array(), $errors = array(), $tester = NULL) { $error_messages = array(ADA_EVENT_PROPOSAL_ERROR_DATE_FORMAT => translateFN("Attenzione: il formato della data non è corretto."), ADA_EVENT_PROPOSAL_ERROR_DATE_IN_THE_PAST => translateFN("Attenzione: la data e l'ora proposte per l'appuntamento sono antecedenti a quelle attuali."), ADA_EVENT_PROPOSAL_ERROR_DATE_IN_USE => translateFN("Attenzione: è già presente un appuntamento in questa data e ora")); // $regexp = '/<date>([0-9]{2}\/[0-9]{2}\/[0-9]{4})<\/date>(?:\s)*<time>([0-9]{2}:[0-9]{2})<\/time>/'; // preg_match_all($regexp, $data['testo'], $matches); // $dates = $matches[1]; // $times = $matches[2]; $datetimesAr = ADAEventProposal::extractDateTimesFromEventProposalText($data['testo']); // $regexp = '/<notes>(.*)<\/notes>/'; // preg_match($regexp, $data['testo'], $matches); // $practitioner_notes = $matches[1]; $practitioner_notes = ADAEventProposal::extractNotesFromEventProposalText($data['testo']); // $regexp = '/<id_course_instance>(.*)<\/id_course_instance>/'; // preg_match($regexp, $data['testo'], $matches); // $course_instance = $matches[1]; $course_instance = ADAEventProposal::extractIdCourseInstanceFromEventProposalText($data['testo']); $form = CDOMElement::create('form', 'id:event_proposal_form, name:event_proposal_form, action:event_proposal.php, method:post'); $hidden = CDOMElement::create('hidden', 'id:id_course_instance, name:id_course_instance'); $hidden->setAttribute('value', $course_instance); $form->addChild($hidden); $subject = CDOMElement::create('div', 'class:proposal_title'); $event_title = translateFN("Oggetto: ") . ADAEventProposal::removeEventToken($data['titolo']); $subject->addChild(new CText($event_title)); $offset = 0; if ($tester === NULL) { $tester_TimeZone = SERVER_TIMEZONE; } else { $tester_TimeZone = MultiPort::getTesterTimeZone($tester); $offset = get_timezone_offset($tester_TimeZone, SERVER_TIMEZONE); } $now = time() + $offset; $zone = translateFN("Time zone:") . " " . $tester_TimeZone . " " . translateFN("actual time: ") . ts2tmFN($now); $timezone = CDOMElement::create('div', 'class:proposal_zone'); $timezone->addChild(new CText($zone)); $type = CDOMElement::create('div', 'class:proposal_type'); $type->addChild(new CText(translateFN('Tipo di appuntamento: '))); if ($data['flags'] & ADA_CHAT_EVENT) { $type->addChild(new CText('Appuntamento in chat')); } else { if ($data['flags'] & ADA_VIDEOCHAT_EVENT) { $type->addChild(new CText('Appuntamento in videochat')); } else { if ($data['flags'] & ADA_PHONE_EVENT) { $type->addChild(new CText('Appuntamento telefonico')); } else { if ($data['flags'] & ADA_IN_PLACE_EVENT) { $type->addChild(new CText('Appuntamento in presenza')); } } } } $descriptive_text = CDOMElement::create('div'); $descriptive_text->addChild(new CText(translateFN("Seleziona una delle possibilità qui di seguito:"))); $needs_to_be_checked = TRUE; $proposal1 = CDOMElement::create('div', 'class:radio_button'); if (is_array($errors) && isset($errors['date1'])) { $date_error = CDOMElement::create('div', 'class:error'); $date_error->addChild(new CText($error_messages[$errors['date1']])); $proposal1->addChild($date_error); $proposal1->addChild(new CText($datetimesAr[0]['date'] . ' ' . $datetimesAr[0]['time'])); } else { $radio1 = CDOMElement::create('radio', 'name:date,checked:checked,value:' . $datetimesAr[0]['date'] . '_' . $datetimesAr[0]['time']); $proposal1->addChild($radio1); $proposal1->addChild(new CText($datetimesAr[0]['date'] . ' ' . $datetimesAr[0]['time'])); $needs_to_be_checked = FALSE; } $proposal2 = CDOMElement::create('div', 'class:radio_button'); if (is_array($errors) && isset($errors['date2'])) { $date_error = CDOMElement::create('div', 'class:error'); $date_error->addChild(new CText($error_messages[$errors['date2']])); $proposal2->addChild($date_error); $proposal2->addChild(new CText($datetimesAr[1]['date'] . ' ' . $datetimesAr[1]['time'])); } else { $radio2 = CDOMElement::create('radio', 'name: date, value:' . $datetimesAr[1]['date'] . '_' . $datetimesAr[1]['time']); if ($needs_to_be_checked) { $radio2->setAttribute('checked', 'checked'); $needs_to_be_checked = FALSE; } $proposal2->addChild($radio2); $proposal2->addChild(new CText($datetimesAr[1]['date'] . ' ' . $datetimesAr[1]['time'])); } $proposal3 = CDOMElement::create('div', 'class:radio_button'); if (is_array($errors) && isset($errors['date3'])) { $date_error = CDOMElement::create('div', 'class:error'); $date_error->addChild(new CText($error_messages[$errors['date3']])); $proposal3->addChild($date_error); $proposal3->addChild(new CText($datetimesAr[2]['date'] . ' ' . $datetimesAr[2]['time'])); } else { $radio3 = CDOMElement::create('radio', 'name:date, value:' . $datetimesAr[2]['date'] . '_' . $datetimesAr[2]['time']); if ($needs_to_be_checked) { $radio3->setAttribute('checked', 'checked'); $needs_to_be_checked = FALSE; } $proposal3->addChild($radio3); $proposal3->addChild(new CText($datetimesAr[2]['date'] . ' ' . $datetimesAr[2]['time'])); } $proposal4 = CDOMElement::create('div', 'id:refuse_proposal, class:radio_button'); $radio4 = CDOMElement::create('radio', 'name:date, value:0'); if ($needs_to_be_checked) { $radio4->setAttribute('checked', 'checked'); $needs_to_be_checked = FALSE; } $proposal4->addChild($radio4); $proposal4->addChild(new CText(translateFN('Nessuna tra le date proposte'))); $notes = CDOMElement::create('div', 'id:practitioner_notes'); if (strlen(trim($practitioner_notes)) > 0) { $notes->addChild(new CText(translateFN("Note del practitioner:") . '<br />')); $notes->addChild(new CText($practitioner_notes)); } $buttons = CDOMElement::create('div', 'id:buttons'); $submit = CDOMElement::create('submit', 'name:submit, value:' . translateFN('Invia')); $reset = CDOMElement::create('reset'); $buttons->addChild($submit); $buttons->addChild($reset); $form->addChild($subject); $form->addChild($timezone); $form->addChild($type); $form->addChild($descriptive_text); $form->addChild($proposal1); $form->addChild($proposal2); $form->addChild($proposal3); $form->addChild($proposal4); $form->addChild($notes); $form->addChild($buttons); return $form; }