Ejemplo n.º 1
0
 /**
  * Adds the required media test data for attributes.
  *
  * @param array $testdata Associative list of key/list pairs
  * @throws MW_Setup_Exception If no type ID is found
  */
 private function _addMediaData(array $testdata)
 {
     $mediaManager = MShop_Media_Manager_Factory::createManager($this->_additional, 'Default');
     $mediaTypeManager = $mediaManager->getSubManager('type', 'Default');
     $mtypeIds = array();
     $mtype = $mediaTypeManager->createItem();
     $this->_conn->begin();
     foreach ($testdata['media/type'] as $key => $dataset) {
         $mtype->setId(null);
         $mtype->setCode($dataset['code']);
         $mtype->setDomain($dataset['domain']);
         $mtype->setLabel($dataset['label']);
         $mtype->setStatus($dataset['status']);
         $mediaTypeManager->saveItem($mtype);
         $mtypeIds[$key] = $mtype->getId();
     }
     $media = $mediaManager->createItem();
     foreach ($testdata['media'] as $key => $dataset) {
         if (!isset($mtypeIds[$dataset['typeid']])) {
             throw new MW_Setup_Exception(sprintf('No media type ID found for "%1$s"', $dataset['typeid']));
         }
         $media->setId(null);
         $media->setLanguageId($dataset['langid']);
         $media->setTypeId($mtypeIds[$dataset['typeid']]);
         $media->setDomain($dataset['domain']);
         $media->setLabel($dataset['label']);
         $media->setUrl($dataset['link']);
         $media->setStatus($dataset['status']);
         $media->setMimeType($dataset['mimetype']);
         $mediaManager->saveItem($media, false);
     }
     $this->_conn->commit();
 }
Ejemplo n.º 2
0
 public function testSaveDeleteItem()
 {
     $manager = MShop_Media_Manager_Factory::createManager(TestHelper::getContext());
     $typeManager = $manager->getSubManager('type');
     $criteria = $typeManager->createSearch();
     $criteria->setSlice(0, 1);
     $result = $typeManager->searchItems($criteria);
     if (($type = reset($result)) === false) {
         throw new Exception('No type item found');
     }
     $saveParams = (object) array('site' => 'unittest', 'items' => (object) array('media.label' => 'controller test media', 'media.domain' => 'attribute', 'media.typeid' => $type->getId(), 'media.languageid' => 'de', 'media.url' => '/test/test.jpg', 'media.mimetype' => 'image/jpeg', 'media.status' => 0));
     $searchParams = (object) array('site' => 'unittest', 'condition' => (object) array('&&' => array(0 => (object) array('==' => (object) array('media.label' => 'controller test media')))));
     $saved = $this->_object->saveItems($saveParams);
     $searched = $this->_object->searchItems($searchParams);
     $deleteParams = (object) array('site' => 'unittest', 'items' => $saved['items']->{'media.id'});
     $this->_object->deleteItems($deleteParams);
     $result = $this->_object->searchItems($searchParams);
     $this->assertInternalType('object', $saved['items']);
     $this->assertNotNull($saved['items']->{'media.id'});
     $this->assertEquals($saved['items']->{'media.id'}, $searched['items'][0]->{'media.id'});
     $this->assertEquals($saved['items']->{'media.typeid'}, $searched['items'][0]->{'media.typeid'});
     $this->assertEquals($saved['items']->{'media.domain'}, $searched['items'][0]->{'media.domain'});
     $this->assertEquals($saved['items']->{'media.languageid'}, $searched['items'][0]->{'media.languageid'});
     $this->assertEquals($saved['items']->{'media.label'}, $searched['items'][0]->{'media.label'});
     $this->assertEquals($saved['items']->{'media.url'}, $searched['items'][0]->{'media.url'});
     $this->assertEquals($saved['items']->{'media.mimetype'}, $searched['items'][0]->{'media.mimetype'});
     $this->assertEquals($saved['items']->{'media.status'}, $searched['items'][0]->{'media.status'});
     $this->assertEquals(1, count($searched['items']));
     $this->assertEquals(0, count($result['items']));
 }
Ejemplo n.º 3
0
 /**
  * Sets up the fixture.
  * This method is called before a test is executed.
  *
  * @access protected
  */
 protected function setUp()
 {
     $this->_editor = TestHelper::getContext()->getEditor();
     $manager = MShop_Media_Manager_Factory::createManager(TestHelper::getContext());
     $listManager = $manager->getSubManager('list');
     $this->_object = $listManager->getSubManager('type');
 }
