|
12 | 12 | *
|
13 | 13 | * @var \Omeka\Api\Manager $api
|
14 | 14 | * @var \Omeka\Settings\Settings $settings
|
| 15 | + * @var \Common\Stdlib\EasyMeta $easyMeta |
15 | 16 | * @var \Doctrine\DBAL\Connection $connection
|
16 | 17 | * @var \Doctrine\ORM\EntityManager $entityManager
|
17 | 18 | * @var \Omeka\Mvc\Controller\Plugin\Messenger $messenger
|
|
20 | 21 | $api = $plugins->get('api');
|
21 | 22 | $settings = $services->get('Omeka\Settings');
|
22 | 23 | $translate = $plugins->get('translate');
|
| 24 | +$urlPlugin = $plugins->get('url'); |
| 25 | +$easyMeta = $services->get('EasyMeta'); |
23 | 26 | $connection = $services->get('Omeka\Connection');
|
24 | 27 | $messenger = $plugins->get('messenger');
|
25 | 28 | $entityManager = $services->get('Omeka\EntityManager');
|
|
355 | 358 | );
|
356 | 359 | $messenger->addWarning($message);
|
357 | 360 | }
|
| 361 | + |
| 362 | + |
| 363 | +if (version_compare($oldVersion, '3.6.20', '<')) { |
| 364 | + $structureProperty = $settings->get('iiifserver_manifest_structures_property'); |
| 365 | + $structurePropertyId = $easyMeta->propertyId($structureProperty); |
| 366 | + if ($structurePropertyId) { |
| 367 | + // Module classes are not available during upgrade. |
| 368 | + $qb = $connection->createQueryBuilder(); |
| 369 | + $qb |
| 370 | + ->select('COUNT(value.id)') |
| 371 | + ->from('value', 'value') |
| 372 | + ->innerJoin('value', 'item', 'item', 'item.id = value.resource_id') |
| 373 | + ->where('value.property_id = ' . $structurePropertyId) |
| 374 | + ->andWhere('value.value IS NOT NULL') |
| 375 | + ->andWhere('value.value != ""') |
| 376 | + ->orderBy('value.id', 'asc'); |
| 377 | + $structures = $connection->executeQuery($qb)->fetchOne(); |
| 378 | + if ($structures) { |
| 379 | + require_once dirname(__DIR__, 2) . '/src/Job/UpgradeStructures.php'; |
| 380 | + $dispatcher = $services->get(\Omeka\Job\Dispatcher::class); |
| 381 | + $job = $dispatcher->dispatch(\IiifServer\Job\UpgradeStructures::class); |
| 382 | + $message = new PsrMessage( |
| 383 | + 'A job was launched to upgrade the format of "table of contents". Replaced tocs will be stored in logs ({link}job #{job_id}{link_end}, {link_log}logs{link_end}).', // @translate' // @translate |
| 384 | + [ |
| 385 | + 'link' => sprintf('<a href="%s">', htmlspecialchars($urlPlugin->fromRoute('admin/id', ['controller' => 'job', 'id' => $job->getId()]))), |
| 386 | + 'job_id' => $job->getId(), |
| 387 | + 'link_end' => '</a>', |
| 388 | + 'link_log' => class_exists('Log\Entity\Log') |
| 389 | + ? sprintf('<a href="%1$s">', $urlPlugin->fromRoute('admin/default', ['controller' => 'log'], ['query' => ['job_id' => $job->getId()]])) |
| 390 | + : sprintf('<a href="%1$s">', $urlPlugin->fromRoute('admin/id', ['controller' => 'job', 'action' => 'log', 'id' => $job->getId()])), |
| 391 | + ] |
| 392 | + ); |
| 393 | + $message->setEscapeHtml(false); |
| 394 | + $messenger->addWarning($message); |
| 395 | + } |
| 396 | + } |
| 397 | +} |
0 commit comments