Example #1
0
 public function setUp()
 {
     parent::setUp();
     $this->product = Product::getNewInstance($this->rootCategory, 'test');
     $this->product->save();
     $this->group = ProductFileGroup::getNewInstance($this->product);
     $this->group->save();
     // create temporary file
     file_put_contents($this->tmpFilePath, $this->fileBody);
 }
Example #2
0
 public function getFilesMergedWithGroupsArray()
 {
     ClassLoader::import('application.model.product.ProductFileGroup');
     return ProductFileGroup::mergeGroupsWithFields($this->getFileGroups()->toArray(), $this->getFiles()->toArray());
 }
Example #3
0
 public function edit()
 {
     $group = ProductFileGroup::getInstanceByID((int) $this->request->get('id'), true);
     return new JSONResponse($group->toArray());
 }
Example #4
0
 public static function getOrderFiles(ARSelectFilter $f)
 {
     $f->mergeCondition(new EqualsCond(new ARFieldHandle('CustomerOrder', 'isCancelled'), 0));
     $f->mergeCondition(new EqualsCond(new ARFieldHandle('CustomerOrder', 'isFinalized'), true));
     $f->mergeCondition(new EqualsCond(new ARFieldHandle('CustomerOrder', 'isPaid'), true));
     //$f->mergeCondition(new EqualsCond(new ARFieldHandle('Product', 'type'), Product::TYPE_DOWNLOADABLE));
     $f->setOrder(new ARFieldHandle('CustomerOrder', 'ID'), 'DESC');
     $downloadable = ActiveRecordModel::getRecordSet('OrderedItem', $f, array('Product', 'CustomerOrder'));
     $fileArray = array();
     foreach ($downloadable as &$item) {
         $files = $item->getProduct()->getFiles();
         $itemFiles = array();
         foreach ($files as $file) {
             if ($item->isDownloadable($file)) {
                 $itemFiles[] = $file->toArray();
             }
         }
         if (!$itemFiles) {
             continue;
         }
         $array = $item->toArray();
         $array['Product']['Files'] = ProductFileGroup::mergeGroupsWithFields($item->getProduct()->getFileGroups()->toArray(), $itemFiles);
         foreach ($array['Product']['Files'] as $key => $file) {
             if (!isset($file['ID'])) {
                 unset($array['Product']['Files'][$key]);
             }
         }
         $fileArray[] = $array;
     }
     return $fileArray;
 }
Example #5
0
 public function testGetProductGroups()
 {
     // new product
     $product = Product::getNewInstance($this->rootCategory, 'test');
     $product->save();
     $groups = array();
     foreach (range(1, 3) as $i) {
         $groups[$i] = ProductFileGroup::getNewInstance($product);
         $groups[$i]->position->set($i);
         $groups[$i]->setValueByLang('name', 'en', 'TEST_GROUP_' . $i);
         $groups[$i]->save();
     }
     $this->assertEqual(count($groups), ProductFileGroup::getProductGroups($product)->getTotalRecordCount());
     $i = 1;
     foreach (ProductFileGroup::getProductGroups($product) as $group) {
         $this->assertTrue($groups[$i] === $group);
         $i++;
     }
 }
Example #6
0
 public function testMergeGroupsWithFIlters()
 {
     // create groups
     $productGroup = array();
     foreach (range(1, 3) as $i) {
         $productGroup[$i] = ProductFileGroup::getNewInstance($this->product);
         $productGroup[$i]->save();
     }
     // create files
     $productFile = array();
     $productFiles = array();
     $dir = ClassLoader::getRealPath('cache') . '/';
     foreach (range(1, 2) as $i) {
         file_put_contents($productFiles[$i] = $dir . md5($i), "file {$i}");
         $productFile[$i] = ProductFile::getNewInstance($this->product, $productFiles[$i], "test_file_{$i}.txt");
         $productFile[$i]->save();
     }
     $productFile[1]->productFileGroup->set($productGroup[2]);
     $productFile[1]->save();
     $this->assertEqual($this->product->getFileGroups()->getTotalRecordCount(), 3);
     $this->assertEqual($this->product->getFiles()->getTotalRecordCount(), 2);
     $filesMergedWithGroups = $this->product->getFilesMergedWithGroupsArray();
     $this->assertEqual(count($filesMergedWithGroups), 4);
     // Check files without group
     $this->assertTrue(isset($filesMergedWithGroups[1]['ID']));
     $this->assertEqual($filesMergedWithGroups[1]['ID'], $productFile[2]->getID());
     $this->assertFalse(isset($filesMergedWithGroups[1]['ProductFileGroup']['ID']));
     // Check first group
     $this->assertFalse(isset($filesMergedWithGroups[2]['ID']));
     $this->assertTrue(isset($filesMergedWithGroups[2]['ProductFileGroup']['ID']));
     $this->assertEqual($filesMergedWithGroups[2]['ProductFileGroup']['ID'], $productGroup[1]->getID());
     // Check second group
     $this->assertTrue(isset($filesMergedWithGroups[3]['ID']));
     $this->assertEqual($filesMergedWithGroups[3]['ID'], $productFile[1]->getID());
     $this->assertTrue(isset($filesMergedWithGroups[3]['ProductFileGroup']['ID']));
     $this->assertEqual($filesMergedWithGroups[3]['ProductFileGroup']['ID'], $productGroup[2]->getID());
     // Check second group
     $this->assertFalse(isset($filesMergedWithGroups[4]['ID']));
     $this->assertTrue(isset($filesMergedWithGroups[4]['ProductFileGroup']['ID']));
     $this->assertEqual($filesMergedWithGroups[4]['ProductFileGroup']['ID'], $productGroup[3]->getID());
     foreach ($productFiles as $fileName) {
         unlink($fileName);
     }
     foreach ($productFile as $file) {
         $file->delete();
     }
 }
Example #7
0
 /**
  * @role update
  */
 public function sort()
 {
     $target = $this->request->get('target');
     preg_match('/_(\\d+)$/', $target, $match);
     // Get group.
     foreach ($this->request->get($this->request->get('target'), array()) as $position => $key) {
         if (empty($key)) {
             continue;
         }
         $file = ProductFile::getInstanceByID((int) $key);
         $file->position->set((int) $position);
         if (isset($match[1])) {
             $file->productFileGroup->set(ProductFileGroup::getInstanceByID((int) $match[1]));
         } else {
             $file->productFileGroup->setNull();
         }
         $file->save();
     }
     return new JSONResponse(false, 'success');
 }