Execute("select ptc.* from " . TABLE_PRODUCTS_TO_CATEGORIES . " ptc left join " . TABLE_PRODUCTS_DESCRIPTION . " pd on ptc.products_id = pd.products_id and pd.language_id = '" . (int)$_SESSION['languages_id'] . "' where ptc.categories_id='" . $current_category_id . "' order by pd.products_name"); $products_filter = $new_product_query->fields['products_id']; zen_redirect(zen_href_link(FILENAME_IMAGE_HANDLER, 'page=manager&products_filter=' . $products_filter . '¤t_category_id=' . $current_category_id)); } // set categories and products if not set if ($products_filter == '' and $current_category_id != '') { $new_product_query = $db->Execute("select ptc.* from " . TABLE_PRODUCTS_TO_CATEGORIES . " ptc left join " . TABLE_PRODUCTS_DESCRIPTION . " pd on ptc.products_id = pd.products_id and pd.language_id = '" . (int)$_SESSION['languages_id'] . "' where ptc.categories_id='" . $current_category_id . "' order by pd.products_name"); $products_filter = $new_product_query->fields['products_id']; if ($products_filter != '') { zen_redirect(zen_href_link(FILENAME_IMAGE_HANDLER, 'page=manager&products_filter=' . $products_filter . '¤t_category_id=' . $current_category_id)); } } else { if ($products_filter == '' and $current_categories_id == '') { $reset_categories_id = zen_get_category_tree('', '', '0', '', '', true); $current_category_id = $reset_categories_id[0]['id']; $new_product_query = $db->Execute("select ptc.* from " . TABLE_PRODUCTS_TO_CATEGORIES . " ptc left join " . TABLE_PRODUCTS_DESCRIPTION . " pd on ptc.products_id = pd.products_id and pd.language_id = '" . (int)$_SESSION['languages_id'] . "' where ptc.categories_id='" . $current_category_id . "' order by pd.products_name"); $products_filter = $new_product_query->fields['products_id']; $_GET['products_filter'] = $products_filter; } } require(DIR_WS_MODULES . FILENAME_PREV_NEXT); if ($action == 'save') { $check = 0; $data = array(); $data['imgExtension'] = substr( $_FILES['default_image']['name'], strrpos($_FILES['default_image']['name'], '.')); /* Nigel fix here This basically converts the extension of the uploaded file to match the main image, PROVIDED they are the same file type */ $sm_imgExtension = strtolower($data['imgExtension']); $df_extension = strtolower($_GET['imgExtension']); // file extension of base original file //ugly but effective code if ($sm_imgExtension == $df_extension) { // this should get rid of any capitilisation issues for files with the same extensions $data['imgExtension'] = $_GET['imgExtension']; } // This deals with any jpg that have differing extensions eg jpeg and jpg elseif ((($sm_imgExtension == ".jpeg") && ($df_extension == ".jpg")) || (($sm_imgExtension == ".jpg") && ($df_extension == ".jpeg")) ) {// this is where they don't match eg original image is a gif and additional image is a jpg or png $data['imgExtension'] = $_GET['imgExtension']; } else { //file mismatch really should put a warning in here that the additional image won't show // or a call to convert the actual image to a compatible format } // Check the data if ((isset($_GET['newImg']) && $_GET['newImg'] == 1) || (isset($_GET['imgEdit']) && ($_GET['imgEdit'] == 1) && ($_GET['imgSuffix'] == '') && ($_POST['imgNaming'] != 'keep_name') && ($_FILES['default_image']['name'] != ''))) { // New Image Name and Base Dir if ( ($_POST['imgBase'] != '') ) { $data['imgBase'] = $_POST['imgBase']; echo ""; } else { // Extract the name from the default file if ($_FILES['default_image']['name'] != '') { preg_match("/(.+)\.[^\.]+$/", $_FILES['default_image']['name'], $matches); $data['imgBase'] = $matches[1]; } else { $messageStack->add(TEXT_MSG_AUTO_BASE_ERROR, 'error'); $check = 1; } } // catch nasty characters if (preg_match("|\+|", $data['imgBase'])) { $data['imgBase'] = str_replace("\+", "-", $data['imgBase']); $messageStack->add( TEXT_MSG_AUTO_REPLACE .$data['imgBase'], 'warning' ); } if ( $_POST['imgNewBaseDir'] != '') { $data['imgBaseDir'] = $_POST['imgNewBaseDir']; } else { $data['imgBaseDir'] = $_POST['imgBaseDir']; } $data['imgSuffix'] = ""; if ($_POST['imgNaming'] == 'new_copy') { // need to copy/rename additional images for new default image // this will be implemented in a future release } } else if (isset($_GET['imgEdit']) && $_GET['imgEdit'] == 1) { $data['imgBaseDir'] = $_GET['imgBaseDir']; $data['imgBase'] = $_GET['imgBase']; //$data['imgExtension'] = $_GET['imgExtension']; $data['imgSuffix'] = $_GET['imgSuffix']; } else { // An additional image is being added $data['imgBaseDir'] = $_GET['imgBaseDir']; $data['imgBase'] = $_GET['imgBase']; //$data['imgExtension'] = $_GET['imgExtension']; // Image Suffix (if set) if ($_POST['imgSuffix'] != '') { $data['imgSuffix'] = '_'.$_POST['imgSuffix']; } else { // get directory list $array = array(); find_additional_images($array, DIR_FS_CATALOG . DIR_WS_IMAGES . $data['imgBaseDir'], $data['imgExtension'], $data['imgBase'] ); echo ""; $c = sizeof( $array ); if ($c > 1) { sort($array); } // calculate the next suffix // (This is lame, unscalable, and inefficient, but effective) $suffix = 1; $m = 0; while ($m != 1) { if ($suffix < 10) { $suffixStr = "0".$suffix; } else { $suffixStr = $suffix; } $string = $data['imgBase'] . '_'. $suffixStr . $data['imgExtension']; echo ""; $n = 0; for ($i=0; $i < $c; $i++) { if ($array[$i] == $string) { $n = 1; } } if ($n == 1) { $suffix++; } else { $data['imgSuffix'] = "_".$suffixStr; $m = 1; } } } } // if newImg // determine the filenames if ($check != 1) { // add slash to base dir if (($data['imgBaseDir'] != '') && (!preg_match("|\/$|", $data['imgBaseDir']))) { $data['imgBaseDir'] .= '/'; } $data['defaultFileName'] = $data['imgBaseDir'] . $data['imgBase'] . $data['imgSuffix'] . $data['imgExtension']; // Check if the file already exists if ( isset($_GET['imgEdit']) && ($_GET['imgEdit'] != 1) && (file_exists(DIR_FS_CATALOG . DIR_WS_IMAGES . $data['defaultFileName'])) ) { $messageStack->add( TEXT_MSG_FILE_EXISTS, 'error' ); $check = 1; } } // Update the database if (($check != 1) && ( isset($_GET['newImg']) && ($_GET['newImg'] == 1) || (isset($_GET['imgEdit']) && ($_GET['imgEdit'] == 1) && ($_GET['imgSuffix'] == '') && ($_POST['imgNaming'] != 'keep_name') && ($_FILES['default_image']['name'] != '')) )) { // update the database $sql = "update ". TABLE_PRODUCTS . " set products_image='" .$data['defaultFileName']."' where products_id='".$products_filter."'"; if ( ! $db->Execute($sql) ) { $messageStack->add(TEXT_MSG_INVALID_SQL, "error"); $check = 1; } } if ($check != 1) { // check for destination directory and create, if they don't exist! // Then move uploaded file to its new destination // default image if ($_FILES['default_image']['name'] != '') { io_makeFileDir(DIR_FS_CATALOG_IMAGES.$data['defaultFileName']); $source_name = $_FILES['default_image']['tmp_name']; $destination_name = DIR_FS_CATALOG_IMAGES . $data['defaultFileName']; if ( !move_uploaded_file($source_name, $destination_name) ) { $messageStack->add( TEXT_MSG_NOUPLOAD_DEFAULT, "error" ); $check = 1; } } // Nigel Hack for special idiots elseif (($_FILES['default_image']['name'] == '') && !(isset($_GET['imgEdit']))) { io_makeFileDir(DIR_FS_CATALOG_IMAGES.$data['defaultFileName']); $source_name = $_FILES['default_image']['tmp_name']; $destination_name = DIR_FS_CATALOG_IMAGES . $data['defaultFileName']; if ( !move_uploaded_file($source_name, $destination_name) ) { $messageStack->add( 'you must select a default image', "error" ); $check = 1; $_FILES['medium_image']['name'] = $_FILES['large_image']['name'] = ''; } } // End special idiots hack // medium image if ($_FILES['medium_image']['name'] != '') { $data['mediumImgExtension'] = substr( $_FILES['medium_image']['name'], strrpos($_FILES['medium_image']['name'], '.')); $data['mediumFileName'] ='medium/' . $data['imgBaseDir'] . $data['imgBase'] . $data['imgSuffix'] . IMAGE_SUFFIX_MEDIUM . $data['mediumImgExtension']; io_makeFileDir(DIR_FS_CATALOG_IMAGES.$data['mediumFileName']); $source_name = $_FILES['medium_image']['tmp_name']; $destination_name = DIR_FS_CATALOG_IMAGES . $data['mediumFileName']; if ( !move_uploaded_file($source_name, $destination_name) ) { $messageStack->add( TEXT_MSG_NOUPLOAD_MEDIUM, "error" ); $check = 1; } } // large image if ($_FILES['large_image']['name'] != '') { $data['largeImgExtension'] = substr( $_FILES['large_image']['name'], strrpos($_FILES['large_image']['name'], '.')); $data['largeFileName'] = 'large/' . $data['imgBaseDir'] . $data['imgBase'] . $data['imgSuffix'] . IMAGE_SUFFIX_LARGE . $data['largeImgExtension']; io_makeFileDir(DIR_FS_CATALOG_IMAGES.$data['largeFileName']); $source_name = $_FILES['large_image']['tmp_name']; $destination_name = DIR_FS_CATALOG_IMAGES . $data['largeFileName']; if ( !move_uploaded_file($source_name, $destination_name) ) { $messageStack->add( TEXT_MSG_NOUPLOAD_LARGE, "error" ); $check = 1; } } } if ($check == 1) { if ($_GET['imgEdit'] == 1) { $action = "layout_edit"; } else { $action = "layout_new"; } $repeat_check = 1; } else { // Data has been saved // show the new image information $messageStack->add( TEXT_MSG_IMAGE_SAVED, 'success' ); // we might need to clear the cache if filenames are kept if (isset($_GET['imgEdit']) && $_GET['imgEdit'] == 1) { $error = bmz_clear_cache(); if (!$error) { $messageStack->add(IH_CACHE_CLEARED, 'success'); } } $_GET['imgName'] = $data['imgBase'] . $data['imgSuffix']; $action = "layout_info"; } } if ($action == 'quick_delete') { $img_name = $_GET['imgName']; $img_name_full = DIR_FS_CATALOG . $img_name; if (is_file($img_name_full)) { if (unlink($img_name_full)) { // file successfully deleted $messageStack->add_session(TEXT_MSG_IMAGE_DELETED, 'success'); } else { // couldn't delete file $messageStack->add_session(TEXT_MSG_IMAGE_NOT_DELETED, 'error'); } } else { // could not find file to delete $messageStack->add_session(TEXT_MSG_IMAGE_NOT_FOUND, 'error'); } zen_redirect(zen_href_link(FILENAME_IMAGE_HANDLER, 'products_filter=' . $_GET['products_filter'] . '¤t_category_id=' . $current_category_id)); } if ($action == 'delete') { $data['imgBaseDir'] = $_GET['imgBaseDir']; $data['imgBase'] = $_GET['imgBase']; $data['imgExtension'] = $_GET['imgExtension']; $data['imgSuffix'] = $_GET['imgSuffix']; // add slash to base dir if (($data['imgBaseDir'] != '') && (!preg_match("|\/$|", $data['imgBaseDir']))) { $data['imgBaseDir'] .= '/'; } // Determine file names $data['defaultFileName'] = DIR_FS_CATALOG.DIR_WS_IMAGES . $data['imgBaseDir'] . $data['imgBase'] . $data['imgSuffix'] . $data['imgExtension']; $data['mediumFileName'] = DIR_FS_CATALOG.DIR_WS_IMAGES . 'medium/' . $data['imgBaseDir'] . $data['imgBase'] . $data['imgSuffix'] . IMAGE_SUFFIX_MEDIUM . $data['imgExtension']; $data['largeFileName'] = DIR_FS_CATALOG.DIR_WS_IMAGES . 'large/' . $data['imgBaseDir'] . $data['imgBase'] . $data['imgSuffix'] . IMAGE_SUFFIX_LARGE . $data['imgExtension']; if ($_POST['delete_from_db_only'] != "Y") { // check for each file, and delete it! if (is_file($data['largeFileName'])) { if (unlink($data['largeFileName'])) { $messageStack->add(TEXT_MSG_LARGE_DELETED, "success"); } else { $messageStack->add(TEXT_MSG_NO_DELETE_LARGE, "error"); } } if (is_file($data['mediumFileName'])) { if (unlink($data['mediumFileName'])) { $messageStack->add(TEXT_MSG_MEDIUM_DELETED, "success"); } else { $messageStack->add(TEXT_MSG_NO_DELETE_MEDIUM, "error"); } } if (is_file($data['defaultFileName'])) { if (unlink($data['defaultFileName'])) { $messageStack->add(TEXT_MSG_DEFAULT_DELETED, "success"); } else { $messageStack->add(TEXT_MSG_NO_DELETE_DEFAULT, "error"); } } else { $messageStack->add(TEXT_MSG_NO_DEFAULT_FILE_FOUND.': '.$data['defaultFileName'], "error"); } } // update the database if ($data['imgSuffix'] == '') { $sql = "update ". TABLE_PRODUCTS . " set products_image='' where products_id='".$products_filter."'"; if ( ! $db->Execute($sql) ) { $messageStack->add(TEXT_MSG_INVALID_SQL, "error"); } } zen_redirect(zen_href_link(FILENAME_IMAGE_HANDLER, 'products_filter=' . $_GET['products_filter'] . '¤t_category_id=' . $current_category_id)); } if ($action == 'cancel') { // set edit message $messageStack->add_session(PRODUCT_WARNING_UPDATE_CANCEL, 'warning'); zen_redirect(zen_href_link(FILENAME_IMAGE_HANDLER, 'products_filter=' . $_GET['products_filter'] . '¤t_category_id=' . $current_category_id)); }