* @return array Query info
*/
protected function getQueryInfoReal( $table ) {
+ $dbr = wfGetDB( DB_REPLICA );
$prefix = $table === 'oldimage' ? 'oi' : 'img';
$tables = [ $table ];
- $fields = $this->getFieldNames();
+ $fields = array_keys( $this->getFieldNames() );
+ $fields = array_combine( $fields, $fields );
unset( $fields['img_description'] );
unset( $fields['img_user_text'] );
- $fields = array_keys( $fields );
if ( $table === 'oldimage' ) {
- foreach ( $fields as $id => &$field ) {
- if ( substr( $field, 0, 4 ) !== 'img_' ) {
- continue;
+ foreach ( $fields as $id => $field ) {
+ if ( substr( $id, 0, 4 ) === 'img_' ) {
+ $fields[$id] = $prefix . substr( $field, 3 );
}
- $field = $prefix . substr( $field, 3 ) . ' AS ' . $field;
}
- $fields[array_search( 'top', $fields )] = "'no' AS top";
+ $fields['top'] = $dbr->addQuotes( 'no' );
} else {
if ( $this->mShowAll ) {
- $fields[array_search( 'top', $fields )] = "'yes' AS top";
+ $fields['top'] = $dbr->addQuotes( 'yes' );
}
}
- $fields[array_search( 'thumb', $fields )] = $prefix . '_name AS thumb';
+ $fields['thumb'] = $prefix . '_name';
$options = $join_conds = [];
$tables += $commentQuery['tables'];
$fields += $commentQuery['fields'];
$join_conds += $commentQuery['joins'];
- $fields['description_field'] = "'{$prefix}_description'";
+ $fields['description_field'] = $dbr->addQuotes( "{$prefix}_description" );
# User fields
$actorQuery = ActorMigration::newMigration()->getJoin( $prefix . '_user' );
# Depends on $wgMiserMode
# Will also not happen if mShowAll is true.
- if ( isset( $this->mFieldNames['count'] ) ) {
- $tables[] = 'oldimage';
-
- # Need to rewrite this one
- foreach ( $fields as &$field ) {
- if ( $field == 'count' ) {
- $field = 'COUNT(oi_archive_name) AS count';
- }
- }
- unset( $field );
-
- $columnlist = preg_grep( '/^img/', array_keys( $this->getFieldNames() ) );
- $options = [ 'GROUP BY' => array_merge( [ $fields['img_user'] ], $columnlist ) ];
- $join_conds['oldimage'] = [ 'LEFT JOIN', 'oi_name = img_name' ];
+ if ( isset( $fields['count'] ) ) {
+ $fields['count'] = $dbr->buildSelectSubquery(
+ 'oldimage',
+ 'COUNT(oi_archive_name)',
+ 'oi_name = img_name',
+ __METHOD__
+ );
}
return [