blob: b58e62ada814055476d644709fe2e0da0474aea4 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
<?php
namespace SMW\Query\ResultPrinters;
use SMW\Query\ExportPrinter;
use SMWQuery;
use SMWQueryProcessor;
use SMWQueryResult;
/**
* Base class for file export result printers
*
* @since 1.8
* @license GNU GPL v2+
*
* @author Jeroen De Dauw < jeroendedauw@gmail.com >
*/
abstract class FileExportPrinter extends ResultPrinter implements ExportPrinter {
/**
* @var boolean
*/
private $httpHeader = true;
/**
* @see ExportPrinter::isExportFormat
*
* @since 1.8
*
* @return boolean
*/
public function isExportFormat() {
return true;
}
/**
* @see 3.0
*/
public function disableHttpHeader() {
$this->httpHeader = false;
}
/**
* @see ExportPrinter::outputAsFile
*
* @since 1.8
*
* @param SMWQueryResult $queryResult
* @param array $params
*/
public function outputAsFile( SMWQueryResult $queryResult, array $params ) {
$result = $this->getResult( $queryResult, $params, SMW_OUTPUT_FILE );
if ( $this->httpHeader ) {
header( 'Content-type: ' . $this->getMimeType( $queryResult ) . '; charset=UTF-8' );
}
$fileName = $this->getFileName( $queryResult );
if ( $fileName !== false ) {
$utf8Name = rawurlencode( $fileName );
$fileName = iconv( "UTF-8", "ASCII//TRANSLIT", $fileName );
if ( $this->httpHeader ) {
header( "content-disposition: attachment; filename=\"$fileName\"; filename*=UTF-8''$utf8Name;" );
}
}
echo $result;
}
/**
* @see ExportPrinter::getFileName
*
* @since 1.8
*
* @param SMWQueryResult $queryResult
*
* @return string|boolean
*/
public function getFileName( SMWQueryResult $queryResult ) {
return false;
}
/**
* File exports use MODE_INSTANCES on special pages (so that instances are
* retrieved for the export) and MODE_NONE otherwise (displaying just a download link).
*
* @param $mode
*
* @return integer
*/
public function getQueryMode( $mode ) {
return $mode == SMWQueryProcessor::SPECIAL_PAGE ? SMWQuery::MODE_INSTANCES : SMWQuery::MODE_NONE;
}
}
|