diff --git a/lib/classes/record/adapter.class.php b/lib/classes/record/adapter.class.php index adbc9c296f..55a33c33b1 100644 --- a/lib/classes/record/adapter.class.php +++ b/lib/classes/record/adapter.class.php @@ -1572,6 +1572,16 @@ class record_adapter implements record_Interface, cache_cacheableInterface $stmt->execute(array(':record_id' => $this->get_record_id())); $stmt->closeCursor(); + $base_ids = array_map(function($collection) { + return $collection->get_base_id(); + }, $this->databox->get_collections()); + + $sql = "DELETE FROM order_elements WHERE record_id = :record_id AND base_id IN (" . implode(', ', $base_ids) . ")"; + $stmt = $conn->prepare($sql); + $stmt->execute(array(':record_id' => $this->get_record_id())); + $stmt->closeCursor(); + + $em = bootstrap::getCore()->getEntityManager(); $repository = $em->getRepository('\Entities\BasketElement'); diff --git a/lib/classes/set/exportorder.class.php b/lib/classes/set/exportorder.class.php index 3f7e21e409..b3fd81b6af 100644 --- a/lib/classes/set/exportorder.class.php +++ b/lib/classes/set/exportorder.class.php @@ -24,6 +24,7 @@ class set_exportorder extends set_export * @param String $usage * @param String $deadline * @return boolean + * @return $order_id */ public function order_available_elements($from_usr_id, $usage, $deadline) { @@ -96,7 +97,7 @@ class set_exportorder extends set_export $evt_mngr->trigger('__NEW_ORDER__', $params); - return true; + return $order_id; } /** @@ -106,10 +107,10 @@ class set_exportorder extends set_export protected function get_orderable_lst() { $ret = array(); - foreach ($this as $basrec => $download_element) { - foreach ($download_element->get_orderable() as $name => $bool) { + foreach ($this as $download_element) { + foreach ($download_element->get_orderable() as $bool) { if ($bool === true) { - $ret[] = $basrec; + $ret[] = $download_element->get_serialize_key(); } } } diff --git a/tests/PhraseanetPHPUnitAbstract.class.inc b/tests/PhraseanetPHPUnitAbstract.class.inc index bab5caaa4c..d8ecf445e1 100644 --- a/tests/PhraseanetPHPUnitAbstract.class.inc +++ b/tests/PhraseanetPHPUnitAbstract.class.inc @@ -943,6 +943,8 @@ abstract class PhraseanetPHPUnitAbstract extends WebTestCase $base_id = $collection->get_base_id(); $user->ACL()->give_access_to_base(array($base_id)); + set_exportorder::set_order_admins(array($user->get_id()), $base_id); + $rights = array( 'canputinalbum' => '1' , 'candwnldhd' => '1' diff --git a/tests/record/adapterTest.php b/tests/record/adapterTest.php index 91ef293223..5f0c59d43a 100644 --- a/tests/record/adapterTest.php +++ b/tests/record/adapterTest.php @@ -46,6 +46,49 @@ class record_adapterTest extends PhraseanetPHPUnitAuthenticatedAbstract parent::tearDownAfterClass(); } + /** + * Check whether a record is delete from order_elements when + * record::delete is call + * @covers \record_adapter + */ + public function testSetExport() + { + $recordsf = new system_file(__DIR__ . '/../testfiles/test001.CR2'); + $record = record_adapter::create(self::$collection, $recordsf); + + $basket = new \Entities\Basket(); + + $basket->setName('hello'); + $basket->setOwner(self::$user); + $basket->setDescription('hello'); + + $em = self::$core->getEntityManager(); + + $basketElement = new \Entities\BasketElement(); + + $basketElement->setRecord($record); + $basketElement->setBasket($basket); + + $em->persist($basketElement); + + $basket->addBasketElement($basketElement); + + $em->persist($basket); + $em->flush(); + + $export = new set_exportorder(self::$record_1->get_serialize_key(), $basket->getId()); + + $orderId = $export->order_available_elements(self::$user->get_id(), 'ahaha', '+2 hours'); + + $record->delete(); + + try { + $order = new set_order($orderId); + } catch (\Exception $e) { + $this->fail('should not raise an exception' . $e->getMessage() . ' ' . $e->getLine() . ' ' . $e->getFile() . ' ' . $e->getTraceAsString()); + } + } + public function testGet_creation_date() { $date_obj = new DateTime();