Ejemplo n.º 4
0
 /**
  * Initializes the media list type controller.
  *
  * @param MShop_Context_Item_Interface $context MShop context object
  */
 public function __construct(MShop_Context_Item_Interface $context)
 {
     parent::__construct($context, 'Media_List_Type');
     $manager = MShop_Media_Manager_Factory::createManager($context);
     $listManager = $manager->getSubManager('list');
     $this->_manager = $listManager->getSubManager('type');
 }
Ejemplo n.º 5
0
 public function testCreateManagerNotExisting()
 {
     $this->setExpectedException('MShop_Exception');
     $target = 'MShop_Common_Manager_Interface';
     $manager = MShop_Media_Manager_Factory::createManager(TestHelper::getContext(), 'test');
     $this->assertInstanceOf($target, $manager);
 }
 /**
  * Gets required media item ids.
  *
  * @param array $keys List with referenced Ids
  * @throws MW_Setup_Exception If no type ID is found
  */
 private function _getMediaData(array $keys)
 {
     $mediaManager = MShop_Media_Manager_Factory::createManager($this->_additional, 'Default');
     $urls = array();
     foreach ($keys as $dataset) {
         if (($pos = strpos($dataset, '/')) === false || ($str = substr($dataset, $pos + 1)) == false) {
             throw new MW_Setup_Exception(sprintf('Some keys for ref media are set wrong "%1$s"', $dataset));
         }
         $urls[] = $str;
     }
     $search = $mediaManager->createSearch();
     $search->setConditions($search->compare('==', 'media.url', $urls));
     $refIds = array();
     foreach ($mediaManager->searchItems($search) as $item) {
         $refIds['media/' . $item->getUrl()] = $item->getId();
     }
     return $refIds;
 }
 /**
  * Insert media items and product/media relations.
  */
 protected function _process()
 {
     $this->_msg('Adding product media performance data', 0);
     $context = $this->_getContext();
     $prefix = 'http://demo.aimeos.org/media/';
     $mediaManager = MShop_Media_Manager_Factory::createManager($context);
     $mediaTypeManager = $mediaManager->getSubManager('type');
     $expr = array();
     $search = $mediaTypeManager->createSearch();
     $expr[] = $search->compare('==', 'media.type.domain', 'product');
     $expr[] = $search->compare('==', 'media.type.code', 'default');
     $search->setConditions($search->combine('&&', $expr));
     $types = $mediaTypeManager->searchItems($search);
     if (($mediaTypeItem = reset($types)) === false) {
         throw new Exception('Media type item not found');
     }
     $productManager = MShop_Product_Manager_Factory::createManager($context);
     $productListManager = $productManager->getSubManager('list');
     $productListTypeManager = $productListManager->getSubManager('type');
     $expr = array();
     $search = $productListTypeManager->createSearch();
     $expr[] = $search->compare('==', 'product.list.type.domain', 'media');
     $expr[] = $search->compare('==', 'product.list.type.code', 'default');
     $search->setConditions($search->combine('&&', $expr));
     $types = $productListTypeManager->searchItems($search);
     if (($productListTypeItem = reset($types)) === false) {
         throw new Exception('Product list type item not found');
     }
     $expr = array();
     $search = $productListTypeManager->createSearch();
     $expr[] = $search->compare('==', 'product.list.type.domain', 'media');
     $expr[] = $search->compare('==', 'product.list.type.code', 'download');
     $search->setConditions($search->combine('&&', $expr));
     $types = $productListTypeManager->searchItems($search);
     if (($downloadListTypeItem = reset($types)) === false) {
         throw new Exception('Product list type item not found');
     }
     $mediaItem = $mediaManager->createItem();
     $mediaItem->setTypeId($mediaTypeItem->getId());
     $mediaItem->setLanguageId(null);
     $mediaItem->setDomain('product');
     $mediaItem->setMimeType('image/jpeg');
     $mediaItem->setStatus(1);
     $downloadItem = $mediaManager->createItem();
     $downloadItem->setTypeId($mediaTypeItem->getId());
     $downloadItem->setLanguageId(null);
     $downloadItem->setDomain('product');
     $downloadItem->setMimeType('application/pdf');
     $downloadItem->setLabel('PDF download');
     $downloadItem->setPreview($prefix . 'unitperf/download-preview.jpg');
     $downloadItem->setUrl($prefix . 'unitperf/download.pdf');
     $downloadItem->setStatus(1);
     $mediaManager->saveItem($downloadItem);
     $listItem = $productListManager->createItem();
     $listItem->setTypeId($productListTypeItem->getId());
     $listItem->setDomain('media');
     $downloadListItem = $productListManager->createItem();
     $downloadListItem->setTypeId($downloadListTypeItem->getId());
     $downloadListItem->setRefId($downloadItem->getId());
     $downloadListItem->setDomain('media');
     $downloadListItem->setPosition(0);
     $search = $productManager->createSearch();
     $search->setSortations(array($search->sort('+', 'product.id')));
     $this->_txBegin();
     $start = $pos = 0;
     do {
         $result = $productManager->searchItems($search);
         foreach ($result as $id => $item) {
             $mediaItem->setId(null);
             $mediaItem->setLabel('1. picture for ' . $item->getLabel());
             $mediaItem->setPreview($prefix . 'unitperf/' . (($pos + 0) % 4 + 1) . '.jpg');
             $mediaItem->setUrl($prefix . 'unitperf/' . (($pos + 0) % 4 + 1) . '-big.jpg');
             $mediaManager->saveItem($mediaItem);
             $listItem->setId(null);
             $listItem->setParentId($id);
             $listItem->setRefId($mediaItem->getId());
             $listItem->setPosition(0);
             $productListManager->saveItem($listItem, false);
             $mediaItem->setId(null);
             $mediaItem->setLabel('2. picture for ' . $item->getLabel());
             $mediaItem->setPreview($prefix . 'unitperf/' . (($pos + 1) % 4 + 1) . '.jpg');
             $mediaItem->setUrl($prefix . 'unitperf/' . (($pos + 1) % 4 + 1) . '-big.jpg');
             $mediaManager->saveItem($mediaItem);
             $listItem->setId(null);
             $listItem->setParentId($id);
             $listItem->setRefId($mediaItem->getId());
             $listItem->setPosition(1);
             $productListManager->saveItem($listItem, false);
             $mediaItem->setId(null);
             $mediaItem->setLabel('3. picture for ' . $item->getLabel());
             $mediaItem->setPreview($prefix . 'unitperf/' . (($pos + 2) % 4 + 1) . '.jpg');
             $mediaItem->setUrl($prefix . 'unitperf/' . (($pos + 2) % 4 + 1) . '-big.jpg');
             $mediaManager->saveItem($mediaItem);
             $listItem->setId(null);
             $listItem->setParentId($id);
             $listItem->setRefId($mediaItem->getId());
             $listItem->setPosition(2);
             $productListManager->saveItem($listItem, false);
             $mediaItem->setId(null);
             $mediaItem->setLabel('4. picture for ' . $item->getLabel());
             $mediaItem->setPreview($prefix . 'unitperf/' . (($pos + 3) % 4 + 1) . '.jpg');
             $mediaItem->setUrl($prefix . 'unitperf/' . (($pos + 3) % 4 + 1) . '-big.jpg');
             $mediaManager->saveItem($mediaItem);
             $listItem->setId(null);
             $listItem->setParentId($id);
             $listItem->setRefId($mediaItem->getId());
             $listItem->setPosition(3);
             $productListManager->saveItem($listItem, false);
             $pos++;
             $downloadListItem->setId(null);
             $downloadListItem->setParentId($id);
             $productListManager->saveItem($downloadListItem, false);
         }
         $count = count($result);
         $start += $count;
         $search->setSlice($start);
     } while ($count == $search->getSliceSize());
     $this->_txCommit();
     $this->_status('done');
 }
