Пример #1
0
 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']));
 }
Пример #2
0
 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;
     }
 }
Пример #3
0
 /**
  * @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;
 }
Пример #4
0
 /**
  *    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');
 }
Пример #5
0
 /**
  * @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;
 }
Пример #6
0
 /**
  * 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>&nbsp;&nbsp;&nbsp;' . implode('<br>&nbsp;&nbsp;&nbsp;', $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;
 }
Пример #7
0
 /**
  * @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>&nbsp;&nbsp;&nbsp;' . implode('<br>&nbsp;&nbsp;&nbsp;', $attr_errors);
     }
     return $this->error ? false : true;
 }