@@ -464,19 +464,21 @@ public function handleResourceBatchUpdatePreprocess(Event $event): void
464464 return ;
465465 }
466466
467+ /**
468+ * @var \Laminas\Log\Logger $logger
469+ * @var \Common\Stdlib\EasyMeta $easyMeta
470+ * @var \Omeka\Mvc\Controller\Plugin\Messenger $messenger
471+ */
467472 $ services = $ this ->getServiceLocator ();
473+ $ logger = $ services ->get ('Omeka\Logger ' );
474+ $ easyMeta = $ services ->get ('EasyMeta ' );
475+ $ messenger = $ services ->get ('ControllerPluginManager ' )->get ('messenger ' );
468476
469477 if (!empty ($ post ['geometry ' ]['convert_literal_to_coordinates ' ])
470478 && empty ($ post ['geometry ' ]['convert_literal_strict ' ])
471479 /** @see \DataTypeGeometry\View\Helper\DatabaseVersion::supportRegexpExt() */
472480 && !$ services ->get ('ViewHelperManager ' )->get ('databaseVersion ' )->supportRegexpExt ()
473481 ) {
474- /**
475- * @var \Laminas\Log\Logger $logger
476- * @var \Omeka\Mvc\Controller\Plugin\Messenger $messenger
477- */
478- $ logger = $ services ->get ('Omeka\Logger ' );
479- $ messenger = $ services ->get ('ControllerPluginManager ' )->get ('messenger ' );
480482 $ message = new Message ('Your database does not support the function `regexp_substr`. Upgrade it to MariaDB 10.0.5 or MySQL 8.0. ' ); // @translate
481483 $ logger ->err ($ message );
482484 $ messenger ->addError ($ message );
@@ -486,45 +488,53 @@ public function handleResourceBatchUpdatePreprocess(Event $event): void
486488 }
487489
488490 $ manage = $ post ['geometry ' ]['manage_coordinates_features ' ] ?? null ;
489- if (!in_array ($ manage , ['sync ' , 'coordinates_to_features ' , 'features_to_coordinates ' ])) {
491+ if ($ manage && !in_array ($ manage , ['sync ' , 'coordinates_to_features ' , 'features_to_coordinates ' ])) {
490492 unset($ data ['geometry ' ]);
491493 $ event ->setParam ('data ' , $ data );
492494 return ;
493495 }
494496
495- /** @var \Common\Stdlib\EasyMeta $easyMeta */
496- $ easyMeta = $ services ->get ('EasyMeta ' );
497+ if (empty ($ post ['geometry ' ]['from_properties ' ])) {
498+ $ message = new Message ('No source property set for conversion of geometric or geographic data. ' ); // @translate
499+ $ logger ->err ($ message );
500+ $ messenger ->addError ($ message );
501+ unset($ data ['geometry ' ]);
502+ $ event ->setParam ('data ' , $ data );
503+ return ;
504+ } elseif (!in_array ('all ' , $ post ['geometry ' ]['from_properties ' ])
505+ && !$ easyMeta ->propertyIds ($ post ['geometry ' ]['from_properties ' ]
506+ )) {
507+ $ message = new Message ('Invalid source properties set for conversion of geometric or geographic data. ' ); // @translate
508+ $ logger ->err ($ message );
509+ $ messenger ->addError ($ message );
510+ unset($ data ['geometry ' ]);
511+ $ event ->setParam ('data ' , $ data );
512+ return ;
513+ }
497514
498- if (empty ( $ post [ ' geometry ' ][ ' from_properties ' ])
499- || in_array ( ' all ' , $ post ['geometry ' ]['from_properties ' ])
515+ if (in_array ( $ manage , [ ' sync ' , ' features_to_coordinates ' ])
516+ && ! empty ( $ post ['geometry ' ]['to_property ' ])
500517 ) {
501- $ from = null ;
502- } else {
503- $ from = $ easyMeta ->propertyIds ($ post ['geometry ' ]['from_properties ' ]);
504- if (!$ from ) {
505- unset($ data ['geometry ' ]);
506- $ event ->setParam ('data ' , $ data );
507- return ;
508- }
518+ $ message = new Message ('A destination property is needed to convert geometric or geographic data. ' ); // @translate
519+ $ logger ->err ($ message );
520+ $ messenger ->addError ($ message );
521+ unset($ data ['geometry ' ]);
522+ $ event ->setParam ('data ' , $ data );
523+ return ;
509524 }
510525
511- if (empty ($ post ['geometry ' ]['to_property ' ])) {
512- $ to = null ;
513- } else {
526+ if (!empty ($ post ['geometry ' ]['to_property ' ])) {
514527 $ to = $ easyMeta ->propertyId ($ post ['geometry ' ]['to_property ' ]);
515528 if (!$ to ) {
529+ $ message = new Message ('Invalid destination property set for conversion of geometric or geographic data. ' ); // @translate
530+ $ logger ->err ($ message );
531+ $ messenger ->addError ($ message );
516532 unset($ data ['geometry ' ]);
517533 $ event ->setParam ('data ' , $ data );
518534 return ;
519535 }
520536 }
521537
522- if (in_array ($ manage , ['sync ' , 'features_to_coordinates ' ]) && !$ to ) {
523- unset($ data ['geometry ' ]);
524- $ event ->setParam ('data ' , $ data );
525- return ;
526- }
527-
528538 $ data ['geometry ' ] = $ post ['geometry ' ];
529539 $ data ['geometry ' ]['convert_literal_to_coordinates ' ] = !empty ($ data ['geometry ' ]['convert_literal_to_coordinates ' ]);
530540 $ data ['geometry ' ]['convert_literal_order ' ] = $ data ['geometry ' ]['convert_literal_order ' ] ?? null ;
0 commit comments