48 '@phan-var array<string,class-string<ChannelFeed>> $feedClasses';
49 if ( !isset( $feedClasses[$this->format] ) ) {
53 if ( !array_key_exists( $this->format, $feedClasses ) ) {
55 $this->format =
'atom';
58 $feedTitle =
"{$sitename} - {$title} [{$languageCode}]";
59 return new $feedClasses[$this->format](
60 $feedTitle, htmlspecialchars( $description ),
$url );
72 # Merge adjacent edits by one user
75 foreach ( $rows as $obj ) {
76 if ( !in_array( $obj->rc_source, RecentChange::INTERNAL_SOURCES ) ) {
82 $obj->rc_namespace >= 0 &&
83 $obj->rc_cur_id == $sorted[$n - 1]->rc_cur_id &&
84 $obj->rc_user_text == $sorted[$n - 1]->rc_user_text ) {
85 $sorted[$n - 1]->rc_last_oldid = $obj->rc_last_oldid;
93 $commentFormatter = $services->getRowCommentFormatter();
94 $formattedComments = $commentFormatter->formatItems(
95 $commentFormatter->rows( $rows )
96 ->commentKey(
'rc_comment' )
97 ->indexField(
'rc_id' )
100 $nsInfo = $services->getNamespaceInfo();
101 foreach ( $sorted as $obj ) {
103 $talkpage = $nsInfo->hasTalkNamespace( $obj->rc_namespace ) && $title->canExist()
104 ? $title->getTalkPage()->getFullURL()
108 if ( $obj->rc_deleted ) {
112 if ( $obj->rc_this_oldid ) {
113 $url = $title->getFullURL( [
114 'diff' => $obj->rc_this_oldid,
115 'oldid' => $obj->rc_last_oldid,
119 $url = $title->getFullURL();
123 $title->getPrefixedText(),
124 FeedUtils::formatDiff( $obj, $formattedComments[$obj->rc_id] ),
127 ( $obj->rc_deleted & RevisionRecord::DELETED_USER )
128 ?
wfMessage(
'rev-deleted-user' )->escaped() : $obj->rc_user_text,