Translate extension for MediaWiki
 
Loading...
Searching...
No Matches
PageTranslationHookHandler.php
1<?php
2declare( strict_types = 1 );
3
4namespace MediaWiki\Extension\Translate\PageTranslation;
5
6use HTMLCheckField;
7use IContextSource;
8use MediaWiki\Hook\LonelyPagesQueryHook;
9use MediaWiki\Hook\SpecialPrefixIndexGetFormFiltersHook;
10use MediaWiki\Hook\SpecialPrefixIndexQueryHook;
11use Wikimedia\Rdbms\SelectQueryBuilder;
12
14 SpecialPrefixIndexGetFormFiltersHook,
15 SpecialPrefixIndexQueryHook,
16 LonelyPagesQueryHook
17{
18
19 public function onSpecialPrefixIndexGetFormFilters( IContextSource $contextSource, array &$filters ) {
20 $filters[ 'translate-hidetranslations' ] = [
21 'class' => HTMLCheckField::class,
22 'name' => 'translate-hidetranslations',
23 'label-message' => 'translate-hidetranslations',
24 ];
25 }
26
27 public function onSpecialPrefixIndexQuery( array $fieldData, SelectQueryBuilder $queryBuilder ) {
28 if ( $fieldData[ 'translate-hidetranslations' ] === true ) {
29 $queryBuilder->leftJoin(
30 'page_props',
31 'translate_pp',
32 [
33 'translate_pp.pp_page=page_id',
34 'translate_pp.pp_propname' => 'translate-is-translation'
35 ]
36 )->andWhere( [ 'translate_pp.pp_value' => null ] );
37 }
38 }
39
40 public function onLonelyPagesQuery( &$tables, &$conds, &$joinConds ) {
41 $tables[ 'translate_pp' ] = 'page_props';
42 $joinConds['translate_pp'] = [
43 'LEFT JOIN', [
44 'translate_pp.pp_page=page_id',
45 'translate_pp.pp_propname' => 'translate-is-translation'
46 ]
47 ];
48 $conds['translate_pp.pp_value'] = null;
49 }
50}