[ 'image', 'imagelinks' ], 'fields' => [ 'namespace' => NS_FILE, 'title' => 'img_name', 'value' => 'img_timestamp', ], 'conds' => [ 'il_to IS NULL' ], 'join_conds' => [ 'imagelinks' => [ 'LEFT JOIN', 'il_to = img_name' ] ] ]; if ( $this->getConfig()->get( 'CountCategorizedImagesAsUsed' ) ) { // Order is significant $retval['tables'] = [ 'image', 'page', 'categorylinks', 'imagelinks' ]; $retval['conds']['page_namespace'] = NS_FILE; $retval['conds'][] = 'cl_from IS NULL'; $retval['conds'][] = 'img_name = page_title'; $retval['join_conds']['categorylinks'] = [ 'LEFT JOIN', 'cl_from = page_id' ]; $retval['join_conds']['imagelinks'] = [ 'LEFT JOIN', 'il_to = page_title' ]; } return $retval; } function usesTimestamps() { return true; } function getPageHeader() { if ( $this->getConfig()->get( 'CountCategorizedImagesAsUsed' ) ) { return $this->msg( 'unusedimagestext-categorizedimgisused' )->parseAsBlock(); } return $this->msg( 'unusedimagestext' )->parseAsBlock(); } protected function getGroupName() { return 'maintenance'; } }