62 '@phan-var array<string,class-string<ChannelFeed>> $feedClasses';
63 if ( !isset( $feedClasses[$this->format] ) ) {
67 if ( !array_key_exists( $this->format, $feedClasses ) ) {
69 $this->format =
'atom';
72 $feedTitle =
"{$sitename} - {$title} [{$languageCode}]";
73 return new $feedClasses[$this->format](
74 $feedTitle, htmlspecialchars( $description ),
$url );
86 # Merge adjacent edits by one user
89 foreach ( $rows as $obj ) {
96 $obj->rc_namespace >= 0 &&
97 $obj->rc_cur_id == $sorted[$n - 1]->rc_cur_id &&
98 $obj->rc_user_text == $sorted[$n - 1]->rc_user_text ) {
99 $sorted[$n - 1]->rc_last_oldid = $obj->rc_last_oldid;
107 $commentFormatter = $services->getRowCommentFormatter();
108 $formattedComments = $commentFormatter->formatItems(
109 $commentFormatter->rows( $rows )
110 ->commentKey(
'rc_comment' )
111 ->indexField(
'rc_id' )
114 $nsInfo = $services->getNamespaceInfo();
115 foreach ( $sorted as $obj ) {
116 $title = Title::makeTitle( $obj->rc_namespace, $obj->rc_title );
117 $talkpage = $nsInfo->hasTalkNamespace( $obj->rc_namespace ) && $title->canExist()
118 ? $title->getTalkPage()->getFullURL()
122 if ( $obj->rc_deleted ) {
126 if ( $obj->rc_this_oldid ) {
127 $url = $title->getFullURL( [
128 'diff' => $obj->rc_this_oldid,
129 'oldid' => $obj->rc_last_oldid,
133 $url = $title->getFullURL();
137 $title->getPrefixedText(),
138 FeedUtils::formatDiff( $obj, $formattedComments[$obj->rc_id] ),
141 ( $obj->rc_deleted & RevisionRecord::DELETED_USER )
142 ?
wfMessage(
'rev-deleted-user' )->escaped() : $obj->rc_user_text,