+ private function extractRowInfo($row) {
+ $vals = array();
+
+ if ($this->fld_ids) {
+ // FIXME: Fake out log_id for now until the column is live on Wikimedia
+ // $vals['logid'] = intval($row->log_id);
+ $vals['logid'] = 0;
+ $vals['pageid'] = intval($row->page_id);
+ }
+
+ if ($this->fld_title) {
+ $title = Title :: makeTitle($row->log_namespace, $row->log_title);
+ ApiQueryBase :: addTitleInfo($vals, $title);
+ }
+
+ if ($this->fld_type) {
+ $vals['type'] = $row->log_type;
+ $vals['action'] = $row->log_action;
+ }
+
+ if ($this->fld_details && $row->log_params !== '') {
+ $params = explode("\n", $row->log_params);
+ switch ($row->log_type) {
+ case 'move':
+ if (isset ($params[0])) {
+ $title = Title :: newFromText($params[0]);
+ if ($title) {
+ $vals2 = array();
+ ApiQueryBase :: addTitleInfo($vals2, $title, "new_");
+ $vals[$row->log_type] = $vals2;
+ $params = null;
+ }
+ }
+ break;
+ case 'patrol':
+ $vals2 = array();
+ list( $vals2['cur'], $vals2['prev'], $vals2['auto'] ) = $params;
+ $vals[$row->log_type] = $vals2;
+ $params = null;
+ break;
+ case 'rights':
+ $vals2 = array();
+ list( $vals2['old'], $vals2['new'] ) = $params;
+ $vals[$row->log_type] = $vals2;
+ $params = null;
+ break;
+ case 'block':
+ $vals2 = array();
+ list( $vals2['duration'], $vals2['flags'] ) = $params;
+ $vals[$row->log_type] = $vals2;
+ $params = null;
+ break;
+ }
+
+ if (isset($params)) {
+ $this->getResult()->setIndexedTagName($params, 'param');
+ $vals = array_merge($vals, $params);
+ }
+ }
+
+ if ($this->fld_user) {
+ $vals['user'] = $row->user_name;
+ if(!$row->log_user)
+ $vals['anon'] = '';
+ }
+ if ($this->fld_timestamp) {
+ $vals['timestamp'] = wfTimestamp(TS_ISO_8601, $row->log_timestamp);
+ }
+ if ($this->fld_comment && !empty ($row->log_comment)) {
+ $vals['comment'] = $row->log_comment;
+ }
+
+ return $vals;
+ }
+
+
+ public function getAllowedParams() {
+ global $wgLogTypes;