|
@@ 546-562 (lines=17) @@
|
| 543 |
|
* @param int $namespace Namespace of the title |
| 544 |
|
* @return string DBkey (no namespace prefix) |
| 545 |
|
*/ |
| 546 |
|
public function titlePartToKey( $titlePart, $namespace = NS_MAIN ) { |
| 547 |
|
$t = Title::makeTitleSafe( $namespace, $titlePart . 'x' ); |
| 548 |
|
if ( !$t || $t->hasFragment() ) { |
| 549 |
|
// Invalid title (e.g. bad chars) or contained a '#'. |
| 550 |
|
$this->dieUsageMsg( [ 'invalidtitle', $titlePart ] ); |
| 551 |
|
} |
| 552 |
|
if ( $namespace != $t->getNamespace() || $t->isExternal() ) { |
| 553 |
|
// This can happen in two cases. First, if you call titlePartToKey with a title part |
| 554 |
|
// that looks like a namespace, but with $defaultNamespace = NS_MAIN. It would be very |
| 555 |
|
// difficult to handle such a case. Such cases cannot exist and are therefore treated |
| 556 |
|
// as invalid user input. The second case is when somebody specifies a title interwiki |
| 557 |
|
// prefix. |
| 558 |
|
$this->dieUsageMsg( [ 'invalidtitle', $titlePart ] ); |
| 559 |
|
} |
| 560 |
|
|
| 561 |
|
return substr( $t->getDBkey(), 0, -1 ); |
| 562 |
|
} |
| 563 |
|
|
| 564 |
|
/** |
| 565 |
|
* Convert an input title or title prefix into a namespace constant and dbkey. |
|
@@ 572-580 (lines=9) @@
|
| 569 |
|
* @param int $defaultNamespace Default namespace if none is given |
| 570 |
|
* @return array (int, string) Namespace number and DBkey |
| 571 |
|
*/ |
| 572 |
|
public function prefixedTitlePartToKey( $titlePart, $defaultNamespace = NS_MAIN ) { |
| 573 |
|
$t = Title::newFromText( $titlePart . 'x', $defaultNamespace ); |
| 574 |
|
if ( !$t || $t->hasFragment() || $t->isExternal() ) { |
| 575 |
|
// Invalid title (e.g. bad chars) or contained a '#'. |
| 576 |
|
$this->dieUsageMsg( [ 'invalidtitle', $titlePart ] ); |
| 577 |
|
} |
| 578 |
|
|
| 579 |
|
return [ $t->getNamespace(), substr( $t->getDBkey(), 0, -1 ) ]; |
| 580 |
|
} |
| 581 |
|
|
| 582 |
|
/** |
| 583 |
|
* @param string $hash |