Exemple #1
0
/**
 * 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();
        }
    }
}