/** * get all services to which a given user has subscribed * @param $ADAUser $userObj * @param $field_list_ar array * @param $clause string * @return $sub_course_dataHa array */ public static function find_sub_services_data(ADAGenericUser $userObj, $field_ar, $clause, $orderBy = 'service') { $common_dh = $GLOBALS['common_dh']; $sub_course_dataHa = array(); $user_id = $userObj->getId(); /* * Obtain tester names */ $tester_names = array(); /* foreach ($userObj->getTesters() as $tester) { $tester_dataHa = $common_dh->get_tester_info_from_pointer($tester); $tester_names[$tester] = $tester_dataHa[1]; } */ // foreach($userObj->getTesters() as $tester) { // only providers in which user is subscribed /* $testers = $common_dh->get_all_testers(); // all providers foreach($testers as $testerItem){ $tester = $testerItem['puntatore']; */ $testerPointersAr = $common_dh->get_testers_for_user($user_id); // providers assigned to the user foreach ($testerPointersAr as $tester) { // ADALogger::log("MultiPort::find_sub_services_data for tester: $tester"); $tester_dataHa = $common_dh->get_tester_info_from_pointer($tester); $tester_city = $tester_dataHa[5]; $tester_country = $tester_dataHa[6]; $tester_names[$tester] = $tester_dataHa[1]; $tester_dsn = self::getDSN($tester); if ($tester_dsn != null) { //$tester_dataHa = $common_dh->get_tester_info_from_pointer($tester); //$tester_name = 'NOME TESTER';//$tester_dataHa[1]; $tester_dh = AMA_DataHandler::instance($tester_dsn); if (!AMA_DataHandler::isError($tester_dh)) { // versioneche cicla solo sulle istanze cui è pre/iscritto $all_instance = $tester_dh->course_instance_student_presubscribe_get_status($user_id); // versioneche cicla su tutte le istanze /* FIXME: bisogna fare una JOIN su iscrizione e istanze_corso ! $all_instance = $tester_dh->course_instance_find_list($field_ar,$clause); var_dump($all_instance); */ } else { //var_dump($tester_dh); $all_instance = ""; } if (is_array($all_instance)) { foreach ($all_instance as $one_instance) { // var_dump($one_instance); $history_link = " - "; $toc = " - "; $info = "- "; $tutor = translateFN("Not assigned"); $tutor_link = $tutor; $now = AMA_DataHandler::date_to_ts("now"); $id_course_instance = $one_instance['istanza_corso']; $status = $one_instance['status']; $one_course_instance = $tester_dh->course_instance_get($id_course_instance, true); // GESTIRE ERRORE $id_course = $one_course_instance['id_corso']; $data_inizio = $one_course_instance['data_inizio']; $durata = $one_course_instance['durata']; // NOTE: qui sarebbe utile invece il conto dei giorni restanti... $data_inizio_previsto = $one_course_instance['data_inizio_previsto']; $data_fine = $one_course_instance['data_fine']; $service_completed = $data_fine < $now; $sub_courses = $tester_dh->get_subscription($user_id, $id_course_instance); // if ($sub_courses['tipo'] == 2) { introducing status 3 (removed) and 4 (visitors) if (!AMA_dataHandler::isError($sub_courses)) { // if (($sub_courses['tipo'] == ADA_STATUS_SUBSCRIBED) OR ($sub_courses['tipo'] == 4)) { /* hack: subscription state is not updated, so we use time from course instance data to show users' status*/ if ($service_completed && $sub_courses['tipo'] == ADA_SERVICE_SUBSCRIPTION_STATUS_ACCEPTED) { $tipo = ADA_SERVICE_SUBSCRIPTION_STATUS_COMPLETED; } else { $tipo = $sub_courses['tipo']; } // filtering on completed services if $clause paratemer is passed if (!$clause or $tipo != ADA_SERVICE_SUBSCRIPTION_STATUS_COMPLETED) { //FIXME: we have to parse the clause !!! $tutor_Id = $tester_dh->course_instance_tutor_get($id_course_instance); if ($tutor_Id) { $tutorInfoHa = $tester_dh->get_tutor($tutor_Id); $tutor_link = '<a href="' . HTTP_ROOT_DIR . '/browsing/practitionerProfile.php?id=' . $tutor_Id . '">' . $tutorInfoHa['nome'] . ' ' . $tutorInfoHa['cognome'] . '</a>'; } $course = $tester_dh->get_course($id_course); if (is_array($course)) { $id_start = $id_course . "_" . $course['id_nodo_iniziale']; $home_label = translateFN("home"); $titolo = translateFN($course['titolo']); $info = "<a href=" . $http_root_dir . "../info.php?id_course={$id_course}&norequest=1>{$titolo}</a>"; $start_date = ts2dFN($data_inizio_previsto); } // mod steve 17/12/09 suspended while wating for history module // $history_link = "<a href='".HTTP_ROOT_DIR."/browsing/service_info.php?norequest=1&id_course=$id_course&id_course_instance=$id_course_instance'>$start_date</a>"; $nome = $course['nome']; switch ($tipo) { case ADA_SERVICE_SUBSCRIPTION_STATUS_ACCEPTED: //ADA_STATUS_SUBSCRIBED: // mod steve 17/12/09 suspended while wating for history module $history_link = "<a href='" . HTTP_ROOT_DIR . "/browsing/service_info.php?norequest=1&id_course={$id_course}&id_course_instance={$id_course_instance}'>{$start_date}</a> - " . ts2dFN($data_fine); // $history_link = $start_date; $toc = "<a href='view.php?{$session_id_par}" . "id_course={$id_course}&id_node={$id_start}&id_course_instance={$id_course_instance}'>" . translateFN('Entra') . "</a>"; break; case ADA_SERVICE_SUBSCRIPTION_STATUS_REQUESTED: //ADA_STATUS_PRESUBSCRIBED: // $toc = "<a href='view.php?$session_id_par"."id_course=$id_course&id_node=$id_start&id_course_instance=$id_course_instance'>".translateFN('Entra'). "</a>"; $history_link = $start_date . " - " . ts2dFN($data_fine); break; case ADA_SERVICE_SUBSCRIPTION_STATUS_COMPLETED: $history_link = $start_date . " - " . ts2dFN($data_fine); break; case ADA_SERVICE_SUBSCRIPTION_STATUS_SUSPENDED: $history_link = $start_date . " - "; break; case ADA_SERVICE_SUBSCRIPTION_STATUS_UNDEFINED: default: // es ADA_STATUS_VISITOR = 4 } //case // subscription state $subscription_state = subscriptionType2stringFN($tipo); if ($orderBy == "country") { $row = array(translateFN('Country') => $tester_country . "/" . $tester_city, translateFN('Provider') => $tester_names[$tester], translateFN('Servizio') => $info, translateFN('Dettagli') => $toc, translateFN('Period') => $history_link, translateFN('Durata') => $durata, translateFN('E-practitioner') => $tutor_link, translateFN('Stato') => $subscription_state); } else { // default $row = array(translateFN('Servizio') => $info, translateFN('Country') => $tester_country . "/" . $tester_city, translateFN('Provider') => $tester_names[$tester], translateFN('Dettagli') => $toc, translateFN('Period') => $history_link, translateFN('Durata') => $durata, translateFN('E-practitioner') => $tutor_link, translateFN('Stato') => $subscription_state); } // mydebug(__LINE__,__FILE__,$row); array_push($sub_course_dataHa, $row); } else { //$sub_course_dataHa = ""; // translateFN("Nessuna iscrizione"); } } // if not completed } // foreach instance } } } // foreach er return $sub_course_dataHa; }