@@ -308,8 +308,7 @@ public function create(Request $request)
308308 $ resourceEntity = $ this ->getEntityManager ()->getRepository ('Omeka\Entity\Resource ' )->findOneBy (['id ' =>$ resource ]);
309309 $ teamResource = new TeamResource ($ teamEntity , $ resourceEntity );
310310 if ($ request ->getOption ('recursive ' )){
311- $ logger = $ this ->getServiceLocator ()->get ('Omeka\Logger ' );
312- $ logger ->err ('recursive in the adapter ' );
311+ $ syncSites = (bool )$ request ->getOption ('syncSites ' );
313312 $ mappedEntity = $ this ->findMappedEntity ($ request ->getValue ('resource ' ));
314313 //item sets => contain items
315314 if ($ mappedEntity ->getResourceName () === 'item_sets ' ) {
@@ -334,7 +333,10 @@ public function create(Request $request)
334333 'resource ' => $ resourceId
335334 ],
336335 [],
337- ['recursive ' =>true ]
336+ [
337+ 'recursive ' =>true ,
338+ 'syncSites ' => $ syncSites
339+ ]
338340 );
339341 }
340342 }
@@ -374,6 +376,22 @@ public function create(Request $request)
374376 }
375377
376378
379+ if ($ request ->getOption ('syncSites ' )){
380+ $ sites = $ this ->getServiceLocator ()->get ('Omeka\ApiManager ' )
381+ ->search ('team-site ' , ['team ' => $ team ], ['returnScalar ' => 'site ' ])
382+ ->getContent ();
383+
384+ if (method_exists ($ resourceEntity , 'getSites ' )) {
385+ $ siteAdapter = $ this ->getServiceLocator ()->get ('Omeka\ApiAdapterManager ' )->get ('sites ' );
386+ $ item_sites = $ resourceEntity ->getSites ();
387+ foreach ($ sites as $ site ) {
388+ $ add_site = $ siteAdapter ->findEntity ($ site );
389+ $ item_sites ->set ($ add_site ->getId (), $ add_site );
390+ }
391+ }
392+
393+ }
394+
377395 $ this ->getEntityManager ()->persist ($ teamResource );
378396 if ($ request ->getOption ('flushEntityManager ' , true )) {
379397 $ this ->getEntityManager ()->flush ();
@@ -403,8 +421,8 @@ public function batchUpdate(Request $request)
403421
404422 public function delete (Request $ request )
405423 {
406-
407424 if ($ request ->getOption ('recursive ' )){
425+ $ syncSites = (bool )($ request ->getOption ('syncSites ' ));
408426 $ mappedEntity = $ this ->findMappedEntity ($ request ->getValue ('resource ' ));
409427 //item sets => contain items
410428 if ($ mappedEntity ->getResourceName () === 'item_sets ' ) {
@@ -425,7 +443,10 @@ public function delete(Request $request)
425443 'team ' => $ request ->getValue ('team ' ),
426444 'resource ' => $ resourceId
427445 ],
428- ['recursive ' =>true ]);
446+ [
447+ 'recursive ' => true ,
448+ 'syncSites ' => $ syncSites ,
449+ ]);
429450 }
430451 }
431452 }
@@ -465,6 +486,26 @@ public function delete(Request $request)
465486 if (count ($ exists ) > 0 ) {
466487 $ entity = $ this ->deleteEntity ($ request );
467488 }
489+
490+ if ($ request ->getOption ('syncSites ' )){
491+ $ sites = $ this ->getServiceLocator ()->get ('Omeka\ApiManager ' )
492+ ->search ('team-site ' , ['team ' => $ request ->getValue ('team ' )], ['returnScalar ' => 'site ' ])
493+ ->getContent ();
494+ $ resourceEntity = $ this ->getEntityManager ()
495+ ->getRepository ('Omeka\Entity\Resource ' )
496+ ->findOneBy (['id ' =>$ request ->getValue ('resource ' )]);
497+
498+ if (method_exists ($ resourceEntity , 'getSites ' )) {
499+ $ item_sites = $ resourceEntity ->getSites ();
500+ foreach ($ sites as $ site ) {
501+ $ target_site = $ item_sites ->get ($ site );
502+ $ item_sites ->removeElement ($ target_site );
503+ }
504+ }
505+
506+ }
507+
508+
468509 if ($ request ->getOption ('flushEntityManager ' , true )) {
469510 $ this ->getEntityManager ()->flush ();
470511 }
0 commit comments