19 declare(strict_types=1);
28 int $current_datestamp,
29 array $returns_on_query
32 public array $exposed_queries = [];
35 protected int $current_datestamp,
36 protected array $returns_on_query
40 protected function query(
string $query): \Generator
42 $this->exposed_queries[] = $query;
43 yield
from $this->returns_on_query;
46 protected function manipulate(
string $query):
void 48 $this->exposed_queries[] = $query;
51 protected function quoteInteger(
int $integer):
string 53 return '~int:' . $integer .
'~';
56 protected function quoteString(
string $string):
string 58 return '~string:' . $string .
'~';
61 protected function quoteClob(
string $string):
string 63 return '~clob:' . $string .
'~';
66 protected function getCurrentDatestamp():
int 68 return $this->current_datestamp;
76 $this->assertXmlStringEqualsXmlString(
84 $this->assertSame((
int) $data[
'obj_id'], $infos->
objID());
85 $this->assertSame($data[
'identifier'], $infos->
identfifier());
86 $this->assertSame((
int) $data[
'datestamp'], $infos->
datestamp()->getTimestamp());
93 'identifier' =>
'id32',
94 'datestamp' =>
'123456',
95 'metadata' =>
'<content>something</content>' 99 'identifier' =>
'id456',
100 'datestamp' =>
'9345653',
101 'metadata' =>
'<content><sub1>hello</sub1><sub2>world</sub2></content>' 105 'identifier' =>
'id1',
106 'datestamp' =>
'65656565',
107 'metadata' =>
'<content>something else</content>' 109 $repo = $this->
getRepository(0, [$record_1, $record_2, $record_3]);
111 $records = iterator_to_array($repo->getRecords());
114 [
'SELECT * FROM il_meta_oer_exposed ORDER BY obj_id'],
115 $repo->exposed_queries
117 $this->assertCount(3, $records);
127 'identifier' =>
'id32',
128 'datestamp' =>
'123456',
129 'metadata' =>
'<content>something</content>' 133 'identifier' =>
'id456',
134 'datestamp' =>
'9345653',
135 'metadata' =>
'<content><sub1>hello</sub1><sub2>world</sub2></content>' 139 $records = iterator_to_array($repo->getRecords(
144 [
'SELECT *' .
' FROM il_meta_oer_exposed WHERE datestamp >= ~int:1723994~ ORDER BY obj_id'],
145 $repo->exposed_queries
147 $this->assertCount(2, $records);
156 'identifier' =>
'id456',
157 'datestamp' =>
'9345653',
158 'metadata' =>
'<content><sub1>hello</sub1><sub2>world</sub2></content>' 162 'identifier' =>
'id1',
163 'datestamp' =>
'65656565',
164 'metadata' =>
'<content>something else</content>' 168 $records = iterator_to_array($repo->getRecords(
174 [
'SELECT *' .
' FROM il_meta_oer_exposed WHERE datestamp <= ~int:1763994~ ORDER BY obj_id'],
175 $repo->exposed_queries
177 $this->assertCount(2, $records);
186 'identifier' =>
'id456',
187 'datestamp' =>
'9345653',
188 'metadata' =>
'<content><sub1>hello</sub1><sub2>world</sub2></content>' 192 $records = iterator_to_array($repo->getRecords(
198 [
'SELECT *' .
' FROM il_meta_oer_exposed WHERE datestamp >= ~int:1723994~ AND datestamp <= ~int:1763994~ ORDER BY obj_id'],
199 $repo->exposed_queries
201 $this->assertCount(1, $records);
209 'identifier' =>
'id456',
210 'datestamp' =>
'9345653',
211 'metadata' =>
'<content><sub1>hello</sub1><sub2>world</sub2></content>' 215 $records = iterator_to_array($repo->getRecords(
222 [
'SELECT *' .
' FROM il_meta_oer_exposed ORDER BY obj_id LIMIT ~int:5~'],
223 $repo->exposed_queries
225 $this->assertCount(1, $records);
233 'identifier' =>
'id456',
234 'datestamp' =>
'9345653',
235 'metadata' =>
'<content><sub1>hello</sub1><sub2>world</sub2></content>' 239 $records = iterator_to_array($repo->getRecords(
247 [
'SELECT *' .
' FROM il_meta_oer_exposed ORDER BY obj_id LIMIT ~int:' . PHP_INT_MAX .
'~ OFFSET ~int:5~'],
248 $repo->exposed_queries
250 $this->assertCount(1, $records);
258 'identifier' =>
'id456',
259 'datestamp' =>
'9345653',
260 'metadata' =>
'<content><sub1>hello</sub1><sub2>world</sub2></content>' 264 $records = iterator_to_array($repo->getRecords(
272 [
'SELECT *' .
' FROM il_meta_oer_exposed ORDER BY obj_id LIMIT ~int:5~ OFFSET ~int:10~'],
273 $repo->exposed_queries
275 $this->assertCount(1, $records);
283 'identifier' =>
'id32',
284 'datestamp' =>
'123456' 288 'identifier' =>
'id456',
289 'datestamp' =>
'9345653' 293 'identifier' =>
'id1',
294 'datestamp' =>
'65656565' 296 $repo = $this->
getRepository(0, [$record_1, $record_2, $record_3]);
298 $records = iterator_to_array($repo->getRecordInfos());
301 [
'SELECT obj_id, identifier, datestamp FROM il_meta_oer_exposed ORDER BY obj_id'],
302 $repo->exposed_queries
304 $this->assertCount(3, $records);
314 'identifier' =>
'id32',
315 'datestamp' =>
'123456' 319 'identifier' =>
'id456',
320 'datestamp' =>
'9345653' 324 $records = iterator_to_array($repo->getRecordInfos(
329 [
'SELECT obj_id, identifier, datestamp' .
' FROM il_meta_oer_exposed WHERE datestamp >= ~int:1723994~ ORDER BY obj_id'],
330 $repo->exposed_queries
332 $this->assertCount(2, $records);
341 'identifier' =>
'id456',
342 'datestamp' =>
'9345653' 346 'identifier' =>
'id1',
347 'datestamp' =>
'65656565' 351 $records = iterator_to_array($repo->getRecordInfos(
357 [
'SELECT obj_id, identifier, datestamp' .
' FROM il_meta_oer_exposed WHERE datestamp <= ~int:1763994~ ORDER BY obj_id'],
358 $repo->exposed_queries
360 $this->assertCount(2, $records);
369 'identifier' =>
'id456',
370 'datestamp' =>
'9345653' 374 $records = iterator_to_array($repo->getRecordInfos(
380 [
'SELECT obj_id, identifier, datestamp' .
' FROM il_meta_oer_exposed WHERE datestamp >= ~int:1723994~ AND datestamp <= ~int:1763994~ ORDER BY obj_id'],
381 $repo->exposed_queries
383 $this->assertCount(1, $records);
391 'identifier' =>
'id456',
392 'datestamp' =>
'9345653' 396 $records = iterator_to_array($repo->getRecordInfos(
403 [
'SELECT obj_id, identifier, datestamp' .
' FROM il_meta_oer_exposed ORDER BY obj_id LIMIT ~int:5~'],
404 $repo->exposed_queries
406 $this->assertCount(1, $records);
414 'identifier' =>
'id456',
415 'datestamp' =>
'9345653' 419 $records = iterator_to_array($repo->getRecordInfos(
427 [
'SELECT obj_id, identifier, datestamp' .
' FROM il_meta_oer_exposed ORDER BY obj_id LIMIT ~int:' . PHP_INT_MAX .
'~ OFFSET ~int:5~'],
428 $repo->exposed_queries
430 $this->assertCount(1, $records);
438 'identifier' =>
'id456',
439 'datestamp' =>
'9345653' 443 $records = iterator_to_array($repo->getRecordInfos(
451 [
'SELECT obj_id, identifier, datestamp' .
' FROM il_meta_oer_exposed ORDER BY obj_id LIMIT ~int:5~ OFFSET ~int:10~'],
452 $repo->exposed_queries
454 $this->assertCount(1, $records);
462 $count = $repo->getRecordCount();
465 [
'SELECT COUNT(*) AS num FROM il_meta_oer_exposed'],
466 $repo->exposed_queries
468 $this->assertSame(4, $count);
475 $count = $repo->getRecordCount(
480 [
'SELECT' .
' COUNT(*) AS num FROM il_meta_oer_exposed WHERE datestamp >= ~int:1723994~'],
481 $repo->exposed_queries
483 $this->assertSame(3, $count);
490 $count = $repo->getRecordCount(
496 [
'SELECT' .
' COUNT(*) AS num FROM il_meta_oer_exposed WHERE datestamp <= ~int:1763994~'],
497 $repo->exposed_queries
499 $this->assertSame(3, $count);
506 $count = $repo->getRecordCount(
512 [
'SELECT' .
' COUNT(*) AS num FROM il_meta_oer_exposed WHERE datestamp >= ~int:1723994~ AND datestamp <= ~int:1763994~'],
513 $repo->exposed_queries
515 $this->assertSame(2, $count);
520 $repo = $this->
getRepository(0, [[
'earliest' =>
'1795857']]);
522 $earliest = $repo->getEarliestDatestamp();
525 [
'SELECT MIN(datestamp) AS earliest FROM il_meta_oer_exposed'],
526 $repo->exposed_queries
528 $this->assertSame(1795857, $earliest->getTimestamp());
535 'identifier' =>
'id456',
536 'datestamp' =>
'9345653',
537 'metadata' =>
'<content><sub1>hello</sub1><sub2>world</sub2></content>' 541 $res = $repo->getRecordByIdentifier(
'id456');
544 [
'SELECT * FROM il_meta_oer_exposed WHERE identifier = ~string:id456~'],
545 $repo->exposed_queries
547 $this->assertNotNull(
$res);
555 $res = $repo->getRecordByIdentifier(
'id456');
558 [
'SELECT * FROM il_meta_oer_exposed WHERE identifier = ~string:id456~'],
559 $repo->exposed_queries
561 $this->assertNull(
$res);
568 $exists = $repo->doesRecordWithIdentifierExist(
'some id');
571 [
'SELECT COUNT(*) AS num FROM il_meta_oer_exposed WHERE identifier = ~string:some id~'],
572 $repo->exposed_queries
574 $this->assertTrue($exists);
581 $exists = $repo->doesRecordWithIdentifierExist(
'some id');
584 [
'SELECT COUNT(*) AS num FROM il_meta_oer_exposed WHERE identifier = ~string:some id~'],
585 $repo->exposed_queries
587 $this->assertFalse($exists);
594 $exists = $repo->doesRecordExistForObjID(43);
597 [
'SELECT ' .
'COUNT(*) AS num FROM il_meta_oer_exposed WHERE obj_id = ~int:43~'],
598 $repo->exposed_queries
600 $this->assertTrue($exists);
607 $exists = $repo->doesRecordExistForObjID(43);
610 [
'SELECT ' .
'COUNT(*) AS num FROM il_meta_oer_exposed WHERE obj_id = ~int:43~'],
611 $repo->exposed_queries
613 $this->assertFalse($exists);
618 $xml = new \DOMDocument();
619 $xml->loadXML(
'<content><sub1>hello</sub1><sub2>world</sub2></content>');
631 'INSERT INTO il_meta_oer_exposed (obj_id, identifier, datestamp, metadata) VALUES (' .
632 '~int:32~, ~string:id32~, ~int:17646362~, ~clob:' . $xml->saveXML() .
'~)' 634 $repo->exposed_queries
640 $xml = new \DOMDocument();
641 $xml->loadXML(
'<content><sub1>hello</sub1><sub2>world</sub2></content>');
652 'UPDATE il_meta_oer_exposed SET metadata = ~clob:' . $xml->saveXML() .
'~, ' .
653 'datestamp = ~int:17646362~ WHERE obj_id = ~int:32~' 655 $repo->exposed_queries
663 $repo->deleteRecord(32);
666 [
'DELETE ' .
'FROM il_meta_oer_exposed WHERE obj_id = ~int:32~'],
667 $repo->exposed_queries
while($session_entry=$r->fetchRow(ilDBConstants::FETCHMODE_ASSOC)) return null
__construct()
Constructor setup ILIAS global object public.