Ejemplo n.º 8
0
 /**
  * Sets up the fixture. This method is called before a test is executed.
  */
 protected function setUp()
 {
     $this->_editor = TestHelper::getContext()->getEditor();
     $this->_object = MShop_Media_Manager_Factory::createManager(TestHelper::getContext());
 }
Ejemplo n.º 9
0
 protected function _getListItems()
 {
     $manager = MShop_Media_Manager_Factory::createManager($this->_context, 'Default');
     $search = $manager->createSearch();
     $search->setConditions($search->compare('==', 'media.url', 'prod_266x221/198_prod_266x221.jpg'));
     $search->setSlice(0, 1);
     $results = $manager->searchItems($search);
     if (($item = reset($results)) === false) {
         throw new Exception('No media item found');
     }
     $search = $this->_object->createSearch();
     $expr = array($search->compare('==', 'media.list.parentid', $item->getId()), $search->compare('==', 'media.list.domain', 'attribute'), $search->compare('==', 'media.list.editor', $this->_editor), $search->compare('==', 'media.list.type.code', 'option'));
     $search->setConditions($search->combine('&&', $expr));
     $search->setSortations(array($search->sort('+', 'media.list.position')));
     return $this->_object->searchItems($search);
 }
Ejemplo n.º 10
0
 protected function _cleanupMedia()
 {
     $manager = MShop_Media_Manager_Factory::createManager($this->_context);
     $search = $manager->createSearch();
     $expr = array($search->compare('==', 'media.domain', 'product'), $search->compare('==', 'media.label', 'import-%'));
     $search->setConditions($search->combine('&&', $expr));
     $search->setSortations(array($search->sort('+', 'media.id')));
     $start = 0;
     do {
         $result = $manager->searchItems($search);
         $manager->deleteItems(array_keys($result));
         $count = count($result);
         $start += $count;
         $search->setSlice($start);
     } while ($count == $search->getSliceSize());
 }
