public function get_attribute_type() { //init controller data $this->extensions->hk_InitData($this, __FUNCTION__); $am = new AAttribute_Manager(); $this->data['attribute_info'] = $am->getAttribute($this->request->get['attribute_id']); //update controller data $this->extensions->hk_UpdateData($this, __FUNCTION__); $this->load->library('json'); $this->response->setOutput(AJson::encode($this->data['attribute_info']['attribute_type_id'])); }
private function _initTabs($active = null) { $method = has_value($this->request->get['attribute_id']) ? 'update' : 'insert'; foreach ($this->data['attribute_types'] as $type_id => $type) { if (!$type_id) { continue; } // check is extension enabled if (!in_array($type['controller'], $this->attribute_manager->getCoreAttributeTypesControllers())) { $controller = explode('/', $type['controller']); array_pop($controller); $controller = implode('/', $controller); if (!$this->extensions->isExtensionController($controller)) { continue; } } $this->data['tabs'][$type_id] = array('text' => $type['type_name'], 'href' => $method == 'insert' ? $this->html->getSecureURL('catalog/attribute/' . $method, '&attribute_type_id=' . $type_id) : ''); } if (in_array($active, array_keys($this->data['tabs']))) { $this->data['tabs'][$active]['active'] = 1; } else { $this->data['tabs'][key($this->data['tabs'])]['active'] = 1; } }
/** * @param array $data * @return bool */ private function _validateDownloadForm($data = array()) { if (!$this->user->canModify('catalog/product_files')) { $this->error['warning'] = $this->language->get('error_permission'); } $this->error = array(); $this->loadLanguage('catalog/files'); $this->loadModel('catalog/download'); if (!empty($data['download_id']) && !$this->model_catalog_download->getDownload($data['download_id'])) { $this->error['download_id'] = $this->language->get('error_download_exists'); } if (mb_strlen($data['name']) < 2 || mb_strlen($data['name']) > 64) { $this->error['name'] = $this->language->get('error_download_name'); } if (!in_array($data['activate'], array('before_order', 'immediately', 'order_status', 'manually'))) { $this->error['activate'] = $this->language->get('error_activate'); } else { if ($data['activate'] == 'order_status' && !(int) $data['activate_order_status_id']) { $this->error['order_status'] = $this->language->get('error_order_status'); } } $attr_mngr = new AAttribute_Manager('download_attribute'); $attr_errors = $attr_mngr->validateAttributeData($data['attributes'][$data['download_id']]); if ($attr_errors) { $this->error['attributes'] = $attr_errors; } $this->extensions->hk_ValidateData($this); return $this->error ? false : true; }
/** * Update product option value and value descriptions for set language * @param int $product_id * @param int $pd_opt_val_id * @param array $data * @param int $language_id */ public function updateProductOptionValueAndDescription($product_id, $pd_opt_val_id, $data, $language_id) { $attribute_value_id = $data['attribute_value_id']; if (is_array($data['attribute_value_id'])) { $attribute_value_id = ''; } $am = new AAttribute_Manager(); //build grouped attributes if this is a parent attribute if (is_array($data['attribute_value_id'])) { //update children option values from global attributes $groupData = array(); foreach ($data['attribute_value_id'] as $child_option_id => $attr_val_id) { #special serialized data for grouped options $groupData[] = array('attr_id' => $child_option_id, 'attr_v_id' => $attr_val_id); } $data['grouped_attribute_data'] = serialize($groupData); } $this->updateProductOptionValue($pd_opt_val_id, $attribute_value_id, $data); if (is_array($data['attribute_value_id'])) { //update children option values description from global attributes $group_description = array(); $descr_names = array(); foreach ($data['attribute_value_id'] as $child_option_id => $attr_val_id) { #special insert for grouped options foreach ($am->getAttributeValueDescriptions($attr_val_id) as $lang_id => $name) { if ($language_id == $lang_id) { $group_description[$language_id][] = array('attr_v_id' => $attr_val_id, 'name' => $name); $descr_names[$language_id][] = $name; } } } // Insert generic merged name foreach ($descr_names as $lang_id => $name) { if ($language_id == $lang_id && count($group_description[$language_id])) { $group_description[$language_id][] = $name; $grouped_names = serialize($group_description[$language_id]); $this->updateProductOptionValueDescriptions($product_id, $pd_opt_val_id, implode(' / ', $name), $language_id, $grouped_names); } } } else { if (!$data['attribute_value_id']) { $exist = $this->getProductOptionValueDescriptions($product_id, $pd_opt_val_id, $language_id); if ($exist->num_rows) { $this->updateProductOptionValueDescriptions($product_id, $pd_opt_val_id, $data['name'], $language_id); } else { $this->insertProductOptionValueDescriptions($product_id, $pd_opt_val_id, $data['name'], $language_id); } } else { $valueDescriptions = $am->getAttributeValueDescriptions((int) $data['attribute_value_id']); foreach ($valueDescriptions as $lang_id => $name) { if ($language_id == $lang_id) { //Update only language that we currently work with $this->updateProductOptionValueDescriptions($product_id, $pd_opt_val_id, $name, $language_id); } } } } $this->cache->remove('product'); }
/** * @param int $download_id * @return array */ public function getDownloadAttributes($download_id) { $attr_mngr = new AAttribute_Manager('download_attribute'); $attribute_info = $attr_mngr->getAttributeTypeInfo('download_attribute'); $attributes = $attr_mngr->getAttributes(array('attribute_type_id' => $attribute_info['attribute_type_id'], 'sort' => 'sort_order', 'order' => 'ASC', 'limit' => null)); $ids = array(); foreach ($attributes as $attribute) { $ids[] = (int) $attribute['attribute_id']; $attribute['values'] = $attr_mngr->getAttributeValues($attribute['attribute_id']); $output[$attribute['attribute_id']] = $attribute; } if ($ids) { $result = $this->db->query("SELECT attribute_id, attribute_value_ids as value\n\t\t\t\t\t\t\t\t\t\t FROM " . $this->db->table('download_attribute_values') . "\n\t\t\t\t\t\t\t\t\t\t WHERE attribute_id IN (" . implode(',', $ids) . ") AND download_id = '" . $download_id . "'"); foreach ($result->rows as $row) { if (isset($output[$row['attribute_id']])) { $output[$row['attribute_id']]['selected_values'] = unserialize($row['value']); } } } return $output; }
/** * update only one field * */ public function update_field() { //init controller data $this->extensions->hk_InitData($this, __FUNCTION__); if (!$this->user->canModify('listing_grid/download')) { $error = new AError(''); return $error->toJSONResponse('NO_PERMISSIONS_402', array('error_text' => sprintf($this->language->get('error_permission_modify'), 'listing_grid/download'), 'reset_value' => true)); } $this->loadLanguage('catalog/download'); $this->loadModel('catalog/download'); $allowedFields = array('name', 'filename', 'mask', 'max_downloads', 'shared', 'expire_days', 'sort_order', 'activate_order_status_id', 'status', 'attributes'); if (isset($this->request->get['id'])) { $download_id = (int) $this->request->get['id']; //request sent from edit form. ID in url foreach ($this->request->post as $key => $value) { if (!in_array($key, $allowedFields)) { continue; } // check first if ($key == 'name' && (mb_strlen($value) < 2 || mb_strlen($value) > 64)) { $error = $this->language->get('error_download_name'); } elseif ($key == 'activate' && !in_array($data['activate'], array('before_order', 'immediately', 'order_status', 'manually'))) { $error = $this->language->get('error_activate'); } elseif ($key == 'attributes') { $attr_mngr = new AAttribute_Manager('download_attribute'); $attr_errors = $attr_mngr->validateAttributeData($value[$download_id]); if ($attr_errors) { $error = $this->language->get('error_download_attributes') . '<br> ' . implode('<br> ', $attr_errors); } } if (!$error) { $data = array($key => $value); $this->model_catalog_download->editDownload($download_id, $data); } else { $e = new AError(''); return $e->toJSONResponse('VALIDATION_ERROR_406', array('error_text' => $error)); } } return null; } else { //request sent from jGrid. ID is key of array foreach ($this->request->post as $field => $value) { foreach ($value as $k => $v) { if ($field == 'name') { if (mb_strlen($v) < 2 || mb_strlen($v) > 64) { $err = $this->language->get('error_name'); $error = new AError(''); return $error->toJSONResponse('VALIDATION_ERROR_406', array('error_text' => $err)); } } $this->model_catalog_download->editDownload($k, array($field => $v)); } } } //update controller data $this->extensions->hk_UpdateData($this, __FUNCTION__); return null; }
/** * @param array $data * @return bool */ private function _validateDownloadForm($data = array()) { $this->error = array(); $this->load->language('catalog/files'); if (!empty($data['download_id']) && !$this->model_catalog_download->getDownload($data['download_id'])) { $this->error['download_id'] = $this->language->get('error_download_exists'); } if (mb_strlen($data['name']) < 2 || mb_strlen($data['name']) > 64) { $this->error['name'] = $this->language->get('error_download_name'); } if (!in_array($data['activate'], array('before_order', 'immediately', 'order_status', 'manually'))) { $this->error['activate'] = $this->language->get('error_activate'); } else { if ($data['activate'] == 'order_status' && !(int) $data['activate_order_status_id']) { $this->error['order_status'] = $this->language->get('error_order_status'); } } $attr_mngr = new AAttribute_Manager('download_attribute'); $attr_errors = $attr_mngr->validateAttributeData($data['attributes'][$data['download_id']]); if ($attr_errors) { $this->error['atributes'] = $this->language->get('error_download_attributes') . '<br> ' . implode('<br> ', $attr_errors); } return $this->error ? false : true; }