Beispiel #1
0
 public function setValues($feature, $values, $delete_obsolete = true, $force = false)
 {
     $model = self::getValuesModel($feature['type']);
     if ($delete_obsolete) {
         $current_values = $model->getByField('feature_id', $feature['id'], 'id');
         $obsolete_values = array_diff(array_keys($current_values), array_keys($values));
         if ($obsolete_values) {
             $product_features_model = new shopProductFeaturesModel();
             $product_features_model->deleteByFeature($feature['id'], $obsolete_values);
             $field = array('feature_id' => $feature['id'], 'id' => $obsolete_values);
             $model->deleteByField($field);
         }
     }
     $data = array();
     $sort = 0;
     foreach ($values as $id => $value) {
         $value = $model->addValue($feature['id'], $value, $force ? null : $id, $feature['type'], ++$sort);
         if ($force) {
             if (!empty($value['error'])) {
                 if (!empty($value['error']['original_id'])) {
                     $value['id'] = $value['error']['original_id'];
                     $value['value'] = $value['error']['original_value'];
                     unset($value['error']);
                     $data[] = $value;
                 }
             }
         } else {
             $data[] = $value;
         }
     }
     $this->recount($feature);
     return $data;
 }