Scheduler/mod/scheduler/downloads.php 0000644 0044725 0000144 00000050702 11244416435 021035 0 ustar lafayettenuke users 1.8 * * This page exports data to external documents for download */ /************************************ ODS (OpenOffice Sheet) download generator ******************************/ if ($action == 'downloadods'){ require_once($CFG->libdir."/odslib.class.php"); /// Calculate file name $downloadfilename = clean_filename("{$course->shortname}_{$scheduler->name}.ods"); /// Creating a workbook $workbook = new MoodleODSWorkbook("-"); } /************************************ Excel download generator ***********************************************/ if ($action == 'downloadexcel'){ require_once($CFG->libdir."/excellib.class.php"); /// Calculate file name $downloadfilename = clean_filename(shorten_text("{$course->shortname}_{$scheduler->name}", 20).".xls"); /// Creating a workbook $workbook = new MoodleExcelWorkbook("-"); } if($action == 'downloadexcel' || $action == 'downloadods'){ /// Sending HTTP headers $workbook->send($downloadfilename); /// Prepare data $sql = " SELECT DISTINCT u.id, u.firstname, u.lastname, u.email, u.department FROM {$CFG->prefix}scheduler_slots AS s, {$CFG->prefix}user AS u WHERE s.teacherid = u.id AND schedulerid = {$scheduler->id} "; $teachers = get_records_sql($sql); $slots = get_records('scheduler_slots', 'schedulerid', $scheduler->id, 'starttime', 'id, starttime, duration, exclusivity, teacherid, hideuntil'); if ($subaction == 'singlesheet'){ /// Adding the worksheet $myxls['singlesheet'] =& $workbook->add_worksheet($COURSE->shortname.': '.format_string($scheduler->name)); $myxls['singlesheet']->write_string(0,0,get_string('date', 'scheduler')); $myxls['singlesheet']->write_string(0,1,get_string('starttime', 'scheduler')); $myxls['singlesheet']->write_string(0,2,get_string('endtime', 'scheduler')); $myxls['singlesheet']->write_string(0,3,get_string('slottype', 'scheduler')); $myxls['singlesheet']->write_string(0,4,$scheduler->staffrolename); $myxls['singlesheet']->write_string(0,5,get_string('students', 'scheduler')); $myxls['singlesheet']->set_column(0,0,26); $myxls['singlesheet']->set_column(1,2,15); $myxls['singlesheet']->set_column(3,3,10); $myxls['singlesheet']->set_column(4,4,20); $myxls['singlesheet']->set_column(5,5,60); $f = $workbook->add_format(array('bold' => 1)); $myxls['singlesheet']->set_row(0,13,$f); } elseif ($subaction == 'byteacher') { /// Adding the worksheets if ($teachers){ foreach($teachers as $teacher){ $myxls[$teacher->id] =& $workbook->add_worksheet(fullname($teacher)); /// Print names of all the fields $myxls[$teacher->id]->write_string(0,0,get_string('date', 'scheduler')); $myxls[$teacher->id]->write_string(0,1,get_string('starttime', 'scheduler')); $myxls[$teacher->id]->write_string(0,2,get_string('endtime', 'scheduler')); $myxls[$teacher->id]->write_string(0,3,get_string('slottype', 'scheduler')); $myxls[$teacher->id]->write_string(0,4,get_string('students', 'scheduler')); $myxls['singlesheet']->set_column(0,0,26); $myxls['singlesheet']->set_column(1,2,15); $myxls['singlesheet']->set_column(3,3,10); $myxls['singlesheet']->set_column(4,4,60); $f = $workbook->add_format(array('bold' => 1)); $myxls['singlesheet']->set_row(0,13,$f); } } } /// Print all the lines of data. $i = array(); if (!empty($slots)) { foreach ($slots as $slot) { switch($subaction){ case 'byteacher': $sheetname = $slot->teacherid ; break; default : $sheetname = $subaction; } $appointments = get_records('scheduler_appointment', 'slotid', $slot->id); /// fill slot data $datestart = scheduler_userdate($slot->starttime,1); $timestart = scheduler_usertime($slot->starttime,1); $timeend = scheduler_usertime($slot->starttime + $slot->duration * 60,1); $i[$sheetname] = @$i[$sheetname] + 1; $myxls[$sheetname]->write_string($i[$sheetname],0,$datestart); $myxls[$sheetname]->write_string($i[$sheetname],1,$timestart); $myxls[$sheetname]->write_string($i[$sheetname],2,$timeend); switch($slot->exclusivity){ case 0 : $myxls[$sheetname]->write_string($i[$sheetname], 3, get_string('unlimited', 'scheduler')); break; case 1 : $myxls[$sheetname]->write_string($i[$sheetname], 3, get_string('exclusive', 'scheduler')); break; default : $myxls[$sheetname]->write_string($i[$sheetname], 3, get_string('limited', 'scheduler').' '.($slot->exclusivity - count($appointments))); } $j = 4; if ($subaction == 'singlesheet'){ $myxls[$sheetname]->write_string($i[$sheetname], $j, fullname($teachers[$slot->teacherid])); $j++; } if (!empty($appointments)) { $appointedlist = ''; foreach($appointments as $appointment){ $user = get_record('user', 'id', $appointment->studentid, '', 'id,firstname,lastname'); $user->lastname = strtoupper($user->lastname); $strattended = ($appointment->attended) ? ' (A) ': ''; $appointedlist[] = fullname($user). " $strattended"; } $myxls[$sheetname]->write_string($i[$sheetname], $j, implode(',', $appointedlist)); } } } /// Close the workbook $workbook->close(); exit; } /********************************************* csv generator : get parms ************************************/ if ($action == 'dodownloadcsv'){ print_header_simple($scheduler->name, '', "id}\">{$strschedulers} -> id}&page={$page}\">".format_string($scheduler->name)." -> ".get_string('csvparms', 'scheduler'), '', '', true, update_module_button($cm->id, $course->id, $strscheduler), navmenu($course, $cm)); echo ''; echo ''; echo ''; ?>
|