Conditions | 17 |
Paths | 7680 |
Total Lines | 101 |
Code Lines | 73 |
Lines | 12 |
Ratio | 11.88 % |
Changes | 0 |
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
1 | <?php |
||
54 | private function run( $resultPageSet = null ) { |
||
55 | $db = $this->getDB(); |
||
56 | $params = $this->extractRequestParams(); |
||
57 | |||
58 | $this->addTables( 'category' ); |
||
59 | $this->addFields( 'cat_title' ); |
||
60 | |||
61 | View Code Duplication | if ( !is_null( $params['continue'] ) ) { |
|
62 | $cont = explode( '|', $params['continue'] ); |
||
63 | $this->dieContinueUsageIf( count( $cont ) != 1 ); |
||
64 | $op = $params['dir'] == 'descending' ? '<' : '>'; |
||
65 | $cont_from = $db->addQuotes( $cont[0] ); |
||
66 | $this->addWhere( "cat_title $op= $cont_from" ); |
||
67 | } |
||
68 | |||
69 | $dir = ( $params['dir'] == 'descending' ? 'older' : 'newer' ); |
||
70 | $from = ( $params['from'] === null |
||
71 | ? null |
||
72 | : $this->titlePartToKey( $params['from'], NS_CATEGORY ) ); |
||
73 | $to = ( $params['to'] === null |
||
74 | ? null |
||
75 | : $this->titlePartToKey( $params['to'], NS_CATEGORY ) ); |
||
76 | $this->addWhereRange( 'cat_title', $dir, $from, $to ); |
||
77 | |||
78 | $min = $params['min']; |
||
79 | $max = $params['max']; |
||
80 | if ( $dir == 'newer' ) { |
||
81 | $this->addWhereRange( 'cat_pages', 'newer', $min, $max ); |
||
82 | } else { |
||
83 | $this->addWhereRange( 'cat_pages', 'older', $max, $min ); |
||
84 | } |
||
85 | |||
86 | View Code Duplication | if ( isset( $params['prefix'] ) ) { |
|
87 | $this->addWhere( 'cat_title' . $db->buildLike( |
||
88 | $this->titlePartToKey( $params['prefix'], NS_CATEGORY ), |
||
89 | $db->anyString() ) ); |
||
90 | } |
||
91 | |||
92 | $this->addOption( 'LIMIT', $params['limit'] + 1 ); |
||
93 | $sort = ( $params['dir'] == 'descending' ? ' DESC' : '' ); |
||
94 | $this->addOption( 'ORDER BY', 'cat_title' . $sort ); |
||
95 | |||
96 | $prop = array_flip( $params['prop'] ); |
||
97 | $this->addFieldsIf( [ 'cat_pages', 'cat_subcats', 'cat_files' ], isset( $prop['size'] ) ); |
||
98 | if ( isset( $prop['hidden'] ) ) { |
||
99 | $this->addTables( [ 'page', 'page_props' ] ); |
||
100 | $this->addJoinConds( [ |
||
101 | 'page' => [ 'LEFT JOIN', [ |
||
102 | 'page_namespace' => NS_CATEGORY, |
||
103 | 'page_title=cat_title' ] ], |
||
104 | 'page_props' => [ 'LEFT JOIN', [ |
||
105 | 'pp_page=page_id', |
||
106 | 'pp_propname' => 'hiddencat' ] ], |
||
107 | ] ); |
||
108 | $this->addFields( [ 'cat_hidden' => 'pp_propname' ] ); |
||
109 | } |
||
110 | |||
111 | $res = $this->select( __METHOD__ ); |
||
112 | |||
113 | $pages = []; |
||
114 | |||
115 | $result = $this->getResult(); |
||
116 | $count = 0; |
||
117 | foreach ( $res as $row ) { |
||
118 | if ( ++$count > $params['limit'] ) { |
||
119 | // We've reached the one extra which shows that there are |
||
120 | // additional cats to be had. Stop here... |
||
121 | $this->setContinueEnumParameter( 'continue', $row->cat_title ); |
||
122 | break; |
||
123 | } |
||
124 | |||
125 | // Normalize titles |
||
126 | $titleObj = Title::makeTitle( NS_CATEGORY, $row->cat_title ); |
||
127 | if ( !is_null( $resultPageSet ) ) { |
||
128 | $pages[] = $titleObj; |
||
129 | } else { |
||
130 | $item = []; |
||
131 | ApiResult::setContentValue( $item, 'category', $titleObj->getText() ); |
||
132 | if ( isset( $prop['size'] ) ) { |
||
133 | $item['size'] = intval( $row->cat_pages ); |
||
134 | $item['pages'] = $row->cat_pages - $row->cat_subcats - $row->cat_files; |
||
135 | $item['files'] = intval( $row->cat_files ); |
||
136 | $item['subcats'] = intval( $row->cat_subcats ); |
||
137 | } |
||
138 | if ( isset( $prop['hidden'] ) ) { |
||
139 | $item['hidden'] = (bool)$row->cat_hidden; |
||
140 | } |
||
141 | $fit = $result->addValue( [ 'query', $this->getModuleName() ], null, $item ); |
||
142 | if ( !$fit ) { |
||
143 | $this->setContinueEnumParameter( 'continue', $row->cat_title ); |
||
144 | break; |
||
145 | } |
||
146 | } |
||
147 | } |
||
148 | |||
149 | if ( is_null( $resultPageSet ) ) { |
||
150 | $result->addIndexedTagName( [ 'query', $this->getModuleName() ], 'c' ); |
||
151 | } else { |
||
152 | $resultPageSet->populateFromTitles( $pages ); |
||
153 | } |
||
154 | } |
||
155 | |||
206 |