/** * Gets image pairs (icon, detailed) * * @param array/int $object_ids List of Object IDs or Object ID * @param string $object_type Type: product, category, banner, etc. * @param string $pair_type (M)ain or (A)dditional * @param bool $get_icon * @param bool $get_detailed * @param string $lang_code 2-letters code * @return array Pair data */ function fn_get_image_pairs($object_ids, $object_type, $pair_type, $get_icon = true, $get_detailed = true, $lang_code = CART_LANGUAGE) { /** * Changes input params for fn_get_image_pairs function * * @param array/int $object_ids List of Object IDs or Object ID * @param string $object_type Type: product, category, banner, etc. * @param string $pair_type (M)ain or (A)dditional * @param bool $get_icon * @param bool $get_detailed * @param string $lang_code 2-letters code * @return array Pair data */ fn_set_hook('get_image_pairs_pre', $object_ids, $object_type, $pair_type, $get_icon, $get_detailed, $lang_code); $icon_pairs = $detailed_pairs = $pairs_data = array(); $cond = is_array($object_ids) ? db_quote("AND ?:images_links.object_id IN (?n)", $object_ids) : db_quote("AND ?:images_links.object_id = ?i", $object_ids); if ($get_icon == true || $get_detailed == true) { if ($get_icon == true) { $join_cond = "?:images_links.image_id = ?:images.image_id"; $icon_pairs = db_get_array("SELECT ?:images_links.*, ?:images.image_path, ?:common_descriptions.description AS alt, ?:images.image_x, ?:images.image_y, ?:images.image_id as images_image_id" . " FROM ?:images_links" . " LEFT JOIN ?:images ON {$join_cond}" . " LEFT JOIN ?:common_descriptions ON ?:common_descriptions.object_id = ?:images.image_id AND ?:common_descriptions.object_holder = 'images' AND ?:common_descriptions.lang_code = ?s" . " WHERE ?:images_links.object_type = ?s AND ?:images_links.type = ?s {$cond}" . " ORDER BY ?:images_links.position, ?:images_links.pair_id", $lang_code, $object_type, $pair_type); } if ($get_detailed == true) { $join_cond = db_quote("?:images_links.detailed_id = ?:images.image_id"); $detailed_pairs = db_get_array("SELECT ?:images_links.*, ?:images.image_path, ?:common_descriptions.description AS alt, ?:images.image_x, ?:images.image_y, ?:images.image_id as images_image_id" . " FROM ?:images_links" . " LEFT JOIN ?:images ON {$join_cond}" . " LEFT JOIN ?:common_descriptions ON ?:common_descriptions.object_id = ?:images.image_id AND ?:common_descriptions.object_holder = 'images' AND ?:common_descriptions.lang_code = ?s" . " WHERE ?:images_links.object_type = ?s AND ?:images_links.type = ?s {$cond}" . " ORDER BY ?:images_links.position, ?:images_links.pair_id", $lang_code, $object_type, $pair_type); } foreach ((array) $object_ids as $object_id) { $pairs_data[$object_id] = array(); } // Convert the received data to the standard format in order to keep the backward compatibility foreach ($icon_pairs as $pair) { $_pair = array('pair_id' => $pair['pair_id'], 'image_id' => $pair['image_id'], 'detailed_id' => $pair['detailed_id'], 'position' => $pair['position']); if (!empty($pair['images_image_id'])) { //get icon data if exist $icon = fn_attach_absolute_image_paths($pair, $object_type); $_pair['icon'] = array('image_path' => $icon['image_path'], 'alt' => $icon['alt'], 'image_x' => $icon['image_x'], 'image_y' => $icon['image_y'], 'http_image_path' => $icon['http_image_path'], 'https_image_path' => $icon['https_image_path'], 'absolute_path' => $icon['absolute_path'], 'relative_path' => $icon['relative_path']); } $pairs_data[$pair['object_id']][$pair['pair_id']] = $_pair; } // -foreach icon_pairs foreach ($detailed_pairs as $pair) { $pair_id = $pair['pair_id']; $object_id = $pair['object_id']; if (!empty($pairs_data[$object_id][$pair_id]['detailed_id'])) { $detailed = fn_attach_absolute_image_paths($pair, 'detailed'); $pairs_data[$object_id][$pair_id]['detailed'] = array('image_path' => $detailed['image_path'], 'alt' => $detailed['alt'], 'image_x' => $detailed['image_x'], 'image_y' => $detailed['image_y'], 'http_image_path' => $detailed['http_image_path'], 'https_image_path' => $detailed['https_image_path'], 'absolute_path' => $detailed['absolute_path'], 'relative_path' => $detailed['relative_path']); } elseif (empty($pairs_data[$object_id][$pair_id]['pair_id'])) { $pairs_data[$object_id][$pair_id] = array('pair_id' => $pair['pair_id'], 'image_id' => $pair['image_id'], 'detailed_id' => $pair['detailed_id'], 'position' => $pair['position']); if (!empty($pair['images_image_id'])) { //get detailed data if exist $detailed = fn_attach_absolute_image_paths($pair, 'detailed'); $pairs_data[$object_id][$pair_id]['detailed'] = array('image_path' => $detailed['image_path'], 'alt' => $detailed['alt'], 'image_x' => $detailed['image_x'], 'image_y' => $detailed['image_y'], 'http_image_path' => $detailed['http_image_path'], 'https_image_path' => $detailed['https_image_path'], 'absolute_path' => $detailed['absolute_path'], 'relative_path' => $detailed['relative_path']); } } } // -foreach detailed_pairs } else { $pairs_data = db_get_hash_multi_array("SELECT pair_id, image_id, detailed_id, object_id FROM ?:images_links WHERE object_type = ?s AND type = ?s {$cond}", array('object_id', 'pair_id'), $object_type, $pair_type); } /** * Changes pair data informatin * * @param array/int $object_ids List of Object IDs or Object ID * @param string $object_type Type: product, category, banner, etc. * @param string $pair_type (M)ain or (A)dditional * @param bool $get_icon * @param bool $get_detailed * @param string $lang_code 2-letters code * @param array $pairs_data Pairs data */ fn_set_hook('get_image_pairs_post', $object_ids, $object_type, $pair_type, $get_icon, $get_detailed, $lang_code, $pairs_data); if (is_array($object_ids)) { return $pairs_data; } else { if ($pair_type == 'A') { return $pairs_data[$object_ids]; } else { return !empty($pairs_data[$object_ids]) ? reset($pairs_data[$object_ids]) : array(); } } }
function fn_get_image_pairs($object_ids, $object_type, $pair_type, $get_icon = true, $get_detailed = true, $lang_code = CART_LANGUAGE, $product_id = 0, $test = false) { $icon_pairs = $detailed_pairs = $pairs_data = array(); $cond = is_array($object_ids) ? db_quote("AND ?:images_links.object_id IN (?n)", $object_ids) : db_quote("AND ?:images_links.object_id = ?i", $object_ids); if ($get_icon == true || $get_detailed == true) { if ($get_icon == true) { if ($object_type == "p_feature_var_extra") { if (AREA == 'A') { $cond .= db_quote(" AND ?:images_links.image_id>0 AND ?:images_links.detailed_id = ?i ", $_REQUEST['product_id']); } elseif ($product_id) { $cond .= db_quote(" AND ?:images_links.image_id>0 AND ?:images_links.detailed_id = ?i ", $product_id); } } $join_cond = "?:images_links.image_id = ?:images.image_id"; $icon_pairs = db_get_array("SELECT ?:images_links.*, ?:images.image_path, ?:common_descriptions.description AS alt, ?:images.image_x, ?:images.image_y, ?:images.image_id as images_image_id" . " FROM ?:images_links" . " LEFT JOIN ?:images ON {$join_cond}" . " LEFT JOIN ?:common_descriptions ON ?:common_descriptions.object_id = ?:images.image_id AND ?:common_descriptions.object_holder = 'images' AND ?:common_descriptions.lang_code = ?s" . " WHERE ?:images_links.object_type = ?s AND ?:images_links.type = ?s {$cond}" . " ORDER BY ?:images_links.position, ?:images_links.pair_id", $lang_code, $object_type, $pair_type); } if ($get_detailed == true) { $join_cond = db_quote("?:images_links.detailed_id = ?:images.image_id"); $detailed_pairs = db_get_array("SELECT ?:images_links.*, ?:images.image_path, ?:common_descriptions.description AS alt, ?:images.image_x, ?:images.image_y, ?:images.image_id as images_image_id" . " FROM ?:images_links" . " LEFT JOIN ?:images ON {$join_cond}" . " LEFT JOIN ?:common_descriptions ON ?:common_descriptions.object_id = ?:images.image_id AND ?:common_descriptions.object_holder = 'images' AND ?:common_descriptions.lang_code = ?s" . " WHERE ?:images_links.object_type = ?s AND ?:images_links.type = ?s {$cond}" . " ORDER BY ?:images_links.position, ?:images_links.pair_id", $lang_code, $object_type, $pair_type); } foreach ((array) $object_ids as $object_id) { $pairs_data[$object_id] = array(); } // Convert the received data to the standard format in order to keep the backward compatibility foreach ($icon_pairs as $pair) { $_pair = array('pair_id' => $pair['pair_id'], 'image_id' => $pair['image_id'], 'detailed_id' => $pair['detailed_id'], 'position' => $pair['position']); if (!empty($pair['images_image_id'])) { //get icon data if exist $icon = fn_attach_absolute_image_paths($pair, $object_type); $_pair['icon'] = array('image_path' => $icon['image_path'], 'alt' => $icon['alt'], 'image_x' => $icon['image_x'], 'image_y' => $icon['image_y'], 'http_image_path' => $icon['http_image_path'], 'absolute_path' => $icon['absolute_path'], 'relative_path' => $icon['relative_path']); } $pairs_data[$pair['object_id']][$pair['pair_id']] = $_pair; } // -foreach icon_pairs foreach ($detailed_pairs as $pair) { $pair_id = $pair['pair_id']; $object_id = $pair['object_id']; if (!empty($pairs_data[$object_id][$pair_id]['detailed_id'])) { $detailed = fn_attach_absolute_image_paths($pair, 'detailed'); $pairs_data[$object_id][$pair_id]['detailed'] = array('image_path' => $detailed['image_path'], 'alt' => $detailed['alt'], 'image_x' => $detailed['image_x'], 'image_y' => $detailed['image_y'], 'http_image_path' => $detailed['http_image_path'], 'absolute_path' => $detailed['absolute_path'], 'relative_path' => $detailed['relative_path']); } elseif (empty($pairs_data[$object_id][$pair_id]['pair_id'])) { $pairs_data[$object_id][$pair_id] = array('pair_id' => $pair['pair_id'], 'image_id' => $pair['image_id'], 'detailed_id' => $pair['detailed_id'], 'position' => $pair['position']); if (!empty($pair['images_image_id'])) { //get detailed data if exist $detailed = fn_attach_absolute_image_paths($pair, 'detailed'); $pairs_data[$object_id][$pair_id]['detailed'] = array('image_path' => $detailed['image_path'], 'alt' => $detailed['alt'], 'image_x' => $detailed['image_x'], 'image_y' => $detailed['image_y'], 'http_image_path' => $detailed['http_image_path'], 'absolute_path' => $detailed['absolute_path'], 'relative_path' => $detailed['relative_path']); } } } // -foreach detailed_pairs } else { $pairs_data = db_get_hash_multi_array("SELECT pair_id, image_id, detailed_id, object_id FROM ?:images_links WHERE object_type = ?s AND type = ?s {$cond}", array('object_id', 'pair_id'), $object_type, $pair_type); } if (is_array($object_ids)) { return $pairs_data; } else { if ($pair_type == 'A') { return $pairs_data[$object_ids]; } else { return !empty($pairs_data[$object_ids]) ? reset($pairs_data[$object_ids]) : array(); } } }