',', 2 => '|'); $quote_char = array(1 => '', 2 => "'", 3 => '"'); $format_array = array( 'banlist_ip' => 1, 'banlist_datestamp' => "%Y%m%d_%H%M%S", 'banlist_banexpires' => "%Y%m%d_%H%M%S", 'banlist_bantype' => 1, 'banlist_reason' => 1, 'banlist_notes' => 1 ); $banSep = (int) varset($_POST['ban_separator']); $banQuote = (int) varset($_POST['ban_quote']); $use_separator = varset($separator_char[$banSep],$separator_char[1]); $use_quote = varset($quote_char[$banQuote],$quote_char[2]); $type_list = ''; if (!empty($_POST['ban_types'])) { $validBanTypes = banlistManager::getValidReasonList(); $spacer = ''; foreach($_POST['ban_types'] as $b) { $b = trim($b); if (is_numeric($b) && in_array($b, $validBanTypes)) { $type_list .= $spacer.($b); $spacer = ','; } } } $filename = 'banlist_'.e_date::strftime("%Y%m%d_%H%M%S").'.csv'; if ($error_string = do_export($filename, $type_list, $format_array, $use_separator, $use_quote)) { // Need to report an error here echo "Error report: {$error_string}
"; } banlist_adminlog('06','File: '.$filename.'
'.$error_string); function do_export($filename, $type_list='',$format_array=array(), $sep = ',', $quot = '"') { $sql = e107::getDb(); $export_text = ''; $qry = "SELECT * FROM `#banlist` "; if ($type_list != '') $qry .= " WHERE`banlist_bantype` IN ({$type_list})"; if (!$sql->gen($qry)) return 'No data: '.$qry; while ($row = $sql->fetch()) { $line = ''; $spacer = ''; foreach ($format_array as $f => $v) { switch ($f) { case 'banlist_ip' : case 'banlist_bantype' : case 'banlist_reason' : case 'banlist_notes' : $line .= $spacer.$quot.$row[$f].$quot; break; case 'banlist_datestamp' : case 'banlist_banexpires' : if ($row[$f]) $line .= $spacer.$quot.e_date::strftime($v,$row[$f]).$quot; else $line .= $spacer.$quot.'0'.$quot; break; } $spacer = $sep; } $export_text .= $line."\n"; } if (defined('CSV_DEBUG')) { $export_text .= 'Summary data:
'; $export_text .= 'File: '.$filename.'
'; $export_text .= 'Types: '.$type_list.'
'; $export_text .= 'Query: '.$qry.'
'; echo str_replace("\n","
",$export_text); } else { if(headers_sent()) { return "Cannot output file - some data already sent

"; } //Secure https check if (isset($_SERVER['HTTP_USER_AGENT']) && $_SERVER['HTTP_USER_AGENT']=='contype') header('Pragma: public'); if (isset($_SERVER['HTTP_USER_AGENT']) && strpos($_SERVER['HTTP_USER_AGENT'],'MSIE')) header('Content-Type: application/force-download'); else header('Content-Type: application/octet-stream'); header('Content-Length: '.strlen($export_text)); header('Content-disposition: attachment; filename="'.$filename.'"'); echo $export_text; } } // Log event to admin log function banlist_adminlog($msg_num='00', $woffle='') { e107::getLog()->add('BANLIST_'.$msg_num, $woffle, E_LOG_INFORMATIVE, ''); } ?>