Ejemplo n.º 11
0
 /**
  * Adds the media-list test data.
  *
  * @param array $testdata Associative list of key/list pairs
  * @param array $refIds Associative list of domains and the keys/IDs of the inserted items
  * @throws MW_Setup_Exception If a required ID is not available
  */
 private function _addMediaListData(array $testdata, array $refIds)
 {
     $mediaManager = MShop_Media_Manager_Factory::createManager($this->_additional, 'Default');
     $mediaListManager = $mediaManager->getSubmanager('list', 'Default');
     $mediaListTypeManager = $mediaListManager->getSubManager('type', 'Default');
     $urls = array();
     foreach ($testdata['media/list'] as $dataset) {
         if (($pos = strpos($dataset['parentid'], '/')) === false || ($str = substr($dataset['parentid'], $pos + 1)) == false) {
             throw new MW_Setup_Exception(sprintf('Some keys for parentid are set wrong "%1$s"', $dataset['parentid']));
         }
         $urls[] = $str;
     }
     $search = $mediaManager->createSearch();
     $search->setConditions($search->compare('==', 'media.url', $urls));
     $result = $mediaManager->searchItems($search);
     $parentIds = array();
     foreach ($result as $item) {
         $parentIds['media/' . $item->getUrl()] = $item->getId();
     }
     $medListTypes = array();
     $medListType = $mediaListTypeManager->createItem();
     $this->_conn->begin();
     foreach ($testdata['media/list/type'] as $key => $dataset) {
         $medListType->setId(null);
         $medListType->setCode($dataset['code']);
         $medListType->setDomain($dataset['domain']);
         $medListType->setLabel($dataset['label']);
         $medListType->setStatus($dataset['status']);
         $mediaListTypeManager->saveItem($medListType);
         $medListTypes[$key] = $medListType->getId();
     }
     $medList = $mediaListManager->createItem();
     foreach ($testdata['media/list'] as $dataset) {
         if (!isset($parentIds[$dataset['parentid']])) {
             throw new MW_Setup_Exception(sprintf('No media ID found for "%1$s"', $dataset['parentid']));
         }
         if (!isset($medListTypes[$dataset['typeid']])) {
             throw new MW_Setup_Exception(sprintf('No media list type ID found for "%1$s"', $dataset['typeid']));
         }
         if (!isset($refIds[$dataset['domain']][$dataset['refid']])) {
             throw new MW_Setup_Exception(sprintf('No "%1$s" ref ID found for "%2$s"', $dataset['refid'], $dataset['domain']));
         }
         $medList->setId(null);
         $medList->setParentId($parentIds[$dataset['parentid']]);
         $medList->setTypeId($medListTypes[$dataset['typeid']]);
         $medList->setRefId($refIds[$dataset['domain']][$dataset['refid']]);
         $medList->setDomain($dataset['domain']);
         $medList->setDateStart($dataset['start']);
         $medList->setDateEnd($dataset['end']);
         $medList->setConfig($dataset['config']);
         $medList->setPosition($dataset['pos']);
         $medList->setStatus($dataset['status']);
         $mediaListManager->saveItem($medList, false);
     }
     $this->_conn->commit();
 }
Ejemplo n.º 12
0
 protected function _delete(MShop_Product_Item_Interface $product)
 {
     $mediaManager = MShop_Media_Manager_Factory::createManager($this->_context);
     $manager = MShop_Product_Manager_Factory::createManager($this->_context);
     $listManager = $manager->getSubManager('list');
     foreach ($product->getListItems('media') as $listItem) {
         $mediaManager->deleteItem($listItem->getRefItem()->getId());
         $listManager->deleteItem($listItem->getId());
     }
     $manager->deleteItem($product->getId());
 }
Ejemplo n.º 13
0
 public function testCreateManagerNotExisting()
 {
     $this->setExpectedException('MShop_Exception');
     MShop_Media_Manager_Factory::createManager(TestHelper::getContext(), 'unknown');
 }
Ejemplo n.º 14
0
 /**
  * Initializes the media controller.
  *
  * @param MShop_Context_Item_Interface $context MShop context object
  */
 public function __construct(MShop_Context_Item_Interface $context)
 {
     parent::__construct($context, 'Media');
     $this->_manager = MShop_Media_Manager_Factory::createManager($context);
 }