mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/Echo
synced 2024-12-18 19:01:28 +00:00
Merge "Add seen time to output of API, in ISO 8601 format"
This commit is contained in:
commit
3fd553a152
|
@ -39,10 +39,12 @@ class EchoSeenTime {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @param string $type Type of seen time to get
|
||||||
* @param int $flags BagOStuff::READ_LATEST to use the master
|
* @param int $flags BagOStuff::READ_LATEST to use the master
|
||||||
* @return string|bool false if no stored time
|
* @param int $format Format to return time in, defaults to TS_MW
|
||||||
|
* @return string|bool Timestamp in specified format, or false if no stored time
|
||||||
*/
|
*/
|
||||||
public function getTime( $type = 'all', $flags = 0 ) {
|
public function getTime( $type = 'all', $flags = 0, $format = TS_MW ) {
|
||||||
$vals = array();
|
$vals = array();
|
||||||
if ( $type === 'all' ) {
|
if ( $type === 'all' ) {
|
||||||
foreach ( self::$allowedTypes as $allowed ) {
|
foreach ( self::$allowedTypes as $allowed ) {
|
||||||
|
@ -62,7 +64,13 @@ class EchoSeenTime {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $data;
|
if ( $data !== false ) {
|
||||||
|
$formattedData = wfTimestamp( $format, $data );
|
||||||
|
} else {
|
||||||
|
$formattedData = $data;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $formattedData;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function setTime( $time, $type = 'all' ) {
|
public function setTime( $time, $type = 'all' ) {
|
||||||
|
|
|
@ -131,6 +131,13 @@ class ApiEchoNotifications extends ApiCrossWikiBase {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( in_array( 'seenTime', $prop ) ) {
|
||||||
|
$result = array_merge_recursive(
|
||||||
|
$result,
|
||||||
|
$this->getPropSeenTime( $user, $params['sections'], $params['groupbysection'] )
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -301,6 +308,31 @@ class ApiEchoNotifications extends ApiCrossWikiBase {
|
||||||
return $result;
|
return $result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Internal helper method for getting property 'seenTime' data
|
||||||
|
* @param User $user
|
||||||
|
* @param string[] $sections
|
||||||
|
* @param boolean $groupBySection
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
protected function getPropSeenTime( User $user, array $sections, $groupBySection ) {
|
||||||
|
$result = array();
|
||||||
|
$seenTimeHelper = EchoSeenTime::newFromUser( $user );
|
||||||
|
|
||||||
|
if ( $groupBySection ) {
|
||||||
|
foreach ( $sections as $section ) {
|
||||||
|
$result[$section]['seenTime'] = $seenTimeHelper->getTime( $section, /*flags*/ 0, TS_ISO_8601 );
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
$result['seenTime'] = array();
|
||||||
|
foreach ( $sections as $section ) {
|
||||||
|
$result['seenTime'][$section] = $seenTimeHelper->getTime( $section, /*flags*/ 0, TS_ISO_8601 );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return $result;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Build and format a "fake" notification to represent foreign notifications.
|
* Build and format a "fake" notification to represent foreign notifications.
|
||||||
* @param User $user
|
* @param User $user
|
||||||
|
@ -529,6 +561,7 @@ class ApiEchoNotifications extends ApiCrossWikiBase {
|
||||||
ApiBase::PARAM_TYPE => array(
|
ApiBase::PARAM_TYPE => array(
|
||||||
'list',
|
'list',
|
||||||
'count',
|
'count',
|
||||||
|
'seenTime',
|
||||||
),
|
),
|
||||||
ApiBase::PARAM_DFLT => 'list',
|
ApiBase::PARAM_DFLT => 'list',
|
||||||
),
|
),
|
||||||
|
|
Loading…
Reference in a new issue