$id_course_instance = $eguidance_dataAr['id_istanza_corso']; header('Location: user_service_detail.php?id_user='******'&id_course_instance=' . $id_course_instance . $href_suffix); exit; } else { /* * Obtain event_token from $_GET. */ if (isset($_GET['event_token'])) { $event_token = DataValidator::validate_event_token($_GET['event_token']); if ($event_token === FALSE) { $errObj = new ADA_Error(NULL, translateFN("Dati in input per il modulo eguidance_tutor_form non corretti"), NULL, NULL, NULL, $userObj->getHomePage()); } } else { $errObj = new ADA_Error(NULL, translateFN("Dati in input per il modulo eguidance_tutor_form non corretti"), NULL, NULL, NULL, $userObj->getHomePage()); } $id_course_instance = ADAEventProposal::extractCourseInstanceIdFromThisToken($event_token); /* * Get service info */ $id_course = $dh->get_course_id_for_course_instance($id_course_instance); if (AMA_DataHandler::isError($id_course)) { $errObj = new ADA_Error(NULL, translateFN("Errore nell'ottenimento dell'id del servzio"), NULL, NULL, NULL, $userObj->getHomePage()); } $service_infoAr = $common_dh->get_service_info_from_course($id_course); if (AMA_Common_DataHandler::isError($service_infoAr)) { $errObj = new ADA_Error(NULL, translateFN("Errore nell'ottenimento delle informazioni sul servizio"), NULL, NULL, NULL, $userObj->getHomePage()); } $users_infoAr = $dh->course_instance_students_presubscribe_get_list($id_course_instance); if (AMA_DataHandler::isError($users_infoAr)) { $errObj = new ADA_Error($users_infoAr, translateFN("Errore nell'ottenimento dei dati dello studente"), NULL, NULL, NULL, $userObj->getHomePage()); }
$errObj = new ADA_Error($msg_ha, translateFN('Errore durante la lettura di un evento'), NULL, NULL, NULL, 'comunica/list_events.php?status=' . urlencode(translateFN('Errore durante la lettura'))); } /** * Conversione Time Zone */ $tester_TimeZone = MultiPort::getTesterTimeZone($tester); $offset = get_timezone_offset($tester_TimeZone, SERVER_TIMEZONE); $date_time = $msg_ha['data_ora']; $date_time_zone = $date_time + $offset; $zone = translateFN("Time zone:") . " " . $tester_TimeZone; $Data_messaggio = AMA_DataHandler::ts_to_date($date_time_zone, "%d/%m/%Y - %H:%M:%S") . " " . $zone; //$Data_messaggio = AMA_DataHandler::ts_to_date($msg_ha['data_ora'], "%d/%m/%Y - %H:%M:%S"); /* * Check if the subject has an internal identifier and remove it */ $oggetto = ADAEventProposal::removeEventToken($msg_ha['titolo']); $mittente = $msg_ha['mittente']; $destinatario = str_replace(",", ", ", $msg_ha['destinatari']); // $destinatario = $msg_ha['destinatari']; $dest_encode = urlencode($mittente); if (isset($message_text) && strlen($message_text) > 0) { $testo = urlencode(trim($message_text)); } else { $message_text = ''; $testo = ''; } $oggetto_url = urlencode(trim($oggetto)); // Registrazione variabili per replay $destinatari_replay = $mittente; // $_SESSION['destinatari_replay'] = $destinatari_replay;
if (isset($spedisci)) { $mh = MessageHandler::instance(MultiPort::getDSN($sess_selected_tester)); // Initialize errors array $errors = array(); // Trim all submitted data $form = $_POST; while (list($key, $value) = each($form)) { ${$key} = $value; } if (!isset($destinatari) || DataValidator::validate_not_empty_string($destinatari) === FALSE) { $errors['destinatari'] = ADA_EVENT_PROPOSAL_ERROR_RECIPIENT; } if (!isset($titolo) || DataValidator::validate_not_empty_string($titolo) === FALSE) { $errors['titolo'] = ADA_EVENT_PROPOSAL_ERROR_SUBJECT; } if (($value = ADAEventProposal::canProposeThisDateTime($userObj, $data_evento, $ora_evento, $sess_selected_tester)) !== TRUE) { $errors['$data_evento'] = $value; } // Check submitted subject /* if (!is_clean_text($titolo, 0, 128)){ $errors["titolo"] = translateFN("L'oggetto dell'appuntamento contiene caratteri non validi"); $titolo = clean_text($titolo, 0, 128); } else { $ora_evento_a = tm2tsFN($ora_evento); $ora_evento_b = ts2tmFN($ora_evento_a); $data_ora = sumDateTimeFN(array($data_evento,$ora_evento)); $sort_field = "data_ora desc"; $msgs_ha = $mh->get_messages($sess_id_user, ADA_MSG_AGENDA, array("id_mittente", "data_ora", "titolo", "priorita", "read_timestamp"),$sort_field);
} /* * 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 */ $tester = $sess_selected_tester; } if (($value = ADAEventProposal::canProposeThisDateTime($userObj, $datetimesAr[0]['date'], $datetimesAr[0]['time'], $tester)) !== TRUE) { $errors['date1'] = $value; } if (($value = ADAEventProposal::canProposeThisDateTime($userObj, $datetimesAr[1]['date'], $datetimesAr[1]['time'], $tester)) !== TRUE) { $errors['date2'] = $value; } if (($value = ADAEventProposal::canProposeThisDateTime($userObj, $datetimesAr[2]['date'], $datetimesAr[2]['time'], $tester)) !== TRUE) { $errors['date3'] = $value; } $form = CommunicationModuleHtmlLib::getProposedEventForm($data, $errors, $tester); } } $titolo = translateFN('Proposta di appuntamento'); $content_dataAr = array('user_name' => $user_name, 'user_type' => $user_type, 'titolo' => $titolo, 'course_title' => '<a href="../browsing/main_index.php">' . $course_title . '</a>', 'status' => $err_msg, 'data' => $form->getHtml(), 'label' => $titolo); ARE::render($layout_dataAr, $content_dataAr);
* * * Potremmo avere una classe * $agenda = new ADAAgenda($userObj); * $appointments = $agenda->futureAppointmentsWithUser($tutoredUserObj->getId()); * */ $fields_list_Ar = array('data_ora', 'titolo'); $clause = ' data_ora > ' . time() . ' AND id_mittente=' . $tutoredUserObj->getId() . ' AND (flags & ' . ADA_EVENT_CONFIRMED . ')'; $sort_field = ' data_ora desc'; $mh = MessageHandler::instance(MultiPort::getDSN($sess_selected_tester)); $msgs_ha = $mh->find_messages($userObj->getId(), ADA_MSG_AGENDA, $fields_list_Ar, $clause, $sort_field); if (AMA_DataHandler::isError($msgs_ha) || count($msgs_ha) == 0) { $appointments_data = new CText(''); } else { $thead_data = array(translateFN('Date'), translateFN('Appointment type')); $tbody_data = array(); foreach ($msgs_ha as $appointment) { $tbody_data[] = array(ts2dFN($appointment[0]), ADAEventProposal::removeEventToken($appointment[1])); } $appointments_data = BaseHtmlLib::tableElement('', $thead_data, $tbody_data); } $data = $appointments_data->getHtml() . $user_data->getHtml() . $service_data->getHtml() . $eguidance_data->getHtml(); } $label = translateFN('user service details'); $help = translateFN("Details"); $home_link = CDOMElement::create('a', 'href:tutor.php'); $home_link->addChild(new CText(translateFN("Practitioner's home"))); $module = $home_link->getHtml() . ' > ' . $label; $content_dataAr = array('user_name' => $user_name, 'user_type' => $user_type, 'status' => $status, 'path' => $module, 'label' => $label, 'dati' => $data); ARE::render($layout_dataAr, $content_dataAr);
if (isset($previous_proposal_msg_id)) { MultiPort::removeUserAppointments($userObj, array($previous_proposal_msg_id)); } /* * Inviamo una mail all'utente in cui lo informiamo del fatto che il * practitioner ha inviato delle nuove proposte */ $admtypeAr = array(AMA_TYPE_ADMIN); $admList = $common_dh->get_users_by_type($admtypeAr); if (!AMA_DataHandler::isError($admList)) { $adm_uname = $admList[0]['username']; } else { $adm_uname = ""; // ??? FIXME: serve un superadmin nel file di config? } $clean_subject = ADAEventProposal::removeEventToken($subject); $message_content = sprintf(translateFN('Dear user, the practitioner %s has sent you new proposal dates for the appointment: %s.'), $userObj->getFullName(), $clean_subject); $message_ha = array('tipo' => ADA_MSG_MAIL, 'mittente' => $adm_uname, 'destinatari' => array($addresseeObj->username), 'data_ora' => 'now', 'titolo' => 'ADA: ' . translateFN('new event proposal dates'), 'testo' => $message_content); $res = $mh->send_message($message_ha); if (AMA_DataHandler::isError($res)) { $errObj = new ADA_Error($res, translateFN('Impossibile spedire il messaggio'), NULL, NULL, NULL, $error_page . '?err_msg=' . urlencode(translateFN('Impossibile spedire il messaggio'))); } $text = translateFN("La proposta di appuntamento è stata inviata con successo all'utente ") . $addresseeObj->getFullName() . "."; $form = CommunicationModuleHtmlLib::getOperationWasSuccessfullView($text); //header('Location: '.HTTP_ROOT_DIR.'/comunica/list_events.php'); //exit(); } } else { if (isset($msg_id)) { $data = MultiPort::getUserAppointment($userObj, $msg_id); if ($data['flags'] & ADA_EVENT_PROPOSAL_OK) {
public static function hasThisUserAVideochatAppointment(ADALoggableUser $userObj) { $id_course_instance = DataValidator::is_uinteger($_SESSION['sess_id_course_instance']); if ($id_course_instance === FALSE) { return FALSE; } $fields_list_Ar = array('id_mittente', 'data_ora', 'titolo', 'priorita', 'read_timestamp'); $clause = '(flags & ' . ADA_VIDEOCHAT_EVENT . ') AND (flags & ' . ADA_EVENT_CONFIRMED . ')'; $sort_field = 'data_ora desc'; $mh = MessageHandler::instance(self::getDSN($_SESSION['sess_selected_tester'])); $msgs_ha = $mh->find_messages($userObj->getId(), ADA_MSG_AGENDA, $fields_list_Ar, $clause, $sort_field); if (!AMA_DataHandler::isError($msgs_ha)) { $today_time = today_timeFN(); $today_date = today_dateFN(); $today_time_date = date(ADA_DATE_FORMAT); foreach ($msgs_ha as $one_date) { $time_2_add = 30 * 60; // 30 minuti di arrotondamento. $unix_date_app_rounded = $one_date[1] + $time_2_add; $udate_now = time(); if ($udate_now >= $one_date[1] and $udate_now <= $unix_date_app_rounded) { $event_token = ADAEventProposal::extractEventToken($one_date[2]); return $event_token; } } } return FALSE; }
private static function display_messages_as_form($data_Ar = array(), $message_type = ADA_MSG_SIMPLE, $testers_dataAr = array()) { $common_dh = $GLOBALS['common_dh']; $javascript_ok = check_javascriptFN($_SERVER['HTTP_USER_AGENT']); $appointments_Ar = array(); if ($message_type == ADA_MSG_SIMPLE) { $list_module = 'list_messages.php'; $read_module = 'read_message.php'; $del_img = CDOMElement::create('img', 'src:img/delete.png, name:del_icon'); $del_img->setAttribute('alt', translateFN('Rimuovi il messaggio')); $del_text = translateFN('Cancella'); } else { $list_module = 'list_events.php'; $read_module = 'read_event.php'; $del_text = ''; } $order_by_author_link = CDOMElement::create('a', "href:{$list_module}?sort_field=id_mittente"); $order_by_author_link->addChild(new CText(translateFN('Autore'))); $order_by_time_link = CDOMElement::create('a', "href:{$list_module}?sort_field=data_ora"); $order_by_time_link->addChild(new CText(translateFN('Data ed ora'))); $order_by_subject_link = CDOMElement::create('a', "href:{$list_module}?sort_field=titolo"); $order_by_subject_link->addChild(new CText(translateFN('Oggetto'))); $order_by_priority_link = CDOMElement::create('a', "href:{$list_module}?sort_field=priorita"); $order_by_priority_link->addChild(new CText(translateFN('Priorità'))); $thead_data = array($order_by_author_link, $order_by_time_link, $order_by_subject_link, $order_by_priority_link, $del_text, translateFN('Letto'), ''); foreach ($data_Ar as $tester => $appointment_data_Ar) { //$udh = UserDataHandler::instance(self::getDSN($tester)); //$tester_info_Ar = $common_dh->get_tester_info_from_pointer($tester); $tester_id = $testers_dataAr[$tester]; // if (AMA_Common_DataHandler::isError($tester_info_Ar)) { // /* // * Return a ADA_Error with delayed error handling. // */ // return new ADA_Error($tester_info_Ar,translateFN('Errore in ottenimento informazioni tester'), // NULL,NULL,NULL,NULL,TRUE); // } $tester_TimeZone = MultiPort::getTesterTimeZone($tester); $offset = get_timezone_offset($tester_TimeZone, SERVER_TIMEZONE); foreach ($appointment_data_Ar as $appointment_id => $appointment_Ar) { // trasform message content into variable names $sender_id = $appointment_Ar[0]; $date_time = $appointment_Ar[1]; //$subject = $appointment_Ar[2]; /* * Check if the subject has an internal identifier and remove it. */ //$subject = preg_replace('/[0-9]+#/','',$appointment_Ar[2],1); $subject = ADAEventProposal::removeEventToken($appointment_Ar[2]); $priority = $appointment_Ar[3]; $read_timestamp = $appointment_Ar[4]; $date_time_zone = $date_time + $offset; $zone = translateFN("Time zone:") . " " . $tester_TimeZone; $data_msg = AMA_DataHandler::ts_to_date($date_time_zone, "%d/%m/%Y - %H:%M:%S") . " " . $zone; // $data_msg = AMA_DataHandler::ts_to_date($date_time, "%d/%m/%Y - %H:%M:%S"); // transform sender's id into sender's name // $res_ar = $udh->find_users_list(array("username"), "id_utente=$sender_id"); // if (AMA_DataHandler::isError($res_ar)) { // $sender_username = ''; // } // else { // $sender_username = $res_ar[0][1]; // } $sender_username = $appointment_Ar[6]; //$msg_id = $tester_info_Ar[0].'_'.$appointment_id; $msg_id = $tester_id . '_' . $appointment_id; $url = HTTP_ROOT_DIR . '/comunica/' . $read_module . '?msg_id=' . $msg_id; $subject_link = CDOMElement::create('a', "href:{$url}"); $subject_link->addChild(new CText($subject)); /* * If this is a list of simple messages, then deleting is allowed. * Otherwise it is disabled. */ if ($message_type == ADA_MSG_SIMPLE) { $delete = CDOMElement::create('checkbox', "name:form[del][{$msg_id}],value:{$msg_id}"); $action_link = CDOMElement::create('a', "href:{$list_module}?del_msg_id={$msg_id}"); $action_link->addChild($del_img); } else { $delete = ''; $delete_link = ''; // PROVA, POI RIMETTERE A POSTO $userObj = $_SESSION['sess_userObj']; /* if($userObj instanceof ADAPractitioner) { $event_token = ADAEventProposal::extractEventToken($appointment_Ar[2]); $href = HTTP_ROOT_DIR . '/tutor/eguidance_tutor_form.php?event_token=' . $event_token; $action_link = CDOMElement::create('a', "href:$href"); $action_link->addChild(new CText(translateFN('View eguidance session data'))); } * */ } $read = CDOMElement::create('checkbox', "name:form[read][{$msg_id}],value:{$msg_id}"); if ($read_timestamp != 0) { $read->setAttribute('checked', 'checked'); } if (!isset($action_link)) { $action_link = null; } $appointments_Ar[] = array($sender_username, $data_msg, $subject_link, $priority, $delete, $read, $action_link); } } if (count($appointments_Ar) > 0) { $table = BaseHtmlLib::tableElement('', $thead_data, $appointments_Ar); if (!isset($module)) { $module = null; } $form = CDOMElement::create('form', "name:form, method:post, action:{$module}"); $form->addChild($table); $div = CDOMElement::create('div', 'id:buttons'); $submit = CDOMElement::create('submit', 'name:btn_commit value:' . translateFN('Salva')); $reset = CDOMElement::create('reset', 'name:btn_reset value:' . translateFN('Ripristina')); $div->addChild($submit); $div->addChild($reset); $form->addChild($div); return $form; } else { if ($message_type == ADA_MSG_SIMPLE) { return new CText(translateFN('Non ci sono nuovi messaggi')); } return new CText(translateFN('Non ci sono nuovi appuntamenti')); } }