Merge "Add seen time to output of API, in ISO 8601 format"

This commit is contained in:
jenkins-bot 2016-07-20 16:31:54 +00:00 committed by Gerrit Code Review
commit 3fd553a152
2 changed files with 44 additions and 3 deletions

View file

@ -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' ) {

View file

@ -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',
), ),