mirror of
https://github.com/alchemy-fr/Phraseanet.git
synced 2025-10-18 15:33:15 +00:00
Refactor basket_adapter
This commit is contained in:
@@ -330,7 +330,7 @@ return call_user_func(
|
|||||||
}
|
}
|
||||||
)->assert('entry_id', '\d+');
|
)->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 = new supertwig();
|
||||||
$twig->addFilter(array('nl2br' => 'nl2br'));
|
$twig->addFilter(array('nl2br' => 'nl2br'));
|
||||||
@@ -339,7 +339,14 @@ return call_user_func(
|
|||||||
|
|
||||||
$template = 'lightbox/basket_content_report.twig';
|
$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 = new Response($twig->render($template, array('basket' => $basket)));
|
||||||
$response->setCharset('UTF-8');
|
$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)
|
$app->post('/ajax/SET_ELEMENT_AGREEMENT/{sselcont_id}/', function(Silex\Application $app, $sselcont_id)
|
||||||
{
|
{
|
||||||
$request = $app['request'];
|
$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(
|
$ret = array(
|
||||||
'error' => true,
|
'error' => true,
|
||||||
@@ -400,24 +414,37 @@ return call_user_func(
|
|||||||
'datas' => _('Erreur lors de la mise a jour des donnes ')
|
'datas' => _('Erreur lors de la mise a jour des donnes ')
|
||||||
);
|
);
|
||||||
|
|
||||||
try
|
$em = $app['Core']->getEntityManager();
|
||||||
{
|
$repository = $em->getRepository('\Entities\BasketElement');
|
||||||
$appbox = appbox::get_instance();
|
|
||||||
|
|
||||||
$basket_element = basket_element_adapter::getInstance($sselcont_id);
|
/* @var $repository \Repositories\BasketElementRepository */
|
||||||
$basket_element->set_agreement($agreement);
|
$basket_element = $repository->findUserElement(
|
||||||
$basket = basket_adapter::getInstance($appbox, $basket_element->get_ssel_id(), $appbox->get_session()->get_usr_id());
|
$sselcont_id
|
||||||
|
, $app['Core']->getAuthenticatedUser()
|
||||||
|
);
|
||||||
|
/* @var $basket_element \Entities\BasketElement */
|
||||||
|
$basket_element->setAgreement($agreement);
|
||||||
|
|
||||||
$ret = array(
|
$user = $Core->getAuthenticatedUser();
|
||||||
'error' => false
|
$participânt = $basket_element->getBasket()
|
||||||
, 'datas' => ''
|
->getValidation()
|
||||||
, 'releasable' => $basket->is_releasable() ? _('Do you want to send your report ?') : false
|
->getParticipant($user);
|
||||||
);
|
|
||||||
}
|
if ($participant->getIsConfirmed() === true)
|
||||||
catch (Exception $e)
|
|
||||||
{
|
{
|
||||||
return new Response('Bad Request', 400);
|
$releasable = false;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$releasable = _('Do you want to send your report ?');
|
||||||
|
}
|
||||||
|
|
||||||
|
$ret = array(
|
||||||
|
'error' => false
|
||||||
|
, 'datas' => ''
|
||||||
|
, 'releasable' => $releasable
|
||||||
|
);
|
||||||
|
|
||||||
$output = p4string::jsonencode($ret);
|
$output = p4string::jsonencode($ret);
|
||||||
|
|
||||||
return new Response($output, 200, array('Content-Type' => 'application/json'));
|
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)
|
$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'));
|
$em = $app['Core']->getEntityManager();
|
||||||
try
|
|
||||||
{
|
$repository = $em->getRepository('\Entities\Basket');
|
||||||
$appbox->get_connection()->beginTransaction();
|
|
||||||
$basket->set_released();
|
/* @var $repository \Repositories\BasketRepository */
|
||||||
$datas = array('error' => false, 'datas' => _('Envoie avec succes'));
|
$basket = $repository->findUserBasket(
|
||||||
$appbox->get_connection()->commit();
|
$ssel_id
|
||||||
}
|
, $app['Core']->getAuthenticatedUser()
|
||||||
catch (Exception $e)
|
);
|
||||||
{
|
|
||||||
$appbox->get_connection()->rollBack();
|
/* @var $basket \Entities\Basket */
|
||||||
|
$participant = $basket->getValidation()->getParticipant($Core->getUser());
|
||||||
|
$participant->setIsConfirmed(true);
|
||||||
|
|
||||||
|
$datas = array('error' => false, 'datas' => _('Envoie avec succes'));
|
||||||
|
|
||||||
return new Response('Bad Request', 400);
|
|
||||||
}
|
|
||||||
$output = p4string::jsonencode($datas);
|
$output = p4string::jsonencode($datas);
|
||||||
|
|
||||||
$response = new Response($output, 200, array('Content-Type' => 'application/json'));
|
$response = new Response($output, 200, array('Content-Type' => 'application/json'));
|
||||||
|
@@ -20,7 +20,6 @@ require_once __DIR__ . '/../../classes/User/Adapter.class.php';
|
|||||||
* @license http://opensource.org/licenses/gpl-3.0 GPLv3
|
* @license http://opensource.org/licenses/gpl-3.0 GPLv3
|
||||||
* @link www.phraseanet.com
|
* @link www.phraseanet.com
|
||||||
*/
|
*/
|
||||||
|
|
||||||
class Basket
|
class Basket
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -336,4 +335,27 @@ class Basket
|
|||||||
return false;
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@@ -17,13 +17,16 @@
|
|||||||
*/
|
*/
|
||||||
function deleteRecord($lst, $del_children)
|
function deleteRecord($lst, $del_children)
|
||||||
{
|
{
|
||||||
|
$Core = bootstrap::getCore();
|
||||||
|
$em = $Core->getEntityManager();
|
||||||
|
$BE_repository = $em->getRepository('\Entities\BasketElement');
|
||||||
|
|
||||||
$appbox = appbox::get_instance();
|
$appbox = appbox::get_instance();
|
||||||
$session = $appbox->get_session();
|
$session = $appbox->get_session();
|
||||||
$registry = $appbox->get_registry();
|
$registry = $Core->getRegistry();
|
||||||
|
|
||||||
$usr_id = $session->get_usr_id();
|
$user = $Core->getAuthenticatedUser();
|
||||||
|
$ACL = $user->ACL();
|
||||||
$ACL = User_Adapter::getInstance($usr_id, $appbox)->ACL();
|
|
||||||
|
|
||||||
$lst = explode(";", $lst);
|
$lst = explode(";", $lst);
|
||||||
|
|
||||||
@@ -103,83 +106,13 @@ function deleteRecord($lst, $del_children)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$sql = array();
|
$basket_elements = $BE_repository->findElementsByRecord($record);
|
||||||
$params = array();
|
|
||||||
$n = 0;
|
foreach($basket_elements as $basket_element)
|
||||||
foreach ($ret as $key=>$basrec)
|
|
||||||
{
|
{
|
||||||
$br = explode('_', $basrec);
|
$em->remove($basket_element);
|
||||||
$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->flush();
|
||||||
|
|
||||||
return p4string::jsonencode($ret);
|
return p4string::jsonencode($ret);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user