2declare( strict_types = 1 );
4namespace MediaWiki\Extension\Translate\TranslatorSandbox;
6use MediaWiki\Title\Title;
7use MediaWiki\User\User;
8use Wikimedia\Rdbms\IDatabase;
23 public function __construct( IDatabase $db,
string $table =
'translate_stash' ) {
25 $this->dbTable = $table;
29 $res = $this->db->newSelectQueryBuilder()
30 ->select( [
'ts_namespace',
'ts_title',
'ts_value',
'ts_metadata' ] )
31 ->from( $this->dbTable )
32 ->where( [
'ts_user' => $user->getId() ] )
33 ->caller( __METHOD__ )
37 foreach ( $res as $row ) {
40 Title::makeTitle( (
int)$row->ts_namespace, $row->ts_title ),
42 unserialize( $row->ts_metadata )
51 'ts_user' => $item->getUser()->getId(),
52 'ts_title' => $item->getTitle()->getDBkey(),
53 'ts_namespace' => $item->getTitle()->getNamespace(),
54 'ts_value' => $item->getValue(),
55 'ts_metadata' => serialize( $item->getMetadata() ),
58 $this->db->newReplaceQueryBuilder()
59 ->replaceInto( $this->dbTable )
60 ->uniqueIndexFields( [
'ts_user',
'ts_namespace',
'ts_title' ] )
62 ->caller( __METHOD__ )
67 $this->db->newDeleteQueryBuilder()
68 ->deleteFrom( $this->dbTable )
69 ->where( [
'ts_user' => $user->getId() ] )
70 ->caller( __METHOD__ )