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); }
public function getFilesMergedWithGroupsArray() { ClassLoader::import('application.model.product.ProductFileGroup'); return ProductFileGroup::mergeGroupsWithFields($this->getFileGroups()->toArray(), $this->getFiles()->toArray()); }
public function edit() { $group = ProductFileGroup::getInstanceByID((int) $this->request->get('id'), true); return new JSONResponse($group->toArray()); }
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; }
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++; } }
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(); } }
/** * @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'); }