Main Page | Namespace List | Class Hierarchy | Class List | File List | Class Members | File Members | Related Pages

SpecialMaintenance.php

Go to the documentation of this file.
00001 <?php 00002 00003 function sns() 00004 { 00005 global $wgLang ; 00006 $ns = $wgLang->getNamespaces() ; 00007 return $ns[-1] ; 00008 } 00009 00010 function wfSpecialMaintenance( $par=NULL ) 00011 { 00012 global $wgUser, $wgOut, $wgLang, $wgTitle, $wgRequest, $wgLanguageCode; 00013 global $wgMiserMode; 00014 00015 if ( $wgMiserMode ) { 00016 $wgOut->addWikiText( wfMsg( "perfdisabled" ) ); 00017 return; 00018 } 00019 00020 $submitmll = $wgRequest->getVal( 'submitmll' ); 00021 00022 if( $par ) 00023 $subfunction = $par; 00024 else 00025 $subfunction = $wgRequest->getText( 'subfunction' ); 00026 00027 if ( $subfunction == "disambiguations" ) return wfSpecialDisambiguations() ; 00028 if ( $subfunction == "doubleredirects" ) return wfSpecialDoubleRedirects() ; 00029 if ( $subfunction == "brokenredirects" ) return wfSpecialBrokenRedirects() ; 00030 if ( $subfunction == "selflinks" ) return wfSpecialSelfLinks() ; 00031 if ( $subfunction == "mispeelings" ) return wfSpecialMispeelings() ; 00032 if ( $subfunction == "missinglanguagelinks" ) return wfSpecialMissingLanguageLinks() ; 00033 if ( !is_null( $submitmll ) ) return wfSpecialMissingLanguageLinks() ; 00034 00035 $sk = $wgUser->getSkin(); 00036 $ns = $wgLang->getNamespaces() ; 00037 $r = wfMsg("maintnancepagetext") ; 00038 $r .= "<UL>\n" ; 00039 $r .= "<li>".getMPL("disambiguations")."</li>\n" ; 00040 $r .= "<li>".getMPL("doubleredirects")."</li>\n" ; 00041 $r .= "<li>".getMPL("brokenredirects")."</li>\n" ; 00042 $r .= "<li>".getMPL("selflinks")."</li>\n" ; 00043 $r .= "<li>".getMPL("mispeelings")."</li>\n" ; 00044 00045 $r .= "<li>"; 00046 $l = getMPL("missinglanguagelinks"); 00047 $l = str_replace ( "</a>" , "" , $l ) ; 00048 $l = str_replace ( "<a " , "<FORM method=post " , $l ) ; 00049 $l = explode ( ">" , $l ) ; 00050 $l = $l[0] ; 00051 $r .= $l.">\n" ; 00052 $r .= "<input type=submit name='submitmll' value='" ; 00053 $r .= htmlspecialchars(wfMsg("missinglanguagelinksbutton"), ENT_QUOTES); 00054 $r .= "'>\n" ; 00055 $r .= "<select name=thelang>\n" ; 00056 $a = $wgLang->getLanguageNames(); 00057 $ak = array_keys ( $a ) ; 00058 foreach ( $ak AS $k ) { 00059 if ( $k != $wgLanguageCode ) 00060 $r .= "<option value='{$k}'>{$a[$k]}</option>\n" ; 00061 } 00062 $r .= "</select>\n" ; 00063 $r .= "</FORM>\n</li>" ; 00064 00065 $r .= "</UL>\n" ; 00066 $wgOut->addHTML ( $r ) ; 00067 } 00068 00069 function getMPL ( $x ) 00070 { 00071 global $wgUser , $wgLang; 00072 $sk = $wgUser->getSkin() ; 00073 return $sk->makeKnownLink(sns().":Maintenance",wfMsg($x),"subfunction={$x}") ; 00074 } 00075 00076 function getMaintenancePageBacklink( $subfunction ) 00077 { 00078 global $wgUser , $wgLang; 00079 $sk = $wgUser->getSkin() ; 00080 $ns = $wgLang->getNamespaces() ; 00081 $r = $sk->makeKnownLink ( 00082 $ns[-1].":Maintenance", 00083 wfMsg("maintenancebacklink") ) ; 00084 $t = wfMsg ( $subfunction ) ; 00085 00086 $s = "<table width=100% border=0><tr><td>"; 00087 $s .= "<h2>{$t}</h2></td><td align=right>"; 00088 $s .= "{$r}</td></tr></table>\n" ; 00089 return $s ; 00090 } 00091 00092 # Broken function 00093 # Suggest deprecating this in favour of a Special:Whatlinkshere with prev/next links [TS] 00094 function wfSpecialDisambiguations() 00095 { 00096 global $wgUser, $wgOut, $wgLang, $wgTitle; 00097 $fname = "wfSpecialDisambiguations"; 00098 00099 list( $limit, $offset ) = wfCheckLimits(); 00100 00101 $dp = wfStrencode( wfMsg("disambiguationspage") ); 00102 00103 die( "wfSpecialDisambiguation is broken. Link tables have changed...\n" ); 00104 00105 $sql = "SELECT la.l_from,la.l_to," 00106 . " lb.l_from AS source,lb.l_to AS dest," 00107 . " c.cur_id, c.cur_title AS dt" 00108 . " FROM links AS la, links AS lb, cur AS c, cur AS d" 00109 . " WHERE la.l_from='{$dp}'" 00110 . " AND la.l_to=lb.l_to" 00111 . " AND la.l_from<>lb.l_from" 00112 . " AND c.cur_id=lb.l_to" 00113 . " AND c.cur_namespace=0" 00114 . " AND d.cur_title=lb.l_from" 00115 . " AND d.cur_namespace=0" 00116 . " LIMIT {$offset}, {$limit}"; 00117 00118 $res = wfQuery( $sql, DB_READ, $fname ); 00119 00120 $sk = $wgUser->getSkin(); 00121 00122 $top = "<p>".wfMsg( "disambiguationstext", $sk->makeKnownLink( $dp ) )."</p><br>\n"; 00123 $top = getMaintenancePageBacklink( "disambiguations" ) . $top; 00124 $top .= wfShowingResults( $offset, $limit ); 00125 $wgOut->addHTML( "<p>{$top}\n" ); 00126 00127 $sl = wfViewPrevNext( $offset, $limit, "REPLACETHIS" ) ; 00128 $sl = str_replace ( "REPLACETHIS" , sns().":Maintenance&subfunction=disambiguations" , $sl ) ; 00129 $wgOut->addHTML( "<br>{$sl}\n" ); 00130 00131 $s = "<ol start=" . ( $offset + 1 ) . ">"; 00132 while ( $obj = wfFetchObject( $res ) ) { 00133 $l1 = $sk->makeKnownLink ( $obj->source , "" , "redirect=no" ) ; 00134 $l2 = $sk->makeKnownLink ( $obj->dt ) ; 00135 $l3 = $sk->makeBrokenLink ( $obj->source , "(".wfMsg("qbedit").")" , "redirect=no" ) ; 00136 $s .= "<li>{$l1} {$l3} => {$l2}</li>\n" ; 00137 } 00138 wfFreeResult( $res ); 00139 $s .= "</ol>"; 00140 $wgOut->addHTML( $s ); 00141 $wgOut->addHTML( "<p>{$sl}\n" ); 00142 } 00143 00144 function wfSpecialDoubleRedirects() 00145 { 00146 global $wgUser, $wgOut, $wgLang, $wgTitle; 00147 $fname = "wfSpecialDoubleRedirects"; 00148 00149 list( $limit, $offset ) = wfCheckLimits(); 00150 00151 $sql = "SELECT ca.cur_namespace as ns_a, ca.cur_title as title_a," . 00152 " cb.cur_namespace as ns_b, cb.cur_title as title_b," . 00153 " cb.cur_text AS rt " . 00154 "FROM links,cur AS ca,cur AS cb ". 00155 "WHERE ca.cur_is_redirect=1 AND cb.cur_is_redirect=1 AND l_to=cb.cur_id " . 00156 " AND l_from=ca.cur_id LIMIT {$offset}, {$limit}" ; 00157 00158 $res = wfQuery( $sql, DB_READ, $fname ); 00159 00160 $top = getMaintenancePageBacklink( "doubleredirects" ); 00161 $top .= "<p>".wfMsg("doubleredirectstext")."</p><br>\n"; 00162 $top .= wfShowingResults( $offset, $limit ); 00163 $wgOut->addHTML( "<p>{$top}\n" ); 00164 00165 $sl = wfViewPrevNext( $offset, $limit, "REPLACETHIS" ) ; 00166 $sl = str_replace ( "REPLACETHIS" , sns().":Maintenance&subfunction=doubleredirects" , $sl ) ; 00167 $wgOut->addHTML( "<br>{$sl}\n" ); 00168 00169 $sk = $wgUser->getSkin(); 00170 $s = "<ol start=" . ( $offset + 1 ) . ">"; 00171 while ( $obj = wfFetchObject( $res ) ) { 00172 $n = explode ( "\n" , $obj->rt ) ; 00173 $n = $n[0] ; 00174 $sourceTitle = Title::makeTitle( $obj->ns_a, $obj->title_a ); 00175 $destTitle = Title::makeTitle( $obj->ns_b, $obj->title_b ); 00176 00177 $l1 = $sk->makeKnownLinkObj( $sourceTitle , "" , "redirect=no" ) ; 00178 $l2 = $sk->makeKnownLinkObj( $destTitle , "" , "redirect=no" ) ; 00179 $l3 = $sk->makeBrokenLinkObj( $sourceTitle , "(".wfMsg("qbedit").")" , "redirect=no" ) ; 00180 $s .= "<li>{$l1} {$l3} => {$l2} (\"{$n}\")</li>\n" ; 00181 } 00182 wfFreeResult( $res ); 00183 $s .= "</ol>"; 00184 $wgOut->addHTML( $s ); 00185 $wgOut->addHTML( "<p>{$sl}\n" ); 00186 } 00187 00188 function wfSpecialBrokenRedirects() 00189 { 00190 global $wgUser, $wgOut, $wgLang, $wgTitle; 00191 $fname = "wfSpecialBrokenRedirects"; 00192 00193 list( $limit, $offset ) = wfCheckLimits(); 00194 00195 $sql = "SELECT bl_to,cur_title FROM brokenlinks,cur " . 00196 "WHERE cur_is_redirect=1 AND cur_namespace=0 AND bl_from=cur_id " . 00197 "LIMIT {$offset}, {$limit}" ; 00198 00199 $res = wfQuery( $sql, DB_READ, $fname ); 00200 00201 $top = getMaintenancePageBacklink( "brokenredirects" ); 00202 $top .= "<p>".wfMsg("brokenredirectstext")."</p><br>\n"; 00203 $top .= wfShowingResults( $offset, $limit ); 00204 $wgOut->addHTML( "<p>{$top}\n" ); 00205 00206 $sl = wfViewPrevNext( $offset, $limit, "REPLACETHIS" ) ; 00207 $sl = str_replace ( "REPLACETHIS" , sns().":Maintenance&subfunction=brokenredirects" , $sl ) ; 00208 $wgOut->addHTML( "<br>{$sl}\n" ); 00209 00210 $sk = $wgUser->getSkin(); 00211 $s = "<ol start=" . ( $offset + 1 ) . ">"; 00212 while ( $obj = wfFetchObject( $res ) ) { 00213 $l1 = $sk->makeKnownLink ( $obj->cur_title , "" , "redirect=no" ) ; 00214 $l2 = $sk->makeBrokenLink ( $obj->cur_title , "(".wfMsg("qbedit").")" , "redirect=no" ) ; 00215 $l3 = $sk->makeBrokenLink ( $obj->bl_to , "" , "redirect=no" ) ; 00216 $s .= "<li>{$l1} {$l2} => {$l3}</li>\n" ; 00217 } 00218 wfFreeResult( $res ); 00219 $s .= "</ol>"; 00220 $wgOut->addHTML( $s ); 00221 $wgOut->addHTML( "<p>{$sl}\n" ); 00222 } 00223 00224 # This doesn't really work anymore, because self-links are now displayed as 00225 # unlinked bold text, and are not entered into the link table. 00226 function wfSpecialSelfLinks() 00227 { 00228 global $wgUser, $wgOut, $wgLang, $wgTitle; 00229 $fname = "wfSpecialSelfLinks"; 00230 00231 list( $limit, $offset ) = wfCheckLimits(); 00232 00233 $sql = "SELECT cur_namespace,cur_title FROM cur,links " . 00234 "WHERE l_from=l_to AND l_to=cur_id " . 00235 "LIMIT {$offset}, {$limit}"; 00236 00237 $res = wfQuery( $sql, DB_READ, $fname ); 00238 00239 $top = getMaintenancePageBacklink( "selflinks" ); 00240 $top .= "<p>".wfMsg("selflinkstext")."</p><br>\n"; 00241 $top .= wfShowingResults( $offset, $limit ); 00242 $wgOut->addHTML( "<p>{$top}\n" ); 00243 00244 $sl = wfViewPrevNext( $offset, $limit, "REPLACETHIS" ) ; 00245 $sl = str_replace ( "REPLACETHIS" , sns().":Maintenance&subfunction=selflinks" , $sl ) ; 00246 $wgOut->addHTML( "<br>{$sl}\n" ); 00247 00248 $sk = $wgUser->getSkin(); 00249 $s = "<ol start=" . ( $offset + 1 ) . ">"; 00250 while ( $obj = wfFetchObject( $res ) ) { 00251 $title = Title::makeTitle( $obj->cur_namespace, $obj->cur_title ); 00252 $s .= "<li>".$sk->makeKnownLinkObj( $title )."</li>\n" ; 00253 } 00254 wfFreeResult( $res ); 00255 $s .= "</ol>"; 00256 $wgOut->addHTML( $s ); 00257 $wgOut->addHTML( "<p>{$sl}\n" ); 00258 } 00259 00260 function wfSpecialMispeelings () 00261 { 00262 global $wgUser, $wgOut, $wgLang, $wgTitle; 00263 $sk = $wgUser->getSkin(); 00264 $fname = "wfSpecialMispeelings"; 00265 00266 list( $limit, $offset ) = wfCheckLimits(); 00267 00268 # Determine page name 00269 $ms = wfMsg ( "mispeelingspage" ) ; 00270 $mss = wfStrencode( str_replace ( " " , "_" , $ms ) ); 00271 $msp = $wgLang->getNsText(4).":".$ms ; 00272 $msl = $sk->makeKnownLink ( $msp ) ; 00273 00274 # Load list from database 00275 $sql = "SELECT cur_text FROM cur WHERE cur_title='{$mss}' AND cur_namespace=4" ; 00276 $res = wfQuery( $sql, DB_READ, $fname ); 00277 $obj = wfFetchObject ( $res ) ; 00278 $l = $obj->cur_text ; 00279 $l = explode ( "\n" , $l ) ; 00280 $a = array () ; 00281 foreach ( $l as $x ) 00282 if ( substr ( trim ( $x ) , 0 , 1 ) == "*" ) 00283 $a[] = strtolower ( trim ( substr ( trim ( $x ) , 1 ) ) ); 00284 asort ( $a ) ; 00285 00286 $cnt = 0 ; 00287 $b = array () ; 00288 foreach ( $a AS $x ) { 00289 if ( $cnt < $offset+$limit && $x != "" ) { 00290 $y = $x ; 00291 $x = preg_replace( '/^(\S+).*$/', '$1', $x ); 00292 #$sql = "SELECT DISTINCT cur_title FROM cur WHERE cur_namespace=0 AND cur_is_redirect=0 AND (MATCH(cur_ind_text) AGAINST ('" . wfStrencode( $wgLang->stripForSearch( $x ) ) . "'))" ; 00293 $sql = "SELECT DISTINCT cur_title FROM cur,searchindex WHERE cur_id=si_page AND cur_namespace=0 AND cur_is_redirect=0 AND (MATCH(si_text) AGAINST ('" . wfStrencode( $wgLang->stripForSearch( $x ) ) . "'))" ; 00294 $res = wfQuery( $sql, DB_READ, $fname ); 00295 while ( $obj = wfFetchObject ( $res ) ) { 00296 if ( $cnt >= $offset AND $cnt < $offset+$limit ) { 00297 if ( $y != "" ) { 00298 if ( count ( $b ) > 0 ) $b[] = "</OL>\n" ; 00299 $b[] = "<H3>{$y}</H3>\n<OL start=".($cnt+1).">\n" ; 00300 $y = "" ; 00301 } 00302 $b[] = "<li>". 00303 $sk->makeKnownLink ( $obj->cur_title ). 00304 " (". 00305 $sk->makeBrokenLink ( $obj->cur_title , wfMsg ( "qbedit" ) ). 00306 ")</li>\n" ; 00307 } 00308 $cnt++ ; 00309 } 00310 } 00311 } 00312 $top = getMaintenancePageBacklink( "mispeelings" ); 00313 $top .= "<p>".wfMsg( "mispeelingstext", $msl )."</p><br>\n"; 00314 $top .= wfShowingResults( $offset, $limit ); 00315 $wgOut->addHTML( "<p>{$top}\n" ); 00316 00317 $sl = wfViewPrevNext( $offset, $limit, "REPLACETHIS" ) ; 00318 $sl = str_replace ( "REPLACETHIS" , sns().":Maintenance&subfunction=mispeelings" , $sl ) ; 00319 $wgOut->addHTML( "<br>{$sl}\n" ); 00320 00321 $s = implode ( "" , $b ) ; 00322 if ( count ( $b ) > 0 ) $s .= "</ol>"; 00323 $wgOut->addHTML( $s ); 00324 $wgOut->addHTML( "<p>{$sl}\n" ); 00325 } 00326 00327 00328 function wfSpecialMissingLanguageLinks() 00329 { 00330 global $wgUser, $wgOut, $wgLang, $wgTitle, $wgRequest; 00331 00332 $fname = "wfSpecialMissingLanguageLinks"; 00333 $thelang = $wgRequest->getText( 'thelang' ); 00334 if ( $thelang == "w" ) $thelang = "en" ; # Fix for international wikis 00335 00336 list( $limit, $offset ) = wfCheckLimits(); 00337 00338 $sql = "SELECT cur_title FROM cur " . 00339 "WHERE cur_namespace=0 AND cur_is_redirect=0 " . 00340 "AND cur_title NOT LIKE '%/%' AND cur_text NOT LIKE '%[[{$thelang}:%' " . 00341 "LIMIT {$offset}, {$limit}"; 00342 00343 $res = wfQuery( $sql, DB_READ, $fname ); 00344 00345 00346 $mll = wfMsg( "missinglanguagelinkstext", $wgLang->getLanguageName($thelang) ); 00347 00348 $top = getMaintenancePageBacklink( "missinglanguagelinks" ); 00349 $top .= "<p>$mll</p><br>"; 00350 $top .= wfShowingResults( $offset, $limit ); 00351 $wgOut->addHTML( "<p>{$top}\n" ); 00352 00353 $sl = wfViewPrevNext( $offset, $limit, "REPLACETHIS" ) ; 00354 $sl = str_replace ( "REPLACETHIS" , sns().":Maintenance&subfunction=missinglanguagelinks&thelang={$thelang}" , $sl ) ; 00355 $wgOut->addHTML( "<br>{$sl}\n" ); 00356 00357 $sk = $wgUser->getSkin(); 00358 $s = "<ol start=" . ( $offset + 1 ) . ">"; 00359 while ( $obj = wfFetchObject( $res ) ) 00360 $s .= "<li>".$sk->makeKnownLink ( $obj->cur_title )."</li>\n" ; 00361 wfFreeResult( $res ); 00362 $s .= "</ol>"; 00363 $wgOut->addHTML( $s ); 00364 $wgOut->addHTML( "<p>{$sl}\n" ); 00365 } 00366 00367 ?>

Generated on Tue Jun 29 23:40:07 2004 for Mediawiki by doxygen 1.3.7