jenkins-bot has submitted this change and it was merged.

Change subject: Use safe attribute accessor for RecentChange
......................................................................


Use safe attribute accessor for RecentChange

The RecentChange does not guarantee that all attributes are populated.
Handily it provides a safe getter function in
RecentChange::getAttribute() that will return null with out triggering
an undefined index warning for missing attributes. Protects against log
spam like "Notice: Undefined index: rc_id".

Change-Id: Idee844f0d40a2a084e17f201b5e1501d59a0464d
(cherry picked from commit 78695ada64118461969f7a7b4ae0fec128505dd8)
---
M includes/rcfeed/MachineReadableRCFeedFormatter.php
1 file changed, 22 insertions(+), 23 deletions(-)

Approvals:
  BryanDavis: Looks good to me, but someone else must approve
  EBernhardson: Looks good to me, approved
  jenkins-bot: Verified



diff --git a/includes/rcfeed/MachineReadableRCFeedFormatter.php 
b/includes/rcfeed/MachineReadableRCFeedFormatter.php
index 18e6003..519606c 100644
--- a/includes/rcfeed/MachineReadableRCFeedFormatter.php
+++ b/includes/rcfeed/MachineReadableRCFeedFormatter.php
@@ -39,64 +39,63 @@
         */
        public function getLine( array $feed, RecentChange $rc, $actionComment 
) {
                global $wgCanonicalServer, $wgServerName, $wgScriptPath;
-               $attrib = $rc->getAttributes();
 
                $packet = array(
                        // Usually, RC ID is exposed only for patrolling 
purposes,
                        // but there is no real reason not to expose it in 
other cases,
                        // and I can see how this may be potentially useful for 
clients.
-                       'id' => $attrib['rc_id'],
-                       'type' => RecentChange::parseFromRCType( 
$attrib['rc_type'] ),
+                       'id' => $rc->getAttribute( 'rc_id' ),
+                       'type' => RecentChange::parseFromRCType( 
$rc->getAttribute( 'rc_type' ) ),
                        'namespace' => $rc->getTitle()->getNamespace(),
                        'title' => $rc->getTitle()->getPrefixedText(),
-                       'comment' => $attrib['rc_comment'],
-                       'timestamp' => (int)wfTimestamp( TS_UNIX, 
$attrib['rc_timestamp'] ),
-                       'user' => $attrib['rc_user_text'],
-                       'bot' => (bool)$attrib['rc_bot'],
+                       'comment' => $rc->getAttribute( 'rc_comment' ),
+                       'timestamp' => (int)wfTimestamp( TS_UNIX, 
$rc->getAttribute( 'rc_timestamp' ) ),
+                       'user' => $rc->getAttribute( 'rc_user_text' ),
+                       'bot' => (bool)$rc->getAttribute( 'rc_bot' ),
                );
 
                if ( isset( $feed['channel'] ) ) {
                        $packet['channel'] = $feed['channel'];
                }
 
-               $type = $attrib['rc_type'];
+               $type = $rc->getAttribute( 'rc_type' );
                if ( $type == RC_EDIT || $type == RC_NEW ) {
                        global $wgUseRCPatrol, $wgUseNPPatrol;
 
-                       $packet['minor'] = (bool)$attrib['rc_minor'];
+                       $packet['minor'] = (bool)$rc->getAttribute( 'rc_minor' 
);
                        if ( $wgUseRCPatrol || ( $type == RC_NEW && 
$wgUseNPPatrol ) ) {
-                               $packet['patrolled'] = 
(bool)$attrib['rc_patrolled'];
+                               $packet['patrolled'] = (bool)$rc->getAttribute( 
'rc_patrolled' );
                        }
                }
 
                switch ( $type ) {
                        case RC_EDIT:
                                $packet['length'] = array(
-                                       'old' => $attrib['rc_old_len'],
-                                       'new' => $attrib['rc_new_len']
+                                       'old' => $rc->getAttribute( 
'rc_old_len' ),
+                                       'new' => $rc->getAttribute( 
'rc_new_len' )
                                );
                                $packet['revision'] = array(
-                                       'old' => $attrib['rc_last_oldid'],
-                                       'new' => $attrib['rc_this_oldid']
+                                       'old' => $rc->getAttribute( 
'rc_last_oldid' ),
+                                       'new' => $rc->getAttribute( 
'rc_this_oldid' )
                                );
                                break;
 
                        case RC_NEW:
-                               $packet['length'] = array( 'old' => null, 'new' 
=> $attrib['rc_new_len'] );
-                               $packet['revision'] = array( 'old' => null, 
'new' => $attrib['rc_this_oldid'] );
+                               $packet['length'] = array( 'old' => null, 'new' 
=> $rc->getAttribute( 'rc_new_len' ) );
+                               $packet['revision'] = array( 'old' => null, 
'new' => $rc->getAttribute( 'rc_this_oldid' ) );
                                break;
 
                        case RC_LOG:
-                               $packet['log_id'] = $attrib['rc_logid'];
-                               $packet['log_type'] = $attrib['rc_log_type'];
-                               $packet['log_action'] = 
$attrib['rc_log_action'];
-                               if ( $attrib['rc_params'] ) {
+                               $packet['log_id'] = $rc->getAttribute( 
'rc_logid' );
+                               $packet['log_type'] = $rc->getAttribute( 
'rc_log_type' );
+                               $packet['log_action'] = $rc->getAttribute( 
'rc_log_action' );
+                               if ( $rc->getAttribute( 'rc_params' ) ) {
                                        wfSuppressWarnings();
-                                       $params = unserialize( 
$attrib['rc_params'] );
+                                       $params = unserialize( 
$rc->getAttribute( 'rc_params' ) );
                                        wfRestoreWarnings();
                                        if (
                                                // If it's an actual serialised 
false...
-                                               $attrib['rc_params'] == 
serialize( false ) ||
+                                               $rc->getAttribute( 'rc_params' 
) == serialize( false ) ||
                                                // Or if we did not get false 
back when trying to unserialise
                                                $params !== false
                                        ) {
@@ -113,7 +112,7 @@
                                                }
                                                $packet['log_params'] = 
$logParams;
                                        } else {
-                                               $packet['log_params'] = 
explode( "\n", $attrib['rc_params'] );
+                                               $packet['log_params'] = 
explode( "\n", $rc->getAttribute( 'rc_params' ) );
                                        }
                                }
                                $packet['log_action_comment'] = $actionComment;

-- 
To view, visit https://gerrit.wikimedia.org/r/161482
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: Idee844f0d40a2a084e17f201b5e1501d59a0464d
Gerrit-PatchSet: 1
Gerrit-Project: mediawiki/core
Gerrit-Branch: wmf/1.24wmf21
Gerrit-Owner: Legoktm <[email protected]>
Gerrit-Reviewer: BryanDavis <[email protected]>
Gerrit-Reviewer: EBernhardson <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to