Made Offers a bit more robust and operation atomic
This commit is contained in:
parent
af506435ac
commit
2da8da6b37
@ -1,5 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
|
use Joomla\CMS\Factory;
|
||||||
|
|
||||||
// No direct access.
|
// No direct access.
|
||||||
defined('_JEXEC') or die;
|
defined('_JEXEC') or die;
|
||||||
|
|
||||||
@ -162,22 +164,35 @@ class CommonClubsModelClub extends AbstractCommonClubsModel
|
|||||||
$offerAssocFactory = new CommonClubsModelFactoryOfferassoc();
|
$offerAssocFactory = new CommonClubsModelFactoryOfferassoc();
|
||||||
$offerFactory = new CommonClubsModelFactoryOffer();
|
$offerFactory = new CommonClubsModelFactoryOffer();
|
||||||
|
|
||||||
foreach($delIds as $id)
|
$db = Factory::getDbo();
|
||||||
|
$db->transactionStart(true);
|
||||||
|
|
||||||
|
try
|
||||||
{
|
{
|
||||||
$delId = (int) $id;
|
foreach($delIds as $id)
|
||||||
$delObjs = $offerAssocFactory->loadElements("clubid = {$this->getId()} AND offerid = $delId");
|
{
|
||||||
foreach($delObjs as $o)
|
$delId = (int) $id;
|
||||||
$o->delete();
|
$delObjs = $offerAssocFactory->loadElements("clubid = {$this->getId()} AND offerid = $delId");
|
||||||
|
foreach($delObjs as $o)
|
||||||
|
$o->delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach($newIds as $id)
|
||||||
|
{
|
||||||
|
$newId = (int) $id;
|
||||||
|
$o = $offerAssocFactory->createNew();
|
||||||
|
$o->setOffer($offerFactory->loadById($newId));
|
||||||
|
$o->setClub($this);
|
||||||
|
$o->save();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (Exception $ex)
|
||||||
|
{
|
||||||
|
$db->transactionRollback(true);
|
||||||
|
throw $ex;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach($newIds as $id)
|
$db->transactionCommit(true);
|
||||||
{
|
|
||||||
$newId = (int) $id;
|
|
||||||
$o = $offerAssocFactory->createNew();
|
|
||||||
$o->setOffer($offerFactory->loadById($newId));
|
|
||||||
$o->setClub($this);
|
|
||||||
$o->save();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getUsers()
|
public function getUsers()
|
||||||
|
@ -349,8 +349,14 @@ class ClubsHelperControllerClub extends AbstractClubsHelperController
|
|||||||
|
|
||||||
// TODO ACL needed
|
// TODO ACL needed
|
||||||
|
|
||||||
$this->club->setOfferIds($ids);
|
try
|
||||||
$this->club->save();
|
{
|
||||||
|
$this->club->setOfferIds($ids);
|
||||||
|
}
|
||||||
|
catch(ElementNotFoundException $ex)
|
||||||
|
{
|
||||||
|
throw new InvalidUserDataException('Es gab ein Problem mit der Eingabe. Bitte Seite neu laden und Daten erneut eintragen.');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user