Refactor basket_adapter

This commit is contained in:
Romain Neutron
2011-12-27 14:07:09 +01:00
parent 0e1e62ccb9
commit 9d965538b4
3 changed files with 96 additions and 113 deletions

View File

@@ -330,7 +330,7 @@ return call_user_func(
}
)->assert('entry_id', '\d+');
$app->get('/ajax/LOAD_REPORT/{ssel_id}/', function(Silex\Application $app, $ssel_id) use ($appbox, $app)
$app->get('/ajax/LOAD_REPORT/{ssel_id}/', function(Silex\Application $app, $ssel_id)
{
$twig = new supertwig();
$twig->addFilter(array('nl2br' => 'nl2br'));
@@ -339,7 +339,14 @@ return call_user_func(
$template = 'lightbox/basket_content_report.twig';
$basket = basket_adapter::getInstance($appbox, $ssel_id, $appbox->get_session()->get_usr_id());
$em = $app['Core']->getEntityManager();
$repository = $em->getRepository('\Entities\Basket');
/* @var $repository \Repositories\BasketRepository */
$basket = $repository->findUserBasket(
$ssel_id
, $app['Core']->getAuthenticatedUser()
);
$response = new Response($twig->render($template, array('basket' => $basket)));
$response->setCharset('UTF-8');
@@ -392,7 +399,14 @@ return call_user_func(
$app->post('/ajax/SET_ELEMENT_AGREEMENT/{sselcont_id}/', function(Silex\Application $app, $sselcont_id)
{
$request = $app['request'];
$agreement = (int) $request->get('agreement');
$agreement = $request->get('agreement');
if (is_null($agreement))
{
throw new \Exception_BadRequest();
}
$agreement = $agreement > 0;
$ret = array(
'error' => true,
@@ -400,24 +414,37 @@ return call_user_func(
'datas' => _('Erreur lors de la mise a jour des donnes ')
);
try
{
$appbox = appbox::get_instance();
$em = $app['Core']->getEntityManager();
$repository = $em->getRepository('\Entities\BasketElement');
$basket_element = basket_element_adapter::getInstance($sselcont_id);
$basket_element->set_agreement($agreement);
$basket = basket_adapter::getInstance($appbox, $basket_element->get_ssel_id(), $appbox->get_session()->get_usr_id());
/* @var $repository \Repositories\BasketElementRepository */
$basket_element = $repository->findUserElement(
$sselcont_id
, $app['Core']->getAuthenticatedUser()
);
/* @var $basket_element \Entities\BasketElement */
$basket_element->setAgreement($agreement);
$user = $Core->getAuthenticatedUser();
$participânt = $basket_element->getBasket()
->getValidation()
->getParticipant($user);
if ($participant->getIsConfirmed() === true)
{
$releasable = false;
}
else
{
$releasable = _('Do you want to send your report ?');
}
$ret = array(
'error' => false
, 'datas' => ''
, 'releasable' => $basket->is_releasable() ? _('Do you want to send your report ?') : false
, 'releasable' => $releasable
);
}
catch (Exception $e)
{
return new Response('Bad Request', 400);
}
$output = p4string::jsonencode($ret);
return new Response($output, 200, array('Content-Type' => 'application/json'));
@@ -427,22 +454,23 @@ return call_user_func(
$app->post('/ajax/SET_RELEASE/{ssel_id}/', function(Silex\Application $app, $ssel_id) use ($session, $appbox)
{
$basket = basket_adapter::getInstance($appbox, $ssel_id, $appbox->get_session()->get_usr_id());
$datas = array('error' => true, 'datas' => _('Erreur lors de l\'enregistrement des donnees'));
try
{
$appbox->get_connection()->beginTransaction();
$basket->set_released();
$em = $app['Core']->getEntityManager();
$repository = $em->getRepository('\Entities\Basket');
/* @var $repository \Repositories\BasketRepository */
$basket = $repository->findUserBasket(
$ssel_id
, $app['Core']->getAuthenticatedUser()
);
/* @var $basket \Entities\Basket */
$participant = $basket->getValidation()->getParticipant($Core->getUser());
$participant->setIsConfirmed(true);
$datas = array('error' => false, 'datas' => _('Envoie avec succes'));
$appbox->get_connection()->commit();
}
catch (Exception $e)
{
$appbox->get_connection()->rollBack();
return new Response('Bad Request', 400);
}
$output = p4string::jsonencode($datas);
$response = new Response($output, 200, array('Content-Type' => 'application/json'));

View File

@@ -20,7 +20,6 @@ require_once __DIR__ . '/../../classes/User/Adapter.class.php';
* @license http://opensource.org/licenses/gpl-3.0 GPLv3
* @link www.phraseanet.com
*/
class Basket
{
@@ -336,4 +335,27 @@ class Basket
return false;
}
public function getSize()
{
$totSize = 0;
foreach ($this->getElements() as $basket_element)
{
try
{
$totSize += $basket_element->getRecord()
->get_subdef('document')
->get_size();
}
catch (Exception $e)
{
}
}
$totSize = round($totSize / (1024 * 1024), 2);
return $totSize;
}
}

View File

@@ -17,13 +17,16 @@
*/
function deleteRecord($lst, $del_children)
{
$Core = bootstrap::getCore();
$em = $Core->getEntityManager();
$BE_repository = $em->getRepository('\Entities\BasketElement');
$appbox = appbox::get_instance();
$session = $appbox->get_session();
$registry = $appbox->get_registry();
$registry = $Core->getRegistry();
$usr_id = $session->get_usr_id();
$ACL = User_Adapter::getInstance($usr_id, $appbox)->ACL();
$user = $Core->getAuthenticatedUser();
$ACL = $user->ACL();
$lst = explode(";", $lst);
@@ -103,83 +106,13 @@ function deleteRecord($lst, $del_children)
}
}
$sql = array();
$params = array();
$n = 0;
foreach ($ret as $key=>$basrec)
$basket_elements = $BE_repository->findElementsByRecord($record);
foreach($basket_elements as $basket_element)
{
$br = explode('_', $basrec);
$sql[] = '(base_id = :base_id' . $n . ' AND record_id = :record_id' . $n . ')';
$params[':base_id' . $n] = $br[2];
$params[':record_id' . $n] = $br[1];
$sql_ssel = 'SELECT ssel_id, usr_id FROM ssel
WHERE sbas_id = :sbas_id AND rid = :record_id';
$stmt = $conn->prepare($sql_ssel);
$stmt->execute(array(':sbas_id' => $br[0], ':record_id' => $br[1]));
$rs = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt->closeCursor();
foreach ($rs as $row)
{
try
{
$basket = basket_adapter::getInstance($appbox, $row['ssel_id'], $row['usr_id']);
$basket->delete_cache();
unset($basket);
}
catch (Exception $e)
{
}
}
$sql_ssel = 'DELETE FROM ssel WHERE sbas_id = :sbas_id AND rid = :record_id';
$stmt = $conn->prepare($sql_ssel);
$stmt->execute(array(':sbas_id' => $br[0], ':record_id' => $br[1]));
$stmt->closeCursor();
unset($br[2]);
$ret[$key] = implode('_', $br);
$n++;
}
if (count($sql) > 0)
{
$sql_res = 'SELECT DISTINCT ssel.usr_id, ssel.ssel_id FROM sselcont ,ssel
WHERE (' . implode(' OR ', $sql) . ')
AND sselcont.ssel_id = ssel.ssel_id AND ssel.usr_id = :usr_id';
$params[':usr_id'] = $usr_id;
$stmt = $conn->prepare($sql_res);
$stmt->execute($params);
$rs = $stmt->fetchAll(PDO::FETCH_ASSOC);
$stmt->closeCursor();
foreach ($rs as $row)
{
try
{
$basket = basket_adapter::getInstance($appbox, $row['ssel_id'], $usr_id);
$basket->delete_cache();
}
catch (Exception $e)
{
}
}
$sql = 'DELETE FROM sselcont WHERE (' . implode(' OR ', $sql) . ')
AND ssel_id IN (SELECT ssel_id FROM ssel WHERE usr_id = :usr_id)';
$stmt = $conn->prepare($sql_res);
$stmt->execute($params);
$stmt->closeCursor();
$em->remove($basket_element);
}
$em->flush();
return p4string::jsonencode($ret);
}