예제 #1
0
    $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());
    }
예제 #2
0
    $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;
예제 #3
0
 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);
예제 #4
0
        }
        /*
         * 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);
예제 #5
0
     *
     *
     * 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);
예제 #6
0
        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) {
예제 #7
0
 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&agrave;')));
     $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'));
     }
 }