Beispiel #1
0
 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');
 }
Beispiel #2
0
 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');
 }