23 public function __construct(
27 $this->translatablePageStore = $translatablePageStore;
28 $this->messageBundleStore = $messageBundleStore;
34 return TranslatablePage::newFromTitle( $title );
35 } elseif ( MessageBundle::isSourcePage( $title ) ) {
44 $bundle = $this->getBundle( $title );
49 throw new InvalidArgumentException(
"{$title->getPrefixedText()} is not a TranslatableBundle" );
52 public function getBundleFromClass( Title $title,
string $bundleType ): TranslatableBundle {
53 if ( $bundleType === MessageBundle::class ) {
54 return new MessageBundle( $title );
56 return TranslatablePage::newFromTitle( $title );
60 public function getPageMoveLogger( TranslatableBundle $bundle ): PageMoveLogger {
61 if ( $bundle instanceof TranslatablePage ) {
62 return new PageMoveLogger( $bundle->getTitle(),
'pagetranslation' );
63 } elseif ( $bundle instanceof MessageBundle ) {
64 return new PageMoveLogger( $bundle->getTitle(),
'messagebundle' );
67 throw new InvalidArgumentException(
'Unknown TranslatableBundle type: ' . get_class( $bundle ) );
70 public function getPageDeleteLogger( TranslatableBundle $bundle ): PageDeleteLogger {
71 if ( $bundle instanceof TranslatablePage ) {
72 return new PageDeleteLogger( $bundle->getTitle(),
'pagetranslation' );
73 } elseif ( $bundle instanceof MessageBundle ) {
74 return new PageDeleteLogger( $bundle->getTitle(),
'messagebundle' );
77 throw new InvalidArgumentException(
'Unknown TranslatableBundle type: ' . get_class( $bundle ) );
80 public function getStore( TranslatableBundle $bundle ): TranslatableBundleStore {
81 if ( $bundle instanceof TranslatablePage ) {
82 return $this->translatablePageStore;
83 } elseif ( $bundle instanceof MessageBundle ) {
84 return $this->messageBundleStore;
87 throw new InvalidArgumentException(
"Unknown TranslatableBundle type: " . get_class( $bundle ) );