diff --git a/lib/Alchemy/Phrasea/Application/Lightbox.php b/lib/Alchemy/Phrasea/Application/Lightbox.php index e17e5639f2..db7dbbfb8e 100644 --- a/lib/Alchemy/Phrasea/Application/Lightbox.php +++ b/lib/Alchemy/Phrasea/Application/Lightbox.php @@ -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); - $ret = array( - 'error' => false - , 'datas' => '' - , 'releasable' => $basket->is_releasable() ? _('Do you want to send your report ?') : false - ); - } - catch (Exception $e) + $user = $Core->getAuthenticatedUser(); + $participânt = $basket_element->getBasket() + ->getValidation() + ->getParticipant($user); + + if ($participant->getIsConfirmed() === true) { - 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); 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(); - $datas = array('error' => false, 'datas' => _('Envoie avec succes')); - $appbox->get_connection()->commit(); - } - catch (Exception $e) - { - $appbox->get_connection()->rollBack(); + $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')); - return new Response('Bad Request', 400); - } $output = p4string::jsonencode($datas); $response = new Response($output, 200, array('Content-Type' => 'application/json')); diff --git a/lib/Doctrine/Entities/Basket.php b/lib/Doctrine/Entities/Basket.php index c5ccb605b6..31aaee68fe 100644 --- a/lib/Doctrine/Entities/Basket.php +++ b/lib/Doctrine/Entities/Basket.php @@ -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 { @@ -325,7 +324,7 @@ class Basket foreach ($this->getElements() as $basket_element) { $bask_record = $basket_element->getRecord(); - + if ($bask_record->get_record_id() == $record->get_record_id() && $bask_record->get_sbas_id() == $record->get_sbas_id()) { @@ -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; + } + } \ No newline at end of file diff --git a/lib/classes/deprecated/prodUtils.php b/lib/classes/deprecated/prodUtils.php index aa4233ae95..670c075435 100644 --- a/lib/classes/deprecated/prodUtils.php +++ b/lib/classes/deprecated/prodUtils.php @@ -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,84 +106,14 @@ 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++; + $em->remove($basket_element); } - - 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); }