diff --git a/lib/Doctrine/Repositories/BasketElementRepository.php b/lib/Doctrine/Repositories/BasketElementRepository.php index c95d095765..fb3c33d40c 100644 --- a/lib/Doctrine/Repositories/BasketElementRepository.php +++ b/lib/Doctrine/Repositories/BasketElementRepository.php @@ -45,5 +45,29 @@ class BasketElementRepository extends EntityRepository return $query->getResult(); } + + /** + * + * @param type $element_id + * @param \User_Adapter $user + * @return \Entities\BasketELement + */ + public function findUserElement($element_id, \User_Adapter $user) + { + $element = $this->find($element_id); + + /* @var $element \Entities\BasketElement */ + if (null === $element) + { + throw new \Exception_NotFound(_('Element is not found')); + } + + if ($element->getBasket()->getowner()->get_id() != $user->get_id()) + { + throw new \Exception_Forbidden(_('You have not access to this basket element')); + } + + return $element; + } } \ No newline at end of file diff --git a/lib/classes/Bridge/Exception.class.php b/lib/classes/Bridge/Exception.class.php index d802d3e9f9..2c080be9da 100644 --- a/lib/classes/Bridge/Exception.class.php +++ b/lib/classes/Bridge/Exception.class.php @@ -15,7 +15,7 @@ * @license http://opensource.org/licenses/gpl-3.0 GPLv3 * @link www.phraseanet.com */ -class Bridge_Exception extends Exception +class Bridge_Exception extends \Exception { } \ No newline at end of file diff --git a/lib/classes/Bridge/Exception/ApiConnectorNotConfigured.class.php b/lib/classes/Bridge/Exception/ApiConnectorNotConfigured.class.php index 7fb7faf5f9..8799133c1b 100644 --- a/lib/classes/Bridge/Exception/ApiConnectorNotConfigured.class.php +++ b/lib/classes/Bridge/Exception/ApiConnectorNotConfigured.class.php @@ -15,7 +15,7 @@ * @license http://opensource.org/licenses/gpl-3.0 GPLv3 * @link www.phraseanet.com */ -class Bridge_Exception_ApiConnectorNotConfigured extends Bridge_Exception +class Bridge_Exception_ApiConnectorNotConfigured extends \Bridge_Exception { } diff --git a/lib/classes/Bridge/Exception/ApiConnectorNotConnected.class.php b/lib/classes/Bridge/Exception/ApiConnectorNotConnected.class.php index 351007ec8c..14844026ef 100644 --- a/lib/classes/Bridge/Exception/ApiConnectorNotConnected.class.php +++ b/lib/classes/Bridge/Exception/ApiConnectorNotConnected.class.php @@ -15,7 +15,7 @@ * @license http://opensource.org/licenses/gpl-3.0 GPLv3 * @link www.phraseanet.com */ -class Bridge_Exception_ApiConnectorNotConnected extends Bridge_Exception +class Bridge_Exception_ApiConnectorNotConnected extends \Bridge_Exception { } diff --git a/lib/classes/Exception/Basket/NotFound.class.php b/lib/classes/Exception/Basket/NotFound.class.php deleted file mode 100644 index 1be0b42c3d..0000000000 --- a/lib/classes/Exception/Basket/NotFound.class.php +++ /dev/null @@ -1,21 +0,0 @@ -validate_id) - return false; $appbox = appbox::get_instance(); @@ -554,7 +553,7 @@ class basket_element_adapter implements cache_cacheableInterface } catch (Exception $e) { - + } return $this; @@ -596,7 +595,9 @@ class basket_element_adapter implements cache_cacheableInterface foreach ($this->choices as $key => $value) { if (trim($value['note']) != '') + { $n++; + } } return $n; diff --git a/lib/classes/record/adapter.class.php b/lib/classes/record/adapter.class.php index 22bf8b7514..85972aa7e4 100644 --- a/lib/classes/record/adapter.class.php +++ b/lib/classes/record/adapter.class.php @@ -479,23 +479,6 @@ class record_adapter implements record_Interface, cache_cacheableInterface */ public function move_to_collection(collection &$collection, appbox &$appbox) { - $sql = 'UPDATE sselcont - SET base_id = :base_id - WHERE record_id = :record_id - AND base_id IN (SELECT base_id FROM bas WHERE sbas_id = :sbas_id)'; - - $params = array( - ':base_id' => $collection->get_base_id(), - ':record_id' => $this->get_record_id(), - ':sbas_id' => $this->get_sbas_id() - ); - - $stmt = $appbox->get_connection()->prepare($sql); - $stmt->execute($params); - $stmt->closeCursor(); - - basket_adapter::revoke_baskets_record($this, $appbox); - $sql = "UPDATE record SET coll_id = :coll_id WHERE record_id =:record_id"; $params = array( @@ -1714,21 +1697,17 @@ class record_adapter implements record_Interface, cache_cacheableInterface $stmt->execute(array(':record_id' => $this->get_record_id())); $stmt->closeCursor(); - $sql = 'SELECT s.ssel_id, c.sselcont_id, s.usr_id - FROM sselcont c, ssel s - WHERE c.base_id = :base_id AND c.record_id = :record_id - AND s.ssel_id = c.ssel_id'; - $stmt = $conn->prepare($sql); - $stmt->execute(array(':record_id' => $this->get_record_id(), ':base_id' => $this->get_base_id())); - $rs = $stmt->fetchAll(PDO::FETCH_ASSOC); - - foreach ($rs as $row) + $em = bootstrap::getCore()->getEntityManager(); + + $repository = $em->getRepository('\Entities\BasketElement'); + + /* @var $repository \Repositories\BasketElementRepository */ + foreach($repository->findElementsByRecord($this) as $basket_element) { - $basket = basket_adapter::getInstance($appbox, $row['ssel_id'], $row['usr_id']); - $basket->remove_from_ssel($row['sselcont_id']); + $em->remove($basket_element); } - - $stmt->closeCursor(); + + $em->flush(); foreach ($ftodel as $f) @unlink($f); @@ -1935,37 +1914,13 @@ class record_adapter implements record_Interface, cache_cacheableInterface */ public function get_container_baskets() { - if ($this->container_basket) - return $this->container_basket; - - $appbox = appbox::get_instance(); - $session = $appbox->get_session(); - - $baskets = array(); - $sql = 'SELECT s.ssel_id FROM ssel s, sselcont c - WHERE s.ssel_id = c.ssel_id - AND c.base_id = :base_id AND record_id = :record_id - AND usr_id = :usr_id AND temporaryType="0"'; - - $params = array( - ':base_id' => $this->get_base_id() - , ':record_id' => $this->get_record_id() - , ':usr_id' => $session->get_usr_id() - ); - - $stmt = $appbox->get_connection()->prepare($sql); - $stmt->execute($params); - $rs = $stmt->fetchAll(PDO::FETCH_ASSOC); - $stmt->closeCursor(); - - foreach ($rs as $row) - { - $baskets[$row['ssel_id']] = basket_adapter::getInstance($appbox, $row['ssel_id'], $session->get_usr_id()); - } - - $this->container_basket = $baskets; - - return $this->container_basket; + $Core = bootstrap::getCore(); + $em = $Core->getEntityManager(); + + $repo = $em->getRepository('\Entities\Baskets'); + + /* @var $$repo \Repositories\BasketRepository */ + return $repo->findContainingRecord($this); } /** diff --git a/lib/classes/record/preview.class.php b/lib/classes/record/preview.class.php index 5f5cf88dc2..72303206f7 100644 --- a/lib/classes/record/preview.class.php +++ b/lib/classes/record/preview.class.php @@ -89,6 +89,7 @@ class record_preview extends record_adapter public function __construct($env, $pos, $contId, $reload_train, searchEngine_adapter $search_engine =null, $query='') { $appbox = appbox::get_instance(); + $Core = bootstrap::getCore(); $number = null; $this->env = $env; @@ -139,37 +140,42 @@ class record_preview extends record_adapter break; case "BASK": - $basket = basket_adapter::getInstance($appbox, $contId, $appbox->get_session()->get_usr_id()); + $em = $Core->getEntityManager(); + $repository = $em->getRepository('\Entities\Basket'); + + /* @var $repository \Repositories\BasketRepository */ + $Basket = $repository->findUserBasket($contId, $Core->getAuthenticatedUser()); - $this->container = $basket; - $this->total = count($basket->get_elements()); + /* @var $Basket \Entities\Basket */ + $this->container = $Basket; + $this->total = $Basket->getElements()->count(); $i = 0; $first = true; - foreach ($basket->get_elements() as $element) + foreach ($Basket->getElements() as $element) { + /* @var $element \Entities\BasketElement */ $i++; if ($first) { - $sbas_id = $element->get_record()->get_sbas_id(); - $record_id = $element->get_record()->get_record_id(); - $this->name = $basket->get_name(); - $number = $element->get_order(); + $sbas_id = $element->getRecord()->get_sbas_id(); + $record_id = $element->getRecord()->get_record_id(); + $this->name = $Basket->getName(); + $number = $element->getOrd(); } $first = false; - if ($element->get_order() == $pos) + if ($element->getOrd() == $pos) { - $sbas_id = $element->get_record()->get_sbas_id(); - $record_id = $element->get_record()->get_record_id(); - $this->name = $basket->get_name(); - $number = $element->get_order(); + $sbas_id = $element->getRecord()->get_sbas_id(); + $record_id = $element->getRecord()->get_record_id(); + $this->name = $Basket->getName(); + $number = $element->getOrd(); } } break; case "FEED": $entry = Feed_Entry_Adapter::load_from_id($appbox, $contId); -// $basket = basket_adapter::getInstance($appbox, $contId, $appbox->get_session()->get_usr_id()); $this->container = $entry; $this->total = count($entry->get_content()); diff --git a/lib/classes/set/export.class.php b/lib/classes/set/export.class.php index 02f7f94601..678bac73eb 100644 --- a/lib/classes/set/export.class.php +++ b/lib/classes/set/export.class.php @@ -36,25 +36,31 @@ class set_export extends set_abstract */ public function __construct($lst, $sstid) { + $Core = bootstrap::getCore(); + $appbox = appbox::get_instance(); $session = $appbox->get_session(); $registry = $appbox->get_registry(); - - $user = User_Adapter::getInstance($session->get_usr_id(), $appbox); - + $user = $Core->getAuthenticatedUser(); + $download_list = array(); $remain_hd = array(); if ($sstid != "") { - $basket = basket_adapter::getInstance($appbox, $sstid, $user->get_id()); + $em = $Core->getEntityManager(); + $repository = $em->getRepository('\Entities\Basket'); + + /* @var $repository \Repositories\BasketRepository */ + $Basket = $repository->findUserBasket($sstid, $user); - foreach ($basket->get_elements() as $basket_element) + foreach ($Basket->getElements() as $basket_element) { - $base_id = $basket_element->get_record()->get_base_id(); - $record_id = $basket_element->get_record()->get_record_id(); + /* @var $basket_element \Entities\BasketElement */ + $base_id = $basket_element->getRecord()->get_base_id(); + $record_id = $basket_element->getRecord()->get_record_id(); if (!isset($remain_hd[$base_id])) { @@ -70,7 +76,7 @@ class set_export extends set_abstract $current_element = $download_list[] = new record_exportElement( - $basket_element->get_record()->get_sbas_id(), + $basket_element->getRecord()->get_sbas_id(), $record_id, $basket->get_name() . '/', $remain_hd[$base_id] diff --git a/lib/classes/set/order.class.php b/lib/classes/set/order.class.php index 1c7f93104d..6d55dd9bbb 100644 --- a/lib/classes/set/order.class.php +++ b/lib/classes/set/order.class.php @@ -219,19 +219,29 @@ class set_order extends set_abstract } } - try + $core = \bootstrap::getCore(); + + $em = $core->getEntityManager(); + $repository = $em->getRepository('\Entities\Basket'); + + /* @var $repository \Repositories\BasketRepository */ + $Basket = $repository->findUserBasket($this->ssel_id, $core->getAuthenticatedUser()); + + if(!$Basket) { - $basket = basket_adapter::getInstance($appbox, $this->ssel_id, $session->get_usr_id()); - } - catch (Exception $e) - { - $basket = basket_adapter::create($appbox, sprintf(_('Commande du %s'), $this->created_on->format('Y-m-d')), $this->user, '', $pusher); - - $this->ssel_id = $basket->get_ssel_id(); - + $Basket = new Basket(); + $Basket->setName(sprintf(_('Commande du %s'), $this->created_on->format('Y-m-d'))); + $Basket->setOwner($this->user); + $Basket->setPusher($core->getAuthenticatedUser()); + + $em->persist($Basket); + $em->flush(); + + $this->ssel_id = $Basket->getId(); + $sql = 'UPDATE `order` SET ssel_id = :ssel_id WHERE id = :order_id'; $stmt = $conn->prepare($sql); - $stmt->execute(array(':ssel_id' => $basket->get_ssel_id(), ':order_id' => $this->id)); + $stmt->execute(array(':ssel_id' => $Basket->getId(), ':order_id' => $this->id)); $stmt->closeCursor(); } diff --git a/lib/classes/set/selection.class.php b/lib/classes/set/selection.class.php index ce5a6ae235..f257649f47 100644 --- a/lib/classes/set/selection.class.php +++ b/lib/classes/set/selection.class.php @@ -31,21 +31,14 @@ class set_selection extends set_abstract /** * - * @param basket_adapter $basket - * @param boolean $flatten_if_grouping + * @param \Entities\Basket $basket * @return set_selection */ - public function load_basket(basket_adapter $basket, $flatten_if_grouping = true) + public function load_basket(\Entities\Basket $Basket) { - if ($basket->is_grouping() && !$flatten_if_grouping) + foreach ($Basket->getElements() as $basket_element) { - $record = new record_adapter($basket->get_sbas_id(), $basket->get_record_id(), count($this->elements)); - $this->add_element($record); - } - else - { - foreach ($basket->get_elements() as $basket_element) - $this->add_element($basket_element->get_record()); + $this->add_element($basket_element->getRecord()); } return $this;