Пример #1
0
 protected function addRowInfo($prefix, $row)
 {
     $vals = array();
     // ID
     if (isset($row->{$prefix . '_id'})) {
         $vals[$prefix . 'id'] = intval($row->{$prefix . '_id'});
     }
     // Title
     $title = ApiQueryBase::addRowInfo_title($row, $prefix . '_namespace', $prefix . '_title');
     if ($title) {
         if (!$title->userCanRead()) {
             return false;
         }
         $vals['ns'] = $title->getNamespace();
         $vals['title'] = $title->getPrefixedText();
     }
     switch ($prefix) {
         case 'page':
             // page_is_redirect
             @($tmp = $row->page_is_redirect);
             if ($tmp) {
                 $vals['redirect'] = '';
             }
             break;
         case 'rc':
             // PageId
             @($tmp = $row->rc_cur_id);
             if (!is_null($tmp)) {
                 $vals['pageid'] = intval($tmp);
             }
             @($tmp = $row->rc_this_oldid);
             if (!is_null($tmp)) {
                 $vals['revid'] = intval($tmp);
             }
             if (isset($row->rc_last_oldid)) {
                 $vals['old_revid'] = intval($row->rc_last_oldid);
             }
             $title = ApiQueryBase::addRowInfo_title($row, 'rc_moved_to_ns', 'rc_moved_to_title');
             if ($title) {
                 if (!$title->userCanRead()) {
                     return false;
                 }
                 $vals['new_ns'] = $title->getNamespace();
                 $vals['new_title'] = $title->getPrefixedText();
             }
             if (isset($row->rc_patrolled)) {
                 $vals['patrolled'] = '';
             }
             break;
         case 'log':
             // PageId
             @($tmp = $row->page_id);
             if (!is_null($tmp)) {
                 $vals['pageid'] = intval($tmp);
             }
             if ($row->log_params !== '') {
                 $params = explode("\n", $row->log_params);
                 if ($row->log_type == 'move' && isset($params[0])) {
                     $newTitle = Title::newFromText($params[0]);
                     if ($newTitle) {
                         $vals['new_ns'] = $newTitle->getNamespace();
                         $vals['new_title'] = $newTitle->getPrefixedText();
                         $params = null;
                     }
                 }
                 if (!empty($params)) {
                     $this->getResult()->setIndexedTagName($params, 'param');
                     $vals = array_merge($vals, $params);
                 }
             }
             break;
         case 'rev':
             // PageID
             @($tmp = $row->rev_page);
             if (!is_null($tmp)) {
                 $vals['pageid'] = intval($tmp);
             }
     }
     // Type
     @($tmp = $row->{$prefix . '_type'});
     if (!is_null($tmp)) {
         $vals['type'] = $tmp;
     }
     // Action
     @($tmp = $row->{$prefix . '_action'});
     if (!is_null($tmp)) {
         $vals['action'] = $tmp;
     }
     // Old ID
     @($tmp = $row->{$prefix . '_text_id'});
     if (!is_null($tmp)) {
         $vals['oldid'] = intval($tmp);
     }
     // User Name / Anon IP
     @($tmp = $row->{$prefix . '_user_text'});
     if (is_null($tmp)) {
         @($tmp = $row->user_name);
     }
     if (!is_null($tmp)) {
         $vals['user'] = $tmp;
         @($tmp = !$row->{$prefix . '_user'});
         if (!is_null($tmp) && $tmp) {
             $vals['anon'] = '';
         }
     }
     // Bot Edit
     @($tmp = $row->{$prefix . '_bot'});
     if (!is_null($tmp) && $tmp) {
         $vals['bot'] = '';
     }
     // New Edit
     @($tmp = $row->{$prefix . '_new'});
     if (is_null($tmp)) {
         @($tmp = $row->{$prefix . '_is_new'});
     }
     if (!is_null($tmp) && $tmp) {
         $vals['new'] = '';
     }
     // Minor Edit
     @($tmp = $row->{$prefix . '_minor_edit'});
     if (is_null($tmp)) {
         @($tmp = $row->{$prefix . '_minor'});
     }
     if (!is_null($tmp) && $tmp) {
         $vals['minor'] = '';
     }
     // Timestamp
     @($tmp = $row->{$prefix . '_timestamp'});
     if (!is_null($tmp)) {
         $vals['timestamp'] = wfTimestamp(TS_ISO_8601, $tmp);
     }
     // Comment
     @($tmp = $row->{$prefix . '_comment'});
     if (!empty($tmp)) {
         // optimize bandwidth
         $vals['comment'] = $tmp;
     }
     return $vals;
 }