csv implement insecurity using ob, refactoring now
This commit is contained in:
parent
593f8d70c0
commit
fe4501c697
|
@ -3,6 +3,9 @@
|
||||||
namespace Tainacan\Exposers\Types;
|
namespace Tainacan\Exposers\Types;
|
||||||
|
|
||||||
class Csv extends Type {
|
class Csv extends Type {
|
||||||
|
|
||||||
|
public $mappers = ['value'];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
*
|
||||||
* {@inheritDoc}
|
* {@inheritDoc}
|
||||||
|
@ -13,9 +16,13 @@ class Csv extends Type {
|
||||||
'Content-Type: text/csv; charset=' . get_option( 'blog_charset' ),
|
'Content-Type: text/csv; charset=' . get_option( 'blog_charset' ),
|
||||||
'Content-disposition: attachment;filename=tainacan.csv'] // TODO filter/optional
|
'Content-disposition: attachment;filename=tainacan.csv'] // TODO filter/optional
|
||||||
);
|
);
|
||||||
$csv = '';
|
ob_start();
|
||||||
$csv = $this->array_to_csv($response->get_data(), apply_filters('tainacan-exposer-csv', $csv));
|
$csv = fopen('php://output', 'w');
|
||||||
$response->set_data($csv);
|
$this->array_to_csv($response->get_data(), apply_filters('tainacan-exposer-csv', $csv));
|
||||||
|
$ret_csv = ob_get_clean();
|
||||||
|
ob_end_clean();
|
||||||
|
fclose($csv);
|
||||||
|
$response->set_data($ret_csv);
|
||||||
return $response;
|
return $response;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,16 +33,9 @@ class Csv extends Type {
|
||||||
* @return string
|
* @return string
|
||||||
*/
|
*/
|
||||||
protected function array_to_csv( $data, $csv ) {
|
protected function array_to_csv( $data, $csv ) {
|
||||||
foreach( $data as $key => $value ) {
|
$values = [];
|
||||||
if( is_numeric($key) ){
|
fputcsv($csv, array_keys($data), apply_filters('tainacan-exposer-csv-delimiter', ';') );
|
||||||
//$key = apply_filters('tainacan-exposer-numeric-item-prefix', __('item', 'tainacan').'-', get_class($this)).$key; //dealing with <0/>..<n/> issues
|
fputcsv($csv, array_values($data), apply_filters('tainacan-exposer-csv-delimiter', ';') );
|
||||||
}
|
|
||||||
if( is_array($value) ) {
|
|
||||||
//$csv .= $key.": ".$this->array_to_csv($value, '['.$csv.']\n');
|
|
||||||
} else {
|
|
||||||
//$csv .= $key.": ".$value .'\n';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $csv;
|
return $csv;
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue