9use InvalidArgumentException;
23 private $linkTargetLookup;
28 'page_id' =>
'tl_from',
30 'ns' =>
'tl_namespace',
32 'title' =>
'tl_title',
33 'target_id' =>
'tl_target_id',
36 'page_id' =>
'pl_from',
38 'ns' =>
'pl_namespace',
40 'title' =>
'pl_title',
41 'target_id' =>
'pl_target_id',
44 'page_id' =>
'cl_from',
49 'target_id' =>
'cl_target_id',
52 'page_id' =>
'exl_from',
53 'target_id' =>
'exl_target_id',
56 'page_id' =>
'il_from',
61 'target_id' =>
'il_target_id',
67 'tl' =>
'templatelinks',
69 'cl' =>
'categorylinks',
70 'exl' =>
'existencelinks',
75 $this->config = $config;
76 $this->linkTargetLookup = $linktargetLookup;
87 $this->assertMapping( $table );
88 $targetId = $this->linkTargetLookup->getLinkTargetId( $linkTarget );
93 return [ self::$mapping[$table][
'target_id'] => $targetId ];
104 public function getQueryInfo(
string $table,
string $joinTable =
'linktarget',
string $joinType =
'JOIN' ) {
105 $this->assertMapping( $table );
106 $targetId = self::$mapping[$table][
'target_id'];
107 if ( $joinTable ===
'linktarget' ) {
108 $tables = [ $table,
'linktarget' ];
110 $tables = [
'linktarget', $table ];
114 'fields' => [ $targetId,
'lt_namespace',
'lt_title' ],
115 'joins' => [ $joinTable => [ $joinType, [
"$targetId = lt_id" ] ] ],
120 $this->assertMapping( $table );
122 return [
'lt_namespace',
'lt_title' ];
125 private function assertMapping(
string $table ) {
126 if ( !isset( self::$mapping[$table] ) ) {
127 throw new InvalidArgumentException(
"LinksMigration doesn't support the $table table yet" );