Beispiel #1
0
 /**
  * Stores an uploaded file
  *
  * @param \stdClass $params Associative list of parameters
  * @return \stdClass Object with success value
  * @throws \Aimeos\Controller\ExtJS\Exception If an error occurs
  */
 public function uploadItem(\stdClass $params)
 {
     $this->checkParams($params, array('site', 'domain'));
     $this->setLocale($params->site);
     $context = $this->getContext();
     $manager = \Aimeos\MShop\Factory::createManager($context, 'media');
     $typeManager = \Aimeos\MShop\Factory::createManager($context, 'media/type');
     $item = $manager->createItem();
     $item->setTypeId($typeManager->findItem('default', array(), 'product')->getId());
     $item->setDomain('product');
     $item->setStatus(1);
     $file = $this->getUploadedFile();
     \Aimeos\Controller\Common\Media\Factory::createController($context)->add($item, $file);
     $manager->saveItem($item);
     return (object) $item->toArray();
 }
Beispiel #2
0
 public function testCreateControllerNotExisting()
 {
     $this->setExpectedException('\\Aimeos\\Controller\\Common\\Exception');
     \Aimeos\Controller\Common\Media\Factory::createController(\TestHelperCntl::getContext(), 'notexist');
 }
Beispiel #3
0
 /**
  * Updates existing product image references or creates new ones
  *
  * @param \Aimeos\MW\View\Iface $view View object with helpers and assigned parameters
  */
 protected function updateItems(\Aimeos\MW\View\Iface $view)
 {
     $id = $view->item->getId();
     $context = $this->getContext();
     $manager = \Aimeos\MShop\Factory::createManager($context, 'product');
     $mediaManager = \Aimeos\MShop\Factory::createManager($context, 'media');
     $listManager = \Aimeos\MShop\Factory::createManager($context, 'product/lists');
     $cntl = \Aimeos\Controller\Common\Media\Factory::createController($context);
     $listIds = (array) $view->param('image/product.lists.id', array());
     $listItems = $manager->getItem($id, array('media'))->getListItems('media', 'default');
     $mediaItem = $this->createItem();
     $listItem = $this->createListItem($id);
     $files = $view->value($view->request()->getUploadedFiles(), 'image/files', array());
     $num = 0;
     foreach ($listIds as $idx => $listid) {
         if (!isset($listItems[$listid])) {
             $litem = $listItem;
             $litem->setId(null);
             if (($file = $view->value($files, $num)) !== null) {
                 $item = $mediaItem;
                 $item->setId(null);
                 $cntl->add($item, $file);
                 $num++;
             } else {
                 throw new \Aimeos\Admin\JQAdm\Exception(sprintf('No file uploaded for %1$d. new image', $num + 1));
             }
         } else {
             $litem = $listItems[$listid];
             $item = $litem->getRefItem();
         }
         $item->setLabel($view->param('image/media.label/' . $idx));
         $item->setLanguageId($view->param('image/media.languageid/' . $idx));
         $mediaManager->saveItem($item);
         $litem->setPosition($idx);
         $litem->setRefId($item->getId());
         $listManager->saveItem($litem, false);
     }
     $this->cleanupItems($listItems, $listIds);
 }
Beispiel #4
0
 /**
  * Updates existing product image references or creates new ones
  *
  * @param \Aimeos\MW\View\Iface $view View object with helpers and assigned parameters
  */
 protected function updateItems(\Aimeos\MW\View\Iface $view)
 {
     $id = $view->item->getId();
     $context = $this->getContext();
     $manager = \Aimeos\MShop\Factory::createManager($context, 'product');
     $mediaManager = \Aimeos\MShop\Factory::createManager($context, 'media');
     $listManager = \Aimeos\MShop\Factory::createManager($context, 'product/lists');
     $mediaTypeManager = \Aimeos\MShop\Factory::createManager($context, 'media/type');
     $listTypeManager = \Aimeos\MShop\Factory::createManager($context, 'product/lists/type');
     $cntl = \Aimeos\Controller\Common\Media\Factory::createController($context);
     $listIds = (array) $view->param('image/product.lists.id', array());
     $listItems = $manager->getItem($id, array('media'))->getListItems('media');
     $listItem = $listManager->createItem();
     $listItem->setTypeId($listTypeManager->findItem('default', array(), 'media')->getId());
     $listItem->setDomain('media');
     $listItem->setParentId($id);
     $listItem->setStatus(1);
     $mediaItem = $mediaManager->createItem();
     $mediaItem->setTypeId($mediaTypeManager->findItem('default', array(), 'product')->getId());
     $mediaItem->setDomain('product');
     $mediaItem->setStatus(1);
     $files = $view->value($view->request()->getUploadedFiles(), 'image/files', array());
     $files = is_array($files) ? $files : array($files);
     $num = 0;
     foreach ($listIds as $idx => $listid) {
         if (!isset($listItems[$listid])) {
             $litem = $listItem;
             $litem->setId(null);
             if (($file = $view->value($files, $num)) === null) {
                 throw new \Aimeos\Admin\JQAdm\Exception(sprintf('No uploaded file for %1$d. new entry ', $num));
             }
             $cntl->add($mediaItem, $file);
             $num++;
         } else {
             $litem = $listItems[$listid];
             $item = $litem->getRefItem();
         }
         $mediaItem->setLabel($view->param('image/media.label/' . $idx));
         $mediaItem->setLanguageId($view->param('image/media.languageid/' . $idx));
         $mediaManager->saveItem($mediaItem);
         $litem->setPosition($idx);
         $litem->setRefId($mediaItem->getId());
         $listManager->saveItem($litem, false);
     }
     $rmIds = array();
     $rmListIds = array_diff(array_keys($listItems), $listIds);
     foreach ($rmListIds as $rmListId) {
         $item = $listItems[$rmListId]->getRefItem();
         $cntl->delete($item);
         $rmIds[] = $item->getId();
     }
     $listManager->deleteItems($rmListIds);
     $mediaManager->deleteItems($rmIds);
 }