2declare( strict_types = 1 );
4namespace MediaWiki\Extension\Translate\TranslatorSandbox;
6use MediaWiki\Title\Title;
7use MediaWiki\User\User;
8use Wikimedia\Rdbms\IDatabase;
19 public function __construct(
20 private readonly IDatabase $db,
21 private readonly
string $dbTable =
'translate_stash',
26 $res = $this->db->newSelectQueryBuilder()
27 ->select( [
'ts_namespace',
'ts_title',
'ts_value',
'ts_metadata' ] )
28 ->from( $this->dbTable )
29 ->where( [
'ts_user' => $user->getId() ] )
30 ->caller( __METHOD__ )
34 foreach ( $res as $row ) {
37 Title::makeTitle( (
int)$row->ts_namespace, $row->ts_title ),
39 unserialize( $row->ts_metadata )
48 'ts_user' => $item->getUser()->getId(),
49 'ts_title' => $item->getTitle()->getDBkey(),
50 'ts_namespace' => $item->getTitle()->getNamespace(),
51 'ts_value' => $item->getValue(),
52 'ts_metadata' => serialize( $item->getMetadata() ),
55 $this->db->newReplaceQueryBuilder()
56 ->replaceInto( $this->dbTable )
57 ->uniqueIndexFields( [
'ts_user',
'ts_namespace',
'ts_title' ] )
59 ->caller( __METHOD__ )
64 $this->db->newDeleteQueryBuilder()
65 ->deleteFrom( $this->dbTable )
66 ->where( [
'ts_user' => $user->getId() ] )
67 ->caller( __METHOD__ )