Skip to content

Commit 1b6aeff

Browse files
authored
Merge pull request #54 from UIUCLibrary/i53
I53
2 parents e8a40cd + 10d04ac commit 1b6aeff

File tree

1 file changed

+68
-50
lines changed

1 file changed

+68
-50
lines changed

Module.php

Lines changed: 68 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -1362,72 +1362,90 @@ public function siteUpdate(Event $event)
13621362
$operation = $request->getOperation();
13631363
$error_store = $event->getParam('errorStore');
13641364

1365-
if ($operation==='update' && array_key_exists('team', $request->getContent())){
13661365

1367-
//Add and remove TeamSites
1368-
//From each of those teams,
1369-
// update TeamReasource=>Item->ItemSite,
1370-
// update TeamUser=>User->DefaultSites, update
1366+
//entity not validated till after this event, so to avoid flushing them with invalid changes, validate here
1367+
$site_entity = new SiteAdapter();
13711368

1369+
//point to service locator
1370+
$site_entity->setServiceLocator($this->getServiceLocator());
13721371

1373-
//teams from the form
1374-
$form_teams = $request->getContent()['team'];
1375-
$site_id = $request->getId();
1372+
//validate hydrated entity
1373+
$site_entity->validateEntity($entity, $error_store);
1374+
if ($error_store->hasErrors()) {
1375+
$validationException = new Exception\ValidationException;
1376+
$validationException->setErrorStore($error_store);
1377+
throw $validationException;
1378+
} else {
13761379

1377-
//teams that site is a member of
1378-
$team_sites = $em->getRepository('Teams\Entity\TeamSite')->findBy(['site'=>$site_id]);
1380+
if ($operation === 'update' && array_key_exists('team', $request->getContent())) {
13791381

1380-
//array of existing teams ids
1381-
$existing_teams = array_map(function ($team_site) {return $team_site->getTeam()->getId();}, $team_sites);
1382+
//Add and remove TeamSites
1383+
//From each of those teams,
1384+
// update TeamReasource=>Item->ItemSite,
1385+
// update TeamUser=>User->DefaultSites, update
13821386

1383-
$added_teams = array_diff($form_teams, $existing_teams);
1384-
$removed_teams = array_diff($existing_teams, $form_teams);
13851387

1386-
foreach ($team_sites as $team_site):
1387-
if (in_array($team_site->getTeam()->getId(), $removed_teams)){
1388-
$em->remove($team_site);
1389-
}
1390-
endforeach;
1391-
$em->flush();
1388+
//teams from the form
1389+
$form_teams = $request->getContent()['team'];
1390+
$site_id = $request->getId();
13921391

1393-
//add teams to the site for each new team listed in the form
1394-
foreach ($added_teams as $team):
1395-
$team_site = new TeamSite(
1396-
$em->getRepository('Teams\Entity\Team')->findOneBy(['id' => $team]),
1397-
$em->getRepository('Omeka\Entity\Site')->findOneBy(['id' => $site_id])
1398-
);
1399-
$em->persist($team_site);
1400-
endforeach;
1401-
$em->flush();
1392+
//teams that site is a member of
1393+
$team_sites = $em->getRepository('Teams\Entity\TeamSite')->findBy(['site' => $site_id]);
14021394

1403-
//get any items or users that need to be updated
1404-
//by either removing or adding item-sits or user default site
1405-
$delta_item_site = [];
1406-
$delta_user_site = [];
1407-
foreach (array_merge($added_teams, $removed_teams) as $team_id){
1408-
$delta_item_site[] = $em->getRepository('Teams\Entity\Team')
1409-
->findOneBy(['id'=>$team_id])
1410-
->getTeamResources();
1411-
$delta_user_site[] = $em->getRepository('Teams\Entity\Team')
1412-
->findOneBy(['id'=>$team_id])
1413-
->getTeamUsers();
1414-
}
1395+
//array of existing teams ids
1396+
$existing_teams = array_map(function ($team_site) {
1397+
return $team_site->getTeam()->getId();
1398+
}, $team_sites);
1399+
1400+
$added_teams = array_diff($form_teams, $existing_teams);
1401+
$removed_teams = array_diff($existing_teams, $form_teams);
14151402

1416-
$logger = $this->getServiceLocator()->get('Omeka\Logger');
1403+
foreach ($team_sites as $team_site):
1404+
if (in_array($team_site->getTeam()->getId(), $removed_teams)) {
1405+
$em->remove($team_site);
1406+
}
1407+
endforeach;
1408+
$em->flush();
14171409

1418-
foreach ($delta_item_site as $team_item_collection){
1419-
foreach ($team_item_collection as $team_item){
1420-
$this->updateItemSites($team_item->getResource()->getId());
1410+
//add teams to the site for each new team listed in the form
1411+
foreach ($added_teams as $team):
1412+
$team_site = new TeamSite(
1413+
$em->getRepository('Teams\Entity\Team')->findOneBy(['id' => $team]),
1414+
$em->getRepository('Omeka\Entity\Site')->findOneBy(['id' => $site_id])
1415+
);
1416+
$em->persist($team_site);
1417+
endforeach;
1418+
$em->flush();
1419+
1420+
//get any items or users that need to be updated
1421+
//by either removing or adding item-sits or user default site
1422+
$delta_item_site = [];
1423+
$delta_user_site = [];
1424+
foreach (array_merge($added_teams, $removed_teams) as $team_id) {
1425+
$delta_item_site[] = $em->getRepository('Teams\Entity\Team')
1426+
->findOneBy(['id' => $team_id])
1427+
->getTeamResources();
1428+
$delta_user_site[] = $em->getRepository('Teams\Entity\Team')
1429+
->findOneBy(['id' => $team_id])
1430+
->getTeamUsers();
14211431
}
1422-
}
14231432

1424-
//update current team users to include new site in their default sites
1425-
foreach ($delta_user_site as $team_users):
1426-
foreach ($team_users as $team_user):
1433+
$logger = $this->getServiceLocator()->get('Omeka\Logger');
1434+
1435+
foreach ($delta_item_site as $team_item_collection) {
1436+
foreach ($team_item_collection as $team_item) {
1437+
$this->updateItemSites($team_item->getResource()->getId());
1438+
}
1439+
}
1440+
1441+
//update current team users to include new site in their default sites
1442+
foreach ($delta_user_site as $team_users):
1443+
foreach ($team_users as $team_user):
14271444
$user_id = $team_user->getUser()->getId();
14281445
$this->updateUserSites($user_id);
1446+
endforeach;
14291447
endforeach;
1430-
endforeach;
1448+
}
14311449
}
14321450
}
14331451

0 commit comments

Comments
 (0)