blob: 79b0403d10335c4190b5ad38dd40d64695ec3300 (
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
98
99
100
101
102
|
<?php
/**
* Formats that return a time.
* @since 1.8
*
* @file SRF_Time.php
* @ingroup SemanticResultFormats
*
* @licence GNU GPL v3+
* @author nischayn22
* @author Jeroen De Dauw < jeroendedauw@gmail.com >
*/
class SRFTime extends SMWResultPrinter {
/**
* (non-PHPdoc)
* @see SMWResultPrinter::getName()
*/
public function getName() {
// Give grep a chance to find the usages:
// srf_printername_latest, srf_printername_earliest
return wfMessage( 'srf_printername_' . $this->mFormat )->text();
}
/**
* (non-PHPdoc)
* @see SMWResultPrinter::getResultText()
*/
protected function getResultText( SMWQueryResult $res, $outputmode ) {
$dataItems = $this->getSortKeys( $res );
if ( empty( $dataItems ) ) {
return $this->params['default'];
}
$sortKeys = array_keys( $dataItems );
switch ( $this->mFormat ) {
case 'latest':
$result = max( $sortKeys );
break;
case 'earliest':
$result = min( $sortKeys );
break;
}
$dataValue = SMWDataValueFactory::newDataItemValue( $dataItems[$result], null );
return $dataValue->getLongHTMLText();
}
/**
* Returns an array with sortkeys for dates pointing to their source DataItems.
*
* @param SMWQueryResult $res
*
* @return array
*/
protected function getSortKeys( SMWQueryResult $res ) {
$seconds = array();
while ( $row = $res->getNext() ) {
foreach( $row as /* SMWResultArray */ $resultArray ) {
foreach ( $resultArray->getContent() as /* SMWDataItem */ $dataItem ) {
if ( $dataItem->getDIType() === SMWDataItem::TYPE_TIME ) {
$seconds[$dataItem->getSortKey()] = $dataItem;
}
}
}
}
return $seconds;
}
/**
* @see SMWResultPrinter::getParamDefinitions
*
* @since 1.8
*
* @param $definitions array of IParamDefinition
*
* @return array of IParamDefinition|array
*/
public function getParamDefinitions( array $definitions ) {
$params = parent::getParamDefinitions( $definitions );
$params['limit'] = array(
'type' => 'integer',
'default' => 1000,
'message' => 'srf_paramdesc_limit',
);
$params['default'] = array(
'type' => 'integer',
'default' => '',
'message' => 'srf-paramdesc-default',
);
return $params;
}
}
|