* * @retval boolean true if exportSearchResultAsCSV is fully supported, false in other case */ function LSaddon_exportSearchResultAsCSV_support() { $retval=true; // Check fputcsv function if (!function_exists('fputcsv')) { LSerror :: addErrorCode('LS_EXPORTSEARCHRESULTASCSV_SUPPORT_01'); } $MUST_DEFINE_CONST= array( 'LS_EXPORTSEARCHRESULTASCSV_DELIMITER', 'LS_EXPORTSEARCHRESULTASCSV_ENCLOSURE', 'LS_EXPORTSEARCHRESULTASCSV_ESCAPE_CHAR', ); foreach($MUST_DEFINE_CONST as $const) { if ( (!defined($const)) || (constant($const) == "")) { LSerror :: addErrorCode('LS_EXPORTSEARCHRESULTASCSV_SUPPORT_02',$const); $retval=false; } } return $retval; } /** * Write LSsearch result as CSV and force download of it. * * @param[in] $LSsearch The LSsearch object * * @author Benjamin Renard * * @retval boolean Void if CSV file is successfully generated and upload, false in other case */ function exportSearchResultAsCSV($LSsearch) { $csv = fopen('php://temp/maxmemory:'. (5*1024*1024), 'r+'); if ($csv === false) { LSerror :: addErrorCode('LS_EXPORTSEARCHRESULTASCSV_00'); return false; } if (!$LSsearch -> run()) { LSerror :: addErrorCode('LS_EXPORTSEARCHRESULTASCSV_01'); return false; } $headers=array($LSsearch->label_objectName, 'DN'); if ($LSsearch->displaySubDn) $headers[]='Sub DN'; if ($LSsearch->visibleExtraDisplayedColumns) { foreach ($LSsearch->visibleExtraDisplayedColumns as $cid => $conf) { $headers[] = __($conf['label']); } } if (!writeRowInCSV($csv, $headers)) { LSerror :: addErrorCode('LS_EXPORTSEARCHRESULTASCSV_02'); return false; } foreach ($LSsearch -> getSearchEntries() as $e) { $row = array( $e -> displayName, $e -> dn ); if ($LSsearch->displaySubDn) $row[] = $e -> subDn; if ($LSsearch->visibleExtraDisplayedColumns) foreach ($LSsearch->visibleExtraDisplayedColumns as $cid => $conf) $row[] = $e -> $cid; if (!writeRowInCSV($csv, $row)) { LSerror :: addErrorCode('LS_EXPORTSEARCHRESULTASCSV_03'); return false; } } header("Content-disposition: attachment; filename=export.csv"); header("Content-type: text/csv"); rewind($csv); print stream_get_contents($csv); @fclose($csv); exit(); } /** * Write CSV row in file * * @param[in] $csv The CSV file description reference * @param[in] $row An array of a CSV row fields to write * * @author Benjamin Renard * * @retval boolean True if CSV row is successfully writed, false in other case */ function writeRowInCSV(&$csv, &$row) { if (!defined('PHP_VERSION_ID') or PHP_VERSION_ID < 50504) { return (fputcsv($csv, $row, LS_EXPORTSEARCHRESULTASCSV_DELIMITER, LS_EXPORTSEARCHRESULTASCSV_ENCLOSURE) !== false); } return (fputcsv($csv, $row, LS_EXPORTSEARCHRESULTASCSV_DELIMITER, LS_EXPORTSEARCHRESULTASCSV_ENCLOSURE, LS_EXPORTSEARCHRESULTASCSV_ESCAPE_CHAR) !== false); }