public function execute() { if (!$this->getUser()->getRights('shop', 'settings')) { throw new waRightsException(_w('Access denied')); } $feature_model = new shopFeatureModel(); $values_per_feature = 7; $type = waRequest::get('type', waRequest::TYPE_STRING, ''); if ($type_id = intval($type)) { $features = $feature_model->getByType($type_id, 'id', $values_per_feature); } else { if ($type === 'empty') { $features = $feature_model->getByType(null, 'id', $values_per_feature); } elseif ($type === '') { $features = $feature_model->getFeatures(true, null, 'id', $values_per_feature); } else { $features = $feature_model->getByType(0, 'id', $values_per_feature); } } if ($features) { shopFeatureModel::appendTypeNames($features); $type_features_model = new shopTypeFeaturesModel(); $type_features_model->fillTypes($features); } $this->view->assign('features', $features); $this->view->assign('values_per_feature', $values_per_feature); }
public function execute() { $feature_model = new shopFeatureModel(); if ($type_id = waRequest::get('type_id')) { $features = $feature_model->getByType($type_id, 'id'); } else { $features = $feature_model->getAll('id'); } $selectable = array(); foreach ($features as $f_id => $f) { if ($f['selectable']) { $selectable[$f_id] = $f; } } if ($selectable) { $selectable = $feature_model->getValues($selectable); foreach ($selectable as $f_id => $f) { $f['values'] = array_values($f['values']); $f['values']['_element'] = 'value'; $features[$f_id] = $f; } } $this->response = $features; $this->response['_element'] = 'feature'; }
public function getFeatures(shopProduct $product) { $features_model = new shopFeatureModel(); $product_features_model = new shopProductFeaturesModel(); $features = array(); foreach ($features_model->getByType($product->type_id, 'code', true) as $f) { if ($f['multiple'] || $f['code'] == 'weight') { $features[$f['code']] = $f; } } // attach values $features = $features_model->getValues($features); return $features; }
public function execute() { if ($id = waRequest::get('id', 0, waRequest::TYPE_INT)) { #load product $this->view->assign('product', $product = new shopProduct($id)); #load product types $type_model = new shopTypeModel(); $this->view->assign('product_types', $product_types = $type_model->getAll($type_model->getTableId(), true)); if ($param = waRequest::request('param', array(), waRequest::TYPE_ARRAY_INT)) { $type_id = reset($param); if (!isset($product_types[$type_id])) { $type_id = $product->type_id; } } else { $type_id = $product->type_id; } $this->view->assign('type_id', $type_id); #load feature's values $model = new shopFeatureModel(); $changed_features = array(); if ($data = waRequest::post('product')) { $changed_features = empty($data['features']) || !is_array($data['features']) ? array() : $data['features']; foreach ($changed_features as $code => $value) { if (isset($product->features[$code])) { if (is_array($value)) { $intersect = array_unique(array_merge($value, (array) $product->features[$code])); if (count($value) == count($intersect)) { unset($changed_features[$code]); } } elseif ($value === $product->features[$code]) { unset($changed_features[$code]); } } } } #load changed feature's values $this->view->assign('changed_features', $changed_features); $codes = array_keys($product->features); foreach ($changed_features as $code => $value) { if ($value !== '') { $codes[] = $code; } } $codes = array_unique($codes); $features = $model->getByType($type_id, 'code'); foreach ($features as $code => &$feature) { $feature['internal'] = true; $key = array_search($code, $codes); if ($key !== false) { unset($codes[$key]); } } unset($feature); if ($codes) { $features += $model->getByField('code', $codes, 'code'); } foreach ($features as $code => &$feature) { $feature['feature_id'] = intval($feature['id']); } unset($feature); $features = $model->getValues($features); $this->view->assign('features', $features); } }