public function saveTextRules($type = ClonedStoreRule::TYPE_TEXT) { $store = $this->getStore(); $store->deleteRelatedRecordSet('ClonedStoreRule', new ARDeleteFilter(eq(f('ClonedStoreRule.type'), $type))); $req = $this->request->toArray(); $find = $this->request->get('find'); $repl = $this->request->get('repl'); $query = $this->request->get('query'); foreach ($this->request->get('field') as $key => $field) { $rule = ClonedStoreRule::getNewInstance($store, $type); $rule->field->set($field); if ($type == ClonedStoreRule::TYPE_TEXT) { $rule->find->set($find[$key]); $rule->repl->set($repl[$key]); $rule->query->set($query[$key]); if (!$rule->find->get() && !$rule->repl->get()) { continue; } } else { $rule->query->set($query[$key]); if (!$rule->query->get()) { continue; } } $rule->save(); } return new JSONResponse(null, 'success', 'Store rules have been saved successfully'); }
public function testTextRulesSpecField() { $field = SpecField::getNewInstance(Category::getRootNode(), SpecField::DATATYPE_TEXT, SpecField::TYPE_TEXT_ADVANCED); $field->save(); $product = Product::getNewInstance($this->categories['1.2.1']); $product->sku->set('testing'); $product->save(); $product->setAttributeValueByLang($field, $this->getApplication()->getDefaultLanguageCode(), 'Attribute value'); $product->save(); $rule = ClonedStoreRule::getNewInstance($this->stores[0], ClonedStoreRule::TYPE_TEXT); $rule->field->set('specField.' . $field->getID()); $rule->find->set('value'); $rule->repl->set('replaced'); $rule->save(); $updater = $this->getUpdater(); $updater->syncAll(); $row = ActiveRecord::getDataBySQL('SELECT * FROM ' . $updater->getImportDatabase() . '.SpecificationStringValue WHERE productID=' . $product->getID()); $row = array_shift($row); $name = unserialize($row['value']); $this->assertEqual($name[$this->getApplication()->getDefaultLanguageCode()], 'Attribute replaced'); }