/** * Returnts the full person attribute record (person_attributes and person_info_variants_to_attributes) * * @author Andrei V. Zhuravlev * @param $variant_id integer variant id */ function getPersonCustomAttributes($variant_id) { global $application; $tables = $this->getTables(); $s = $tables['person_info_variants_to_attributes']['columns']; $a = $tables['person_attributes']['columns']; $query = new DB_Select(); foreach ($s as $k => $v) { if ($k != 'name' && $k != 'descr') { $query->addSelectField($v); } } $query->setMultiLangAlias('_ml_name', 'person_info_variants_to_attributes', $s['name'], $s['id'], 'Checkout'); $query->addSelectField($query->getMultiLangAlias('_ml_name'), 'person_attribute_visible_name'); $query->setMultiLangAlias('_ml_descr', 'person_info_variants_to_attributes', $s['descr'], $s['id'], 'Checkout'); $query->addSelectField($query->getMultiLangAlias('_ml_descr'), 'person_attribute_description'); foreach ($a as $v) { $query->addSelectField($v); } $query->WhereValue($s['variant_id'], DB_EQ, $variant_id); /*if ($custom == CUSTOM_ATTRIBUTES_ONLY) {*/ $query->WhereAND(); $query->WhereValue($a['is_custom'], DB_EQ, 1); $query->WhereAND(); $query->WhereField($a['id'], DB_EQ, $s['attribute_id']); //} /*else if ($custom == STANDARD_ATTRIBUTES_ONLY) { $query->WhereAND(); $query->WhereValue($a['is_custom'], DB_EQ, 0); $query->WhereAND(); $query->WhereField($a['id'], DB_EQ, $s['attribute_id']); } else if ($custom == ALL_ATTRIBUTES) { }*/ $query->SelectOrder($s['sort']); $result = $application->db->getDB_Result($query); return $result; }
/** * Returnts the full person custom attribute record (person_attributes and person_info_variants_to_attributes) * * @author Andrei V. Zhuravlev * @param $variantId integer variant id * @param $attributeId integer attribute id */ function getPersonCustomAttributeData($attributeId) { global $application; $tables = $this->getTables(); $piva = $tables['person_info_variants_to_attributes']['columns']; $pa = $tables['person_attributes']['columns']; $query = new DB_Select(); foreach ($piva as $k => $v) { if ($k != 'name' && $k != 'descr') { $query->addSelectField($v); } } $query->setMultiLangAlias('_ml_name', 'person_info_variants_to_attributes', $piva['name'], $piva['id'], 'Checkout'); $query->addSelectField($query->getMultiLangAlias('_ml_name'), 'person_attribute_visible_name'); $query->setMultiLangAlias('_ml_descr', 'person_info_variants_to_attributes', $piva['descr'], $piva['id'], 'Checkout'); $query->addSelectField($query->getMultiLangAlias('_ml_descr'), 'person_attribute_description'); foreach ($pa as $v) { $query->addSelectField($v); } $query->WhereField($piva['attribute_id'], DB_EQ, $pa['id']); $query->WhereAnd(); $query->WhereValue($piva['attribute_id'], DB_EQ, $attributeId); $query->WhereAnd(); $query->WhereValue($pa['is_custom'], DB_EQ, "1"); $result = $application->db->getDB_Result($query); return $result; }
function getCFldValues() { global $application; $values = ""; if ($this->mode == "add") { $values = ""; if (isset($this->field_data['postdata']['customFieldValues'])) { $values = $this->field_data['postdata']['customFieldValues']; } } else { $itid = $this->field_data[0]['input_type_id']; $tables = modAPIFunc("Catalog", "getTables"); $t_input_type_values = $tables['input_type_values']['columns']; $query = new DB_Select(); $query->setMultiLangAlias('_ml_value', 'input_type_values', $t_input_type_values['value'], $t_input_type_values['id'], 'Catalog'); $query->addSelectField($query->getMultiLangAlias('_ml_value'), 'value'); $query->WhereValue($t_input_type_values['it_id'], DB_EQ, $itid); $query->SelectOrder($t_input_type_values['id'], 'ASC'); $result = $application->db->getDB_Result($query); foreach ($result as $r) { $values .= modApiFunc('Catalog', 'getInputTypeActualValue', $r['value']) . "\n"; } } return "<textarea class=\"form-control\"" . $this->HtmlForm->genInputTextAreaField(20, 'customFieldValues', 5) . " id='customFieldValues' disabled=disabled>" . $values . "</textarea>"; }
function getPersonInfoGroupAttrs($group_id, $attr_vis = PERSON_INFO_GROUP_ATTR_ALL) { global $application; $tables = $this->getTables(); $pia_table = $tables['ca_person_info_attrs']['columns']; $atg_table = $tables['ca_attrs_to_groups']['columns']; $query = new DB_Select(); $query->addSelectTable('ca_person_info_attrs'); $query->addSelectTable('ca_attrs_to_groups'); $query->addSelectField($pia_table['attr_id'], 'attr_id'); $query->addSelectField($pia_table['attr_name'], 'attr_name'); $query->addSelectField($pia_table['lang_code'], 'lang_code'); $query->setMultiLangAlias('_ml_name', 'ca_attrs_to_groups', $atg_table['visible_name'], $atg_table['ag_id'], 'Customer_Account'); $query->addSelectField($query->getMultiLangAlias('_ml_name'), 'visible_name'); $query->addSelectField($atg_table['is_visible'], 'is_visible'); $query->addSelectField($atg_table['is_required'], 'is_required'); $query->Where($atg_table['group_id'], DB_EQ, $group_id); $query->WhereAND(); $query->Where($pia_table['attr_id'], DB_EQ, $atg_table['attr_id']); if ($attr_vis == PERSON_INFO_GROUP_ATTR_VISIBLE) { $query->WhereAND(); $query->WhereValue($atg_table['is_visible'], DB_EQ, 'Y'); } elseif ($attr_vis == PERSON_INFO_GROUP_ATTR_HIDDEN) { $query->WhereAND(); $query->WhereValue($atg_table['is_visible'], DB_EQ, 'N'); } $query->SelectOrder($atg_table['sort_order']); $res = $application->db->getDB_Result($query); $group_name = $this->getPersonInfoGroupNameByID($group_id); if ($group_name == 'Customer') { $attrs = $res; return $attrs; } foreach ($res as $k => $attr_info) { if ($attr_vis == PERSON_INFO_GROUP_ATTR_ALL) { $attrs[] = $attr_info; } if ($attr_vis == PERSON_INFO_GROUP_ATTR_VISIBLE) { if ($this->__isCOAttrVisible($this->detectCOPITypeID($group_name), $this->detectCOAttrID($attr_info['attr_name']))) { $attrs[] = $attr_info; } } if ($attr_vis == PERSON_INFO_GROUP_ATTR_HIDDEN) { if ($this->__isCOAttrHidden($this->detectCOPITypeID($group_name), $this->detectCOAttrID($attr_info['attr_name']))) { $attrs[] = $attr_info; } } } return $attrs; }
/** * Gets a body of notification block tag. * *@param integer $n_id - notification id *@param integer $b_id - block tag id * *@return string - block tag body */ function getNotificationBlockBody($n_id, $b_id) { $body = ""; global $application; $tables = $this->getTables(); $nbb = $tables['notification_blocktag_bodies']['columns']; $query = new DB_Select(); $query->setMultiLangAlias('_ml_ntfctn_body', 'notification_blocktag_bodies', $nbb['body'], $nbb['id'], 'Notifications'); $query->addSelectField($query->getMultiLangAlias('_ml_ntfctn_body'), 'Body'); $query->WhereValue($nbb['n_id'], DB_EQ, $n_id); $query->WhereAnd(); $query->WhereValue($nbb['nb_id'], DB_EQ, $b_id); $result = $application->db->getDB_Result($query); if (sizeof($result) != 0) { $body = $result[0]['Body']; } return $body; }
/** * Prepares data to add order to the database. * * @param int $option_id - ID of the option, to prepare data for * @param mixed option_data - array element describing the combination * (for details see wiki) * * @return array( * $option_name - option name * ,$values_string - string with the name(names) of the option value (values) * in the combination * ,$modifiers = array( * 'price' => price modificator * ,'weight' => weight modificator * ,'shipping_cost' => shipping cost modificator * ,'handling_cost' => handling cost modificator * ) * ) */ function prepareDataForPlaceOrder($option_id, $option_data) { $modifiers = $this->__getInnerVar("_MODIFIERS"); if (is_numeric($option_data)) { //SS $option_info = $this->getOptionInfo($option_id); $value_info = $this->getValueInfo($option_data); $mods = array(); for ($i = 0; $i < count($modifiers); $i++) { $mods[$modifiers[$i]] = $value_info[$modifiers[$i] . "_modifier"]; } return array($option_info['display_name'], $value_info['value_name'], $mods); //modApiFunc("Product_Options", "convertModifierPrices", $mods, $currency_code, $default_currency_code)); } elseif (is_array($option_data) and !isset($option_data['val'])) { //MS $option_info = $this->getOptionInfo($option_id); $values_list = array_keys($option_data); $values_string = ""; $mods_array = array(); for ($i = 0; $i < count($modifiers); $i++) { $mods_array[$modifiers[$i]] = 0; } if (!empty($values_list)) { global $application; $tables = $this->getTables(); $values_table = $tables['po_options_values']['columns']; $query = new DB_Select(); $query->addSelectTable('po_options_values'); $query->setMultiLangAlias('_value_name', 'po_options_values', $values_table['value_name'], $values_table['value_id'], 'Product_Options'); $query->addSelectField($query->getMultiLangAlias('_value_name'), 'value_name'); for ($i = 0; $i < count($modifiers); $i++) { $query->addSelectField($values_table[$modifiers[$i] . "_modifier"], $modifiers[$i] . "_modifier"); } $query->Where($values_table['value_id'], DB_IN, '(\'' . implode("','", $values_list) . '\')'); $res = $application->db->getDB_Result($query); $vals = array(); foreach ($res as $k => $value_data) { $vals[] = $value_data['value_name']; for ($i = 0; $i < count($modifiers); $i++) { $mods_array[$modifiers[$i]] += $value_data[$modifiers[$i] . "_modifier"]; } } $values_string = implode(", ", $vals); } return array($option_info['display_name'], $values_string, $mods_array); //modApiFunc("Product_Options", "convertModifierPrices", $mods_array, $currency_code, $default_currency_code)); } elseif (is_array($option_data) and isset($option_data['val']) and !isset($option_data['is_file'])) { //CI $option_info = $this->getOptionInfo($option_id); if (preg_match("/^CB/", $option_info['show_type']) and (!isset($option_data['cb']) or $option_data['cb'] != 'on')) { $option_data['val'] = ""; } $mods_array = array(); for ($i = 0; $i < count($modifiers); $i++) { $mods_array[$modifiers[$i]] = 0; } $value_data = array_shift(array_values($this->getValuesList($option_id))); for ($i = 0; $i < count($modifiers); $i++) { $mods_array[$modifiers[$i]] += $value_data[$modifiers[$i] . "_modifier"]; } return array($option_info['display_name'], $option_data['val'], $mods_array); //modApiFunc("Product_Options", "convertModifierPrices", $mods_array, $currency_code, $default_currency_code)); } elseif (is_array($option_data) and isset($option_data['val']) and isset($option_data['is_file'])) { //UF $option_info = $this->getOptionInfo($option_id); $mods_array = array(); for ($i = 0; $i < count($modifiers); $i++) { $mods_array[$modifiers[$i]] = 0; } $value_data = array_shift(array_values($this->getValuesList($option_id))); for ($i = 0; $i < count($modifiers); $i++) { $mods_array[$modifiers[$i]] += $value_data[$modifiers[$i] . "_modifier"]; } return array($option_info['display_name'], $option_data['val'], $mods_array); //modApiFunc("Product_Options", "convertModifierPrices", $mods_array, $currency_code, $default_currency_code)); } }
function getTaxFormulaViewFull($tax_rate_id, $specific_rate = "") { if (!$tax_rate_id || $tax_rate_id == 0) { return ""; } global $application; $MessageResources =& $application->getInstance('MessageResources'); $tables = $this->getTables(); $tr = $tables['tax_rates']['columns']; $tn = $tables['tax_names']['columns']; $query = new DB_Select(); $query->addSelectField($tr['rate'], 'Rate'); $query->addSelectField($tr['formula'], 'Formula'); $query->addSelectField($tr['applicable'], 'Applicable'); $query->addLeftJoin('tax_names', $tn['id'], DB_EQ, $tr['tn_id']); $query->setMultiLangAlias('_name', 'tax_names', $tn['name'], $tn['id'], 'Taxes'); $query->addSelectField($query->getMultiLangAlias('_name'), 'TaxName'); $query->WhereValue($tr['id'], DB_EQ, $tax_rate_id); $result = $application->db->getDB_Result($query); if (sizeof($result) == 0) { return ""; } $result = $result[0]; if ($specific_rate != "") { $result['Rate'] = "[{$specific_rate}]"; } if ($result["Applicable"] == "false") { return prepareHTMLDisplay($result['TaxName']) . " = " . $MessageResources->getMessage('TAX_RATE_NOT_APPLICABLE_LABEL'); } $replace = array(); foreach ($this->getTaxNamesList() as $taxNameInfo) { $replace['{t_' . $taxNameInfo['Id'] . '}'] = prepareHTMLDisplay($taxNameInfo['Name']); } foreach ($this->getTaxCostsList() as $cost) { $replace['{p_' . $cost['id'] . '}'] = $MessageResources->getMessage($cost['name']); } preg_match_all("/([0-9]+\\.?[0-9]+)/", $result['Formula'], $numbers); for ($j = 0; $j < sizeof($numbers[0]); $j++) { $replace[$numbers[0][$j]] = modApiFunc("Localization", "num_format", $numbers[0][$j]); } $result['Formula'] = strtr($result['Formula'], $replace); return prepareHTMLDisplay($result['TaxName']) . " = " . $result['Rate'] . "% * (" . $result['Formula'] . ")"; }