'index.php',"name" => get_lang('PlatformAdmin')); $interbreadcrumb[] = array('url' => 'session_list.php','name' => get_lang('SessionList')); set_time_limit(0); if (isset($_POST['formSent'])) { $formSent = $_POST['formSent']; $file_type = ($_POST['file_type'] == 'csv')?'csv':'xml'; $session_id = $_POST['session_id']; if (empty($session_id)) { $sql = "SELECT s.id, name, id_coach, username, access_start_date, access_end_date, visibility, session_category_id FROM $tbl_session s INNER JOIN $tbl_user ON $tbl_user.user_id = s.id_coach ORDER BY id"; if (api_is_multiple_url_enabled()) { $tbl_session_rel_access_url= Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION); $access_url_id = api_get_current_access_url_id(); if ($access_url_id != -1){ $sql = "SELECT s.id, name,id_coach,username,access_start_date,access_end_date,visibility,session_category_id FROM $tbl_session s INNER JOIN $tbl_session_rel_access_url as session_rel_url ON (s.id= session_rel_url.session_id) INNER JOIN $tbl_user u ON (u.user_id = s.id_coach) WHERE access_url_id = $access_url_id ORDER BY id"; } } $result = Database::query($sql); } else { $sql = "SELECT s.id,name,username,access_start_date,access_end_date,visibility,session_category_id FROM $tbl_session s INNER JOIN $tbl_user ON $tbl_user.user_id = s.id_coach WHERE id='$session_id'"; $result = Database::query($sql); } if (Database::num_rows($result)) { if (!file_exists($archivePath)) { mkdir($archivePath, api_get_permissions_for_new_directories(), true); } if (!file_exists($archivePath.'index.html')) { $fp = fopen($archivePath.'index.html','w'); fputs($fp,''); fclose($fp); } $archiveFile='export_sessions_'.$session_id.'_'.date('Y-m-d_H-i-s').'.'.$file_type; while( file_exists($archivePath.$archiveFile)) { $archiveFile='export_users_'.$session_id.'_'.date('Y-m-d_H-i-s').'_'.uniqid('').'.'.$file_type; } $fp = fopen($archivePath.$archiveFile, 'w'); if ($file_type == 'csv') { $cvs = true; fputs($fp,"SessionName;Coach;DateStart;DateEnd;Visibility;SessionCategory;Users;Courses;\n"); } else { $cvs = false; fputs($fp, "\n\n"); } while($row=Database::fetch_array($result)) { $add = ''; $row['name'] = str_replace(';',',',$row['name']); $row['username'] = str_replace(';',',',$row['username']); $row['access_start_date'] = str_replace(';',',',$row['access_start_date']); $row['access_end_date'] = str_replace(';',',',$row['access_end_date']); $row['visibility'] = str_replace(';',',',$row['visibility']); $row['session_category'] = str_replace(';',',',$row['session_category_id']); if ($cvs) { $add.= $row['name'].';'.$row['username'].';'.$row['access_start_date'].';'.$row['access_end_date'].';'.$row['visibility'].';'.$row['session_category'].';'; } else { $add = "\t\n" ."\t\t$row[name]\n" ."\t\t$row[username]\n" ."\t\t$row[access_start_date]\n" ."\t\t$row[access_end_date]\n" ."\t\t$row[visibility]\n" ."\t\t$row[session_category]\n"; } //users $sql = "SELECT DISTINCT $tbl_user.username FROM $tbl_user INNER JOIN $tbl_session_user ON $tbl_user.user_id = $tbl_session_user.user_id AND $tbl_session_user.relation_type<>".SESSION_RELATION_TYPE_RRHH." AND $tbl_session_user.session_id = '".$row['id']."'"; $rsUsers = Database::query($sql); $users = ''; while ($rowUsers = Database::fetch_array($rsUsers)){ if($cvs){ $users .= str_replace(';',',',$rowUsers['username']).'|'; } else { $users .= "\t\t$rowUsers[username]\n"; } } if (!empty($users) && $cvs) $users = api_substr($users , 0, api_strlen($users)-1); if($cvs) $users .= ';'; $add .= $users; //courses $sql = "SELECT DISTINCT c.code, sc.id, c_id FROM $tbl_course c INNER JOIN $tbl_session_course_user sc ON c.id = sc.c_id AND sc.session_id = '".$row['id']."'"; $rsCourses = Database::query($sql); $courses = ''; while ($rowCourses = Database::fetch_array($rsCourses)) { // get coachs from a course $sql = "SELECT u.username FROM $tbl_session_course_user scu INNER JOIN $tbl_user u ON u.user_id = scu.user_id WHERE scu.c_id = '{$rowCourses['c_id']}' AND scu.session_id = '".$row['id']."' AND scu.status = 2 "; $rs_coachs = Database::query($sql); $coachs = array(); while ($row_coachs = Database::fetch_array($rs_coachs)) { $coachs[] = $row_coachs['username']; } $coachs = implode(",",$coachs); if ($cvs) { $courses .= str_replace(';',',',$rowCourses['code']); $courses .= '['.str_replace(';',',',$coachs).']['; } else { $courses .= "\t\t\n"; $courses .= "\t\t\t$rowCourses[code]\n"; $courses .= "\t\t\t$coachs\n"; } // rel user courses $sql = "SELECT DISTINCT u.username FROM $tbl_session_course_user scu INNER JOIN $tbl_session_user su ON scu.user_id = su.user_id AND scu.session_id = su.session_id AND su.relation_type<>".SESSION_RELATION_TYPE_RRHH." INNER JOIN $tbl_user u ON scu.user_id = u.user_id AND scu.c_id='".$rowCourses['c_id']."' AND scu.session_id='".$row['id']."'"; $rsUsersCourse = Database::query($sql); $userscourse = ''; while ($rowUsersCourse = Database::fetch_array($rsUsersCourse)){ if ($cvs) { $userscourse .= str_replace(';',',',$rowUsersCourse['username']).','; } else { $courses .= "\t\t\t$rowUsersCourse[username]\n"; } } if ($cvs) { if (!empty($userscourse)) { $userscourse = api_substr( $userscourse, 0, api_strlen($userscourse) - 1 ); } $courses .= $userscourse.']|'; } else { $courses .= "\t\t\n"; } } if(!empty($courses) && $cvs) $courses = api_substr($courses , 0, api_strlen($courses)-1); $add .= $courses; if ($cvs) { $breakline = api_is_windows_os()?"\r\n":"\n"; $add .= ";$breakline"; } else { $add .= "\t\n"; } fputs($fp, $add); } if(!$cvs) fputs($fp,"\n"); fclose($fp); $errorMsg=get_lang('UserListHasBeenExported').'
'.get_lang('ClickHereToDownloadTheFile').''; } } // display the header Display::display_header($tool_name); //select of sessions $sql = "SELECT id, name FROM $tbl_session ORDER BY name"; if (api_is_multiple_url_enabled()) { $tbl_session_rel_access_url = Database::get_main_table(TABLE_MAIN_ACCESS_URL_REL_SESSION); $access_url_id = api_get_current_access_url_id(); if ($access_url_id != -1){ $sql = "SELECT s.id, name FROM $tbl_session s INNER JOIN $tbl_session_rel_access_url as session_rel_url ON (s.id = session_rel_url.session_id) WHERE access_url_id = $access_url_id ORDER BY name"; } } $result = Database::query($sql); $Sessions = Database::store_result($result); echo '
'; echo ''.Display::return_icon('back.png', get_lang('BackTo').' '.get_lang('PlatformAdmin'),'',ICON_SIZE_MEDIUM).''; echo '
'; if (!empty($errorMsg)) { Display::display_normal_message($errorMsg, false); //main API } $form = new FormValidator('session_export', 'post', api_get_self()); $form->addElement('hidden', 'formSent', 1); $form->addElement('radio', 'file_type', get_lang('OutputFileType'), 'CSV' , 'csv', null, array('id' => 'file_type_csv')); $form->addElement('radio', 'file_type', null, 'XML', 'xml', null, array('id' => 'file_type_xml')); $options = array(); $options['0'] = get_lang('AllSessions'); foreach ($Sessions as $enreg) { $options[$enreg['id']] = $enreg['name']; } $form->addElement('select', 'session_id', get_lang('WhichSessionToExport'), $options); $form->addButtonExport(get_lang('ExportSession')); $defaults = array(); $defaults['file_type'] = 'csv'; $form->setDefaults($defaults); $form->display(); unset($Courses); Display::display_footer();