/** * Function creates or updates image * * @param mixed $image_data Array with image data * @param int $image_id Image ID * @param string $image_type Type (object) of image (may be product, category, and so on) * @param string $lang_code 2 letters language code * @return int Updated or inserted image ID. False on failure. */ function fn_update_image($image_data, $image_id = 0, $image_type = 'product', $lang_code = CART_LANGUAGE) { $images_path = $image_type . '/'; $_data = array(); if (empty($image_id)) { $max_id = db_get_next_auto_increment_id('images'); $img_id_subdir = floor($max_id / MAX_FILES_IN_DIR) . "/"; } else { $img_id_subdir = floor($image_id / MAX_FILES_IN_DIR) . "/"; } $images_path .= $img_id_subdir; list($_data['image_x'], $_data['image_y'], $mime_type) = fn_get_image_size($image_data['path']); // Get the real image type $ext = fn_get_image_extension($mime_type); if (strpos($image_data['name'], '.') === false) { $image_data['name'] .= '.' . $ext; } // Check if image path already set $image_path = db_get_field("SELECT image_path FROM ?:images WHERE image_id = ?i", $image_id); // Delete existing image if (!empty($image_path)) { Storage::instance('images')->delete($images_path . $image_path); // Clear all existing thumbnails fn_delete_image_thumbnails($images_path . $image_path); } /** * Hook is executed before saving or updating an image. * * @param array $image_data Image data * @param int $image_id Image ID * @param string $image_type Type of an object image belongs to (product, category, etc.) * @param string $images_path Path to directory image is located at * @param array $_data Data to be saved into "images" DB table * @param string $mime_type MIME type of an image file */ fn_set_hook('update_image', $image_data, $image_id, $image_type, $images_path, $_data, $mime_type); $params = array('file' => $image_data['path']); if (!empty($image_data['params'])) { $params = fn_array_merge($params, $image_data['params']); } list($_data['image_size'], $_data['image_path']) = Storage::instance('images')->put($images_path . $image_data['name'], $params); $_data['image_path'] = fn_basename($_data['image_path']); // we need to store file name only if (!empty($image_id)) { db_query("UPDATE ?:images SET ?u WHERE image_id = ?i", $_data, $image_id); } else { $image_id = db_query("INSERT INTO ?:images ?e", $_data); } return $image_id; }
/** * Function creates or updates image * * @param mixed $image_data Array with image data * @param int $image_id Image ID * @param string $image_type Type (object) of image (may be product, category, and so on) * @param string $lang_code 2 letters language code * @return int Updated or inserted image ID. False on failure. */ function fn_update_image($image_data, $image_id = 0, $image_type = 'product', $lang_code = CART_LANGUAGE) { $images_path = $image_type . '/'; $_data = array(); if (empty($image_id)) { $max_id = db_get_next_auto_increment_id('images'); $img_id_subdir = floor($max_id / MAX_FILES_IN_DIR) . "/"; } else { $img_id_subdir = floor($image_id / MAX_FILES_IN_DIR) . "/"; } $images_path .= $img_id_subdir; list($_data['image_x'], $_data['image_y'], $mime_type) = fn_get_image_size($image_data['path']); // Get the real image type $ext = fn_get_image_extension($mime_type); if (strpos($image_data['name'], '.') === false) { $image_data['name'] .= '.' . $ext; } // Check if image path already set $image_path = db_get_field("SELECT image_path FROM ?:images WHERE image_id = ?i", $image_id); // Delete existing image if (!empty($image_path)) { Storage::instance('images')->delete($images_path . $image_path); // Clear all existing thumbnails fn_delete_image_thumbnails($images_path . $image_path); } fn_set_hook('update_image', $image_data, $image_id, $image_type, $images_path, $_data); $params = array('file' => $image_data['path']); if (!empty($image_data['params'])) { $params = fn_array_merge($params, $image_data['params']); } list($_data['image_size'], $_data['image_path']) = Storage::instance('images')->put($images_path . $image_data['name'], $params); $_data['image_path'] = fn_basename($_data['image_path']); // we need to store file name only if (!empty($image_id)) { db_query("UPDATE ?:images SET ?u WHERE image_id = ?i", $_data, $image_id); } else { $image_id = db_query("INSERT INTO ?:images ?e", $_data); } return $image_id; }
function fn_banners_update_banner($data, $banner_id, $lang_code = DESCR_SL) { if (isset($data['timestamp'])) { $data['timestamp'] = fn_parse_date($data['timestamp']); } $data['localization'] = empty($data['localization']) ? '' : fn_implode_localizations($data['localization']); if (!empty($banner_id)) { db_query("UPDATE ?:banners SET ?u WHERE banner_id = ?i", $data, $banner_id); db_query("UPDATE ?:banner_descriptions SET ?u WHERE banner_id = ?i AND lang_code = ?s", $data, $banner_id, $lang_code); $banner_image_id = fn_get_banner_image_id($banner_id, $lang_code); $banner_image_exist = !empty($banner_image_id); $banner_is_multilang = Registry::get('addons.banners.banner_multilang') == 'Y'; $image_is_update = fn_banners_need_image_update(); if ($banner_is_multilang) { if ($banner_image_exist && $image_is_update) { fn_delete_image_pairs($banner_image_id, 'promo'); db_query("DELETE FROM ?:banner_images WHERE banner_id = ?i AND lang_code = ?s", $banner_id, $lang_code); $banner_image_exist = false; } } else { if (isset($data['url'])) { db_query("UPDATE ?:banner_descriptions SET url = ?s WHERE banner_id = ?i", $data['url'], $banner_id); } } if ($image_is_update && !$banner_image_exist) { $banner_image_id = db_query("INSERT INTO ?:banner_images (banner_id, lang_code) VALUE(?i, ?s)", $banner_id, $lang_code); } $pair_data = fn_attach_image_pairs('banners_main', 'promo', $banner_image_id, $lang_code); if (!$banner_is_multilang && !$banner_image_exist) { fn_banners_image_all_links($banner_id, $pair_data, $lang_code); } } else { $banner_id = $data['banner_id'] = db_query("REPLACE INTO ?:banners ?e", $data); foreach (Languages::getAll() as $data['lang_code'] => $v) { db_query("REPLACE INTO ?:banner_descriptions ?e", $data); } if (fn_banners_need_image_update()) { $data_banner_image = array('banner_id' => $banner_id, 'lang_code' => $lang_code); $banner_image_id = db_get_next_auto_increment_id('banner_images'); $pair_data = fn_attach_image_pairs('banners_main', 'promo', $banner_image_id, $lang_code); if (!empty($pair_data)) { db_query("INSERT INTO ?:banner_images ?e", $data_banner_image); fn_banners_image_all_links($banner_id, $pair_data, $lang_code); } } } return $banner_id; }