public function AddProductStep1($MsgDesc = "", $MsgStatus = "", $PreservePost=false) { if($message = strtokenize($_REQUEST, '#')) { $GLOBALS['ISC_CLASS_ADMIN_ENGINE']->DoError(GetLang(B('UmVhY2hlZFByb2R1Y3RMaW1pdA==')), $message, MSG_ERROR); exit; } $defaultProduct = array( 'tax_class_id' => 0, ); if ($MsgDesc != "") { $GLOBALS['Message'] = MessageBox($MsgDesc, $MsgStatus); } else { $flashMessages = GetFlashMessages(); if(is_array($flashMessages)) { $GLOBALS['Message'] = ''; foreach($flashMessages as $flashMessage) { $GLOBALS['Message'] .= MessageBox($flashMessage['message'], $flashMessage['type']); } } } // Get the getting started box if we need to $GLOBALS['GettingStartedStep'] = ''; if(empty($GLOBALS['Message']) && (isset($_GET['wizard']) && $_GET['wizard']==1) && !in_array('products', GetConfig('GettingStartedCompleted')) && !GetConfig('DisableGettingStarted')) { $GLOBALS['GettingStartedTitle'] = GetLang('WizardAddProducts'); $GLOBALS['GettingStartedContent'] = GetLang('WizardAddProductsDesc'); $GLOBALS['GettingStartedStep'] = $this->template->render('Snippets/GettingStartedModal.html'); } if (GetConfig('CurrencyLocation') == 'right') { $GLOBALS['CurrencyTokenLeft'] = ''; $GLOBALS['CurrencyTokenRight'] = GetConfig('CurrencyToken'); } else { $GLOBALS['CurrencyTokenLeft'] = GetConfig('CurrencyToken'); $GLOBALS['CurrencyTokenRight'] = ''; } // delete any uploaded images which are not attached to a product and older than 24 hours ISC_PRODUCT_IMAGE::deleteOrphanedProductImages(); // Delete any temporary combination records older than 24h $this->DeleteTemporaryCombinations(); // Delete any uploaded product downloads which are not attached to a product and older than 24h $query = sprintf("select downloadid, downfile from [|PREFIX|]product_downloads where downdateadded<'%d' and productid=0", time()-86400); $result = $GLOBALS['ISC_CLASS_DB']->Query($query); $dlids = array(); while($download = $GLOBALS['ISC_CLASS_DB']->Fetch($result)) { @unlink(APP_ROOT."../".GetConfig('DownloadDirectory')."/".$download['downfile']); $dlids[] = $download['downloadid']; } if(!empty($dlids)) { $query = sprintf("delete from [|PREFIX|]product_downloads where downloadid in (%s)", implode(",", $dlids)); $GLOBALS['ISC_CLASS_DB']->Query($query); } $GLOBALS['ServerFiles'] = $this->_GetImportFilesOptions(); $GLOBALS['ISC_CLASS_ADMIN_CATEGORY'] = GetClass('ISC_ADMIN_CATEGORY'); if($GLOBALS['ISC_CLASS_ADMIN_AUTH']->GetVendorId()) { $GLOBALS['HideStoreFeatured'] = 'display: none'; } else if(!gzte11(ISC_HUGEPRINT)) { $GLOBALS['HideVendorFeatured'] = 'display: none'; } // Set the global variables for the select boxes $from_stamp = isc_gmmktime(0, 0, 0, isc_date("m"), isc_date("d"), isc_date("Y")); $to_stamp = isc_gmmktime(0, 0, 0, isc_date("m")+1, isc_date("d"), isc_date("Y")); $from_day = isc_date("d", $from_stamp); $from_month = isc_date("m", $from_stamp); $from_year = isc_date("Y", $from_stamp); $to_day = isc_date("d", $to_stamp); $to_month = isc_date("m", $to_stamp); $to_year = isc_date("Y", $to_stamp); $GLOBALS['OverviewFromDays'] = $this->_GetDayOptions($from_day); $GLOBALS['OverviewFromMonths'] = $this->_GetMonthOptions($from_month); $GLOBALS['OverviewFromYears'] = $this->_GetYearOptions($from_year); $GLOBALS['OverviewToDays'] = $this->_GetDayOptions($to_day); $GLOBALS['OverviewToMonths'] = $this->_GetMonthOptions($to_month); $GLOBALS['OverviewToYears'] = $this->_GetYearOptions($to_year); $productImages = array(); if($PreservePost == true) { $this->_GetProductData(0, $arrData); $this->_GetCustomFieldData(0, $arrCustomFields); $this->template->assign('product', $arrData); $productImages = $arrData['product_images']; $GLOBALS["ProdType_" . $arrData['prodtype']] = 'checked="checked"'; $GLOBALS['ProdType'] = $arrData['prodtype'] - 1; $GLOBALS['ProdCode'] = isc_html_escape($arrData['prodcode']); $GLOBALS['ProdName'] = isc_html_escape($arrData['prodname']); $visibleCategories = array(); if($GLOBALS['ISC_CLASS_ADMIN_AUTH']->GetVendorId()) { $vendorData = $GLOBALS['ISC_CLASS_ADMIN_AUTH']->GetVendor(); if($vendorData['vendoraccesscats']) { $visibleCategories = explode(',', $vendorData['vendoraccesscats']); } } $GLOBALS['CategoryOptions'] = $GLOBALS["ISC_CLASS_ADMIN_CATEGORY"]->GetCategoryOptions($arrData['prodcats'], "<option %s value='%d'>%s</option>", "selected=\"selected\"", "", false, '', $visibleCategories); $GLOBALS['RelatedCategoryOptions'] = $GLOBALS["ISC_CLASS_ADMIN_CATEGORY"]->GetCategoryOptions(0, "<option %s value='%d'>%s</option>", "selected=\"selected\"", "- ", false); $wysiwygOptions = array( 'id' => 'wysiwyg', 'width' => '100%', 'height' => '500px', 'value' => $arrData['proddesc'] ); $GLOBALS['WYSIWYG'] = GetClass('ISC_ADMIN_EDITOR')->GetWysiwygEditor($wysiwygOptions); $GLOBALS['ProdSearchKeywords'] = $arrData['prodsearchkeywords']; $GLOBALS['ProdAvailability'] = $arrData['prodavailability']; $GLOBALS['ProdPrice'] = number_format($arrData['prodprice'], GetConfig('DecimalPlaces'), GetConfig('DecimalToken'), ""); if (CFloat($arrData['prodcostprice']) > 0) { $GLOBALS['ProdCostPrice'] = number_format($arrData['prodcostprice'], GetConfig('DecimalPlaces'), GetConfig('DecimalToken'), ""); } if (CFloat($arrData['prodretailprice']) > 0) { $GLOBALS['ProdRetailPrice'] = number_format($arrData['prodretailprice'], GetConfig('DecimalPlaces'), GetConfig('DecimalToken'), ""); } if (CFloat($arrData['prodsaleprice']) > 0) { $GLOBALS['ProdSalePrice'] = number_format($arrData['prodsaleprice'], GetConfig('DecimalPlaces'), GetConfig('DecimalToken'), ""); } $GLOBALS['ProdSortOrder'] = $arrData['prodsortorder']; if ($arrData['prodvisible'] == 1) { $GLOBALS['ProdVisible'] = "checked"; } if ($arrData['prodfeatured'] == 1) { $GLOBALS['ProdFeatured'] = "checked"; } if($arrData['prodvendorfeatured'] == 1) { $GLOBALS['ProdVendorFeatured'] = 'checked="checked"'; } if($arrData['prodallowpurchases'] == 1) { $GLOBALS['ProdAllowPurchases'] = 'checked="checked"'; } else { if($arrData['prodhideprice'] == 1) { $GLOBALS['ProdHidePrice'] = 'checked="checked"'; } } $GLOBALS['ProdCallForPricing'] = isc_html_escape(@$arrData['prodCallForPricingLabel']); $GLOBALS['ProdWarranty'] = $arrData['prodwarranty']; $GLOBALS['ProdWeight'] = number_format($arrData['prodweight'], GetConfig('DimensionsDecimalPlaces'), GetConfig('DimensionsDecimalToken'), ""); if (CFloat($arrData['prodwidth']) > 0) { $GLOBALS['ProdWidth'] = number_format($arrData['prodwidth'], GetConfig('DimensionsDecimalPlaces'), GetConfig('DimensionsDecimalToken'), ""); } if (CFloat($arrData['prodheight']) > 0) { $GLOBALS['ProdHeight'] = number_format($arrData['prodheight'], GetConfig('DimensionsDecimalPlaces'), GetConfig('DimensionsDecimalToken'), ""); } if (CFloat($arrData['proddepth']) > 0) { $GLOBALS['ProdDepth'] = number_format($arrData['proddepth'], GetConfig('DimensionsDecimalPlaces'), GetConfig('DimensionsDecimalToken'), ""); } if (CFloat($arrData['prodfixedshippingcost']) > 0) { $GLOBALS['ProdFixedShippingCost'] = number_format($arrData['prodfixedshippingcost'], GetConfig('DecimalPlaces'), GetConfig('DecimalToken'), ""); } if ($arrData['prodfreeshipping'] == 1) { $GLOBALS['FreeShipping'] = 'checked="checked"'; } if($arrData['prodrelatedproducts'] == -1) { $GLOBALS['IsProdRelatedAuto'] = 'checked="checked"'; } else if(isset($arrData['prodrelated'])) { $GLOBALS['RelatedProductOptions'] = ""; foreach ($arrData['prodrelated'] as $r) { $GLOBALS['RelatedProductOptions'] .= sprintf("<option value='%d'>%s</option>", $r[0], $r[1]); } } $GLOBALS['WrappingOptions'] = $this->BuildGiftWrappingSelect(explode(',', $arrData['prodwrapoptions'])); $GLOBALS['HideGiftWrappingOptions'] = 'display: none'; if($arrData['prodwrapoptions'] == 0) { $GLOBALS['WrappingOptionsDefaultChecked'] = 'checked="checked"'; } else if($arrData['prodwrapoptions'] == -1) { $GLOBALS['WrappingOptionsNoneChecked'] = 'checked="checked"'; } else { $GLOBALS['HideGiftWrappingOptions'] = ''; $GLOBALS['WrappingOptionsCustomChecked'] = 'checked="checked"'; } $GLOBALS['CurrentStockLevel'] = $arrData['prodcurrentinv']; $GLOBALS['LowStockLevel'] = $arrData['prodlowinv']; $GLOBALS["InvTrack_" . $arrData['prodinvtrack']] = 'checked="checked"'; if ($arrData['prodinvtrack'] == 1) { $GLOBALS['OptionButtons'] = "ToggleProductInventoryOptions(true);"; } else { $GLOBALS['OptionButtons'] = "ToggleProductInventoryOptions(false);"; } if ($arrData['prodoptionsrequired'] == 1) { $GLOBALS['ProdOptionRequired'] = 'checked="checked"'; } if ($arrData['prodtype'] == 1) { $GLOBALS['HideProductInventoryOptions'] = "none"; } if(getConfig('taxEnteredWithPrices') == TAX_PRICES_ENTERED_INCLUSIVE) { $this->template->assign('enterPricesWithTax', true); } $GLOBALS['CustomFields'] = ''; $GLOBALS['CustomFieldKey'] = 0; if (!empty($arrCustomFields)) { foreach ($arrCustomFields as $f) { $GLOBALS['CustomFieldName'] = isc_html_escape($f['name']); $GLOBALS['CustomFieldValue'] = isc_html_escape($f['value']); $GLOBALS['CustomFieldLabel'] = $this->GetFieldLabel(($GLOBALS['CustomFieldKey']+1), GetLang('CustomField')); if (!$GLOBALS['CustomFieldKey']) { $GLOBALS['HideCustomFieldDelete'] = 'none'; } else { $GLOBALS['HideCustomFieldDelete'] = ''; } $GLOBALS['CustomFields'] .= $this->template->render('Snippets/CustomFields.html'); $GLOBALS['CustomFieldKey']++; } } // Add one more custom field $GLOBALS['CustomFieldName'] = ''; $GLOBALS['CustomFieldValue'] = ''; $GLOBALS['CustomFieldLabel'] = $this->GetFieldLabel(($GLOBALS['CustomFieldKey']+1), GetLang('CustomField')); if (!$GLOBALS['CustomFieldKey']) { $GLOBALS['HideCustomFieldDelete'] = 'none'; } else { $GLOBALS['HideCustomFieldDelete'] = ''; } $GLOBALS['CustomFields'] .= $this->template->render('Snippets/CustomFields.html'); // Get the brands as select options $GLOBALS['ISC_CLASS_ADMIN_BRANDS'] = GetClass('ISC_ADMIN_BRANDS'); $GLOBALS['BrandNameOptions'] = $GLOBALS['ISC_CLASS_ADMIN_BRANDS']->GetBrandsAsOptions($arrData['prodbrandid']); // Get a list of all layout files $layoutFile = 'product.html'; if($arrData['prodlayoutfile']) { $layoutFile = $arrData['prodlayoutfile']; } $GLOBALS['LayoutFiles'] = GetCustomLayoutFilesAsOptions("product.html", $layoutFile); $GLOBALS['ProdPageTitle'] = $arrData['prodpagetitle']; $GLOBALS['ProdMetaKeywords'] = $arrData['prodmetakeywords']; $GLOBALS['ProdMetaDesc'] = $arrData['prodmetadesc']; if (isset($_REQUEST['productHash'])) { // load any previously uploaded images $productImages = ISC_PRODUCT_IMAGE::getProductImagesFromDatabase($_REQUEST['productHash'], null, true); } // Open Graph Settings $this->template->assign('openGraphTypes', ISC_OPENGRAPH::getObjectTypes(true)); $this->template->assign('openGraphSelectedType', $arrData['opengraph_type']); $this->template->assign('openGraphUseProductName', (bool)$arrData['opengraph_use_product_name']); $this->template->assign('openGraphTitle', $arrData['opengraph_title']); $this->template->assign('openGraphUseMetaDescription', (bool)$arrData['opengraph_use_meta_description']); $this->template->assign('openGraphDescription', $arrData['opengraph_description']); $this->template->assign('openGraphUseImage', (bool)$arrData['opengraph_use_image']); // UPC $this->template->assign('ProdUPC', $arrData['upc']); // Google Checkout $this->template->assign('ProdDisableGoogleCheckout', $arrData['disable_google_checkout']); } else { $this->template->assign('product', $defaultProduct); $Cats = array(); $Description = GetLang('TypeProductDescHere'); $GLOBALS['ProdType'] = 0; $GLOBALS["ProdType_1"] = 'checked="checked"'; $GLOBALS['HideFile'] = "none"; $visibleCategories = array(); if($GLOBALS['ISC_CLASS_ADMIN_AUTH']->GetVendorId()) { $vendorData = $GLOBALS['ISC_CLASS_ADMIN_AUTH']->GetVendor(); if($vendorData['vendoraccesscats']) { $visibleCategories = explode(',', $vendorData['vendoraccesscats']); } } $GLOBALS['CategoryOptions'] = $GLOBALS["ISC_CLASS_ADMIN_CATEGORY"]->GetCategoryOptions($Cats, "<option %s value='%d'>%s</option>", "selected=\"selected\"", "", false, '', $visibleCategories); $GLOBALS['RelatedCategoryOptions'] = $GLOBALS["ISC_CLASS_ADMIN_CATEGORY"]->GetCategoryOptions($Cats, "<option %s value='%d'>%s</option>", "selected=\"selected\"", "- ", false); $wysiwygOptions = array( 'id' => 'wysiwyg', 'width' => '100%', 'height' => '500px', 'value' => $Description ); $GLOBALS['WYSIWYG'] = GetClass('ISC_ADMIN_EDITOR')->GetWysiwygEditor($wysiwygOptions); $GLOBALS['ProdVisible'] = "checked"; $GLOBALS['ProdSortOrder'] = 0; $GLOBALS["InvTrack_0"] = 'checked="checked"'; $GLOBALS['HideProductInventoryOptions'] = "none"; $GLOBALS['CurrentStockLevel'] = 0; $GLOBALS['LowStockLevel'] = 0; $GLOBALS['OptionButtons'] = "ToggleProductInventoryOptions(false);"; $GLOBALS['ExistingDownload'] = "false"; $GLOBALS['IsProdRelatedAuto'] = 'checked="checked"'; $GLOBALS['ProdAllowPurchases'] = 'checked="checked"'; $GLOBALS['ProdCallForPricingLabel'] = GetLang('ProductCallForPricingDefault'); // Get the brands as select options $GLOBALS['ISC_CLASS_ADMIN_BRANDS'] = GetClass('ISC_ADMIN_BRANDS'); $GLOBALS['BrandNameOptions'] = $GLOBALS['ISC_CLASS_ADMIN_BRANDS']->GetBrandsAsOptions(); $GLOBALS['CustomFieldKey'] = 0; $GLOBALS['CustomFieldName'] = ''; $GLOBALS['CustomFieldValue'] = ''; $GLOBALS['CustomFieldLabel'] = $this->GetFieldLabel(($GLOBALS['CustomFieldKey']+1), GetLang('CustomField')); $GLOBALS['HideCustomFieldDelete'] = 'none'; $GLOBALS['CustomFields'] = $this->template->render('Snippets/CustomFields.html'); $GLOBALS['WrappingOptions'] = $this->BuildGiftWrappingSelect(); $GLOBALS['WrappingOptionsDefaultChecked'] = 'checked="checked"'; // Open Graph Settings $this->template->assign('openGraphTypes', ISC_OPENGRAPH::getObjectTypes(true)); $this->template->assign('openGraphSelectedType', 'product'); $this->template->assign('openGraphUseProductName', true); $this->template->assign('openGraphUseMetaDescription', true); $this->template->assign('openGraphUseImage', true); } // Get the list of tax classes and assign them $this->template->assign('taxClasses', array( 0 => getLang('DefaultTaxClass') ) + getClass('ISC_TAX')->getTaxClasses()); $this->setupProductImageGlobals($productImages); $GLOBALS['ProductFields'] = $this->_GetProductFieldsLayout(0); if(!gzte11(ISC_HUGEPRINT)) { $GLOBALS['HideVendorOption'] = 'display: none'; } else { $vendorData = $GLOBALS['ISC_CLASS_ADMIN_AUTH']->GetVendor(); if(isset($vendorData['vendorid'])) { $GLOBALS['HideVendorSelect'] = 'display: none'; $GLOBALS['CurrentVendor'] = isc_html_escape($vendorData['vendorname']); } else { $GLOBALS['HideVendorLabel'] = 'display: none'; if($PreservePost) { $GLOBALS['VendorList'] = $this->BuildVendorSelect($_POST['vendor']); } else { $GLOBALS['VendorList'] = $this->BuildVendorSelect(); } } } // Does this store have any categories? if (!$this->db->FetchOne("SELECT COUNT(*) FROM [|PREFIX|]categories")) { $GLOBALS['NoCategoriesJS'] = 'true'; } $GLOBALS['FormType'] = "AddingProduct"; $GLOBALS['FormAction'] = "addProduct2"; $GLOBALS['Title'] = GetLang('AddProductTitle'); $GLOBALS['Intro'] = GetLang('AddProductIntro'); $GLOBALS['CurrentTab'] = 0; if(getConfig('taxEnteredWithPrices') == TAX_PRICES_ENTERED_INCLUSIVE) { $this->template->assign('enterPricesWithTax', true); } if(!gzte11(ISC_MEDIUMPRINT)) { $GLOBALS['HideInventoryOptions'] = "none"; } else { $GLOBALS['HideInventoryOptions'] = ''; } $GLOBALS['ISC_LANG']['MaxUploadSize'] = sprintf(GetLang('MaxUploadSize'), GetMaxUploadSize()); if(isset($_REQUEST['productHash'])) { // Get a list of any downloads associated with this product $GLOBALS['DownloadsGrid'] = $this->GetDownloadsGrid(0, $_REQUEST['productHash']); if($GLOBALS['DownloadsGrid'] == '') { $GLOBALS['DisplayDownloaadGrid'] = "none"; $GLOBALS['DisplayDownloadUploadGap'] = 'none'; } $GLOBALS['ProductHash'] = $_REQUEST['productHash']; } else { $GLOBALS['DisplayDownloaadGrid'] = "none"; $GLOBALS['DisplayDownloadUploadGap'] = 'none'; $GLOBALS['ProductHash'] = md5(time().uniqid(rand(), true)); } // Get a list of all layout files $GLOBALS['LayoutFiles'] = GetCustomLayoutFilesAsOptions("product.html"); // By default we have no variation selected $GLOBALS['IsNoVariation'] = 'checked="checked"'; $GLOBALS['HideVariationList'] = "none"; // If there are no variations then disable the option to choose one $numVariations = 0; $GLOBALS['VariationOptions'] = $this->GetVariationsAsOptions($numVariations); if($numVariations == 0) { $GLOBALS['VariationDisabled'] = "DISABLED"; $GLOBALS['VariationColor'] = "#CACACA"; } // By default we set variations to NO $GLOBALS['IsNoVariation'] = 'checked="checked"'; // By default we set product options required to YES $GLOBALS['OptionsRequired'] = 'checked="checked"'; // Display the discount rules $GLOBALS['DiscountRules'] = $this->GetDiscountRules(0); $GLOBALS['EventDateFieldName'] = GetLang('EventDateDefault'); // Hide if we are not enabled if (!GetConfig('BulkDiscountEnabled')) { $GLOBALS['HideDiscountRulesWarningBox'] = ''; $GLOBALS['DiscountRulesWarningText'] = GetLang('DiscountRulesNotEnabledWarning'); $GLOBALS['DiscountRulesWithWarning'] = 'none'; // Also hide it if this product has variations } else if (isset($arrData['prodvariationid']) && isId($arrData['prodvariationid'])) { $GLOBALS['HideDiscountRulesWarningBox'] = ''; $GLOBALS['DiscountRulesWarningText'] = GetLang('DiscountRulesVariationWarning'); $GLOBALS['DiscountRulesWithWarning'] = 'none'; } else { $GLOBALS['HideDiscountRulesWarningBox'] = 'none'; $GLOBALS['DiscountRulesWithWarning'] = ''; } $GLOBALS['DiscountRulesEnabled'] = (int)GetConfig('BulkDiscountEnabled'); if(!$GLOBALS['ISC_CLASS_ADMIN_AUTH']->HasPermission(AUTH_Create_Category)) { $GLOBALS['HideCategoryCreation'] = 'display: none'; } //Google website optimizer $GLOBALS['GoogleWebsiteOptimizerIntro'] = GetLang('EnableGoogleWebsiteOptimizerAfterSave'); $GLOBALS['ShowEnableGoogleWebsiteOptimzer'] = 'display:none'; $GLOBALS['DisableOptimizerCheckbox'] = 'DISABLED=DISABLED'; $GLOBALS['SaveAndAddAnother'] = GetLang('SaveAndAddAnother'); // set the shopping comparison view vars $this->setupProductLanguageString(); $this->template->assign('shoppingComparisonModules', $this->getComparisonOptions()); $this->template->assign('_prodorderable', 'yes'); $this->template->assign('prodpreordermessage', GetConfig('DefaultPreOrderMessage')); $this->template->display('product.form.tpl'); }
public function ShowImage() { if ($this->GetNumImages() == 1) { // do no show nav link if there is only 1 image $GLOBALS['NavLinkDisplay'] = 'display:none;'; } if($image = $this->GetImage()) { // Set product name $GLOBALS['ProductName'] = isc_html_escape($this->_prodname); // Show we show the "Previous Image" link? if($this->GetCurrentImage() == 0 || $this->GetCurrentImage() == 'variation') { $GLOBALS['DisablePrevLink'] = "disabled"; } else { $GLOBALS['PrevLink'] = sprintf("%s/productimage.php?product_id=%d¤t_image=%d", $GLOBALS['ShopPath'], $this->GetProductId(), $this->GetCurrentImage()-1); } // Should we show the "Next Image" link? if($this->GetNumImages()-1 == $this->GetCurrentImage() || $this->GetCurrentImage() == 'variation') { $GLOBALS['DisableNextLink'] = "disabled"; } else { $GLOBALS['NextLink'] = sprintf("%s/productimage.php?product_id=%d¤t_image=%d", $GLOBALS['ShopPath'], $this->GetProductId(), $this->GetCurrentImage()+1); } if($this->GetCurrentImage() == 'variation') { $GLOBALS['VariationImage'] = $image; } $GLOBALS['ProductMaxImageWidth'] = ISC_PRODUCT_IMAGE::getSizeWidth(ISC_PRODUCT_IMAGE_SIZE_ZOOM); $GLOBALS['ProductMaxImageHeight'] = ISC_PRODUCT_IMAGE::getSizeHeight(ISC_PRODUCT_IMAGE_SIZE_ZOOM); $GLOBALS['ProductMaxTinyWidth'] = ISC_PRODUCT_IMAGE::getSizeWidth(ISC_PRODUCT_IMAGE_SIZE_TINY); $GLOBALS['ProductMaxTinyHeight'] = ISC_PRODUCT_IMAGE::getSizeHeight(ISC_PRODUCT_IMAGE_SIZE_TINY); $GLOBALS['ProductTinyBoxWidth'] = $GLOBALS['ProductMaxTinyWidth']+4; $GLOBALS['ProductTinyBoxHeight'] = $GLOBALS['ProductMaxTinyHeight']+4; // a list of images does exist in _prodimages but it's just a list of urls with no sizing information, with the given time frame I have no choice but to re-query the db -ge $productImages = ISC_PRODUCT_IMAGE::getProductImagesFromDatabase($this->GetProductId()); $GLOBALS['TotalImages'] = count($productImages); $GLOBALS['ProdImageJavascript'] = ''; if ($GLOBALS['TotalImages']) { $GLOBALS['SNIPPETS']['ProductTinyImages'] = ''; $GLOBALS['ProductZoomImageURLs'] = array(); foreach ($productImages as $index => /** @var ISC_PRODUCT_IMAGE */$productImage) { $thumbURL = $productImage->getResizedUrl(ISC_PRODUCT_IMAGE_SIZE_ZOOM, true); $GLOBALS['ProductThumbURL'] = $thumbURL; $GLOBALS['ProductThumbIndex'] = $index; $GLOBALS['ImageDescription'] = isc_html_escape($productImage->getDescription()); $GLOBALS['ProdImageJavascript'] .= "ThumbURLs[" . $index . "] = " . isc_json_encode($thumbURL) . ";"; $GLOBALS['ProdImageJavascript'] .= "ImageDescriptions[" . $index . "]=" . isc_json_encode($GLOBALS['ImageDescription']) . ";"; $GLOBALS['ProductTinyImageURL'] = $productImage->getResizedUrl(ISC_PRODUCT_IMAGE_SIZE_TINY, true); $resizedTinyDimension = $productImage->getResizedFileDimensions(ISC_PRODUCT_IMAGE_SIZE_TINY, true); $GLOBALS['TinyImageWidth'] = $resizedTinyDimension[ISC_PRODUCT_IMAGE_DIMENSIONS_WIDTH]; $GLOBALS['TinyImageHeight'] = $resizedTinyDimension[ISC_PRODUCT_IMAGE_DIMENSIONS_HEIGHT]; $GLOBALS['TinyImageTopPadding'] = floor(($GLOBALS['ProductMaxTinyHeight'] - $GLOBALS['TinyImageHeight']) / 2); $GLOBALS['TinyImageClickJavascript'] = "showProductZoomImage(" . $index . ");"; $GLOBALS['SNIPPETS']['ProductTinyImages'] .= $GLOBALS['ISC_CLASS_TEMPLATE']->GetSnippet("ProductTinyImage"); } } $GLOBALS['CurrentImageIndex'] = $this->GetCurrentImage(); $GLOBALS['ImageFile'] = $image; $GLOBALS['ISC_CLASS_TEMPLATE']->SetTemplate("productimage"); $GLOBALS['ISC_CLASS_TEMPLATE']->ParseTemplate(); } }
/** * Generate the product images/thumbnails to be shown. */ private function SetProductImages() { $GLOBALS['ProductThumbWidth'] = ISC_PRODUCT_IMAGE::getSizeWidth(ISC_PRODUCT_IMAGE_SIZE_STANDARD); $GLOBALS['ProductThumbHeight'] = ISC_PRODUCT_IMAGE::getSizeHeight(ISC_PRODUCT_IMAGE_SIZE_STANDARD); $GLOBALS['ProductMaxTinyWidth'] = ISC_PRODUCT_IMAGE::getSizeWidth(ISC_PRODUCT_IMAGE_SIZE_TINY); $GLOBALS['ProductMaxTinyHeight'] = ISC_PRODUCT_IMAGE::getSizeHeight(ISC_PRODUCT_IMAGE_SIZE_TINY); $GLOBALS['ProductTinyBoxWidth'] = $GLOBALS['ProductMaxTinyWidth']+4; $GLOBALS['ProductTinyBoxHeight'] = $GLOBALS['ProductMaxTinyHeight']+4; $GLOBALS['ProductMaxZoomWidth'] = ISC_PRODUCT_IMAGE::getSizeWidth(ISC_PRODUCT_IMAGE_SIZE_ZOOM); $GLOBALS['ProductMaxZoomHeight'] = ISC_PRODUCT_IMAGE::getSizeHeight(ISC_PRODUCT_IMAGE_SIZE_ZOOM); $GLOBALS['ProductZoomWidth'] = ISC_PRODUCT_IMAGE::getSizeWidth(ISC_PRODUCT_IMAGE_SIZE_ZOOM); $GLOBALS['ProductZoomHeight'] = ISC_PRODUCT_IMAGE::getSizeHeight(ISC_PRODUCT_IMAGE_SIZE_ZOOM); $productImages = ISC_PRODUCT_IMAGE::getProductImagesFromDatabase($GLOBALS['ProductId']); $GLOBALS['NumProdImages'] = count($productImages); $GLOBALS['CurrentProdThumbImage'] = 0; $thumb = ''; $curZoomImage = ''; $GLOBALS['SNIPPETS']['ProductTinyImages'] = ''; $GLOBALS['HideImageCarousel'] = 'display:none;'; $GLOBALS['HideMorePicturesLink'] = 'display:none;'; $thumbImageDescription = ''; $i = 0; $GLOBALS['ProdImageJavascript'] = ''; $GLOBALS['ProdImageZoomJavascript'] = ''; $GLOBALS['LightBoxImageList'] = ''; $GLOBALS['ZoomImageMaxWidth'] = 0; $GLOBALS['ZoomImageMaxHeight'] = 0; $GLOBALS['ZoomImageMaxWidthHeight'] = 0; $GLOBALS['HideAlwaysLinkedMorePicturesLink'] = 'display: none'; if ($GLOBALS['NumProdImages']) { //Show image carousel if ($GLOBALS['NumProdImages'] == 2) { $var = "MorePictures1"; } else if ($GLOBALS['NumProdImages'] == 1) { $var = "SeeLargerImage"; } else { $var = "MorePictures2"; } $GLOBALS['SeeMorePictures'] = sprintf(GetLang($var), count($productImages) - 1); $GLOBALS['HideAlwaysLinkedMorePicturesLink'] = ''; if (GetConfig('ProductImagesTinyThumbnailsEnabled')) { $GLOBALS['HideImageCarousel'] = ''; } else { $GLOBALS['HideMorePicturesLink'] = ''; } $continue=false; foreach ($productImages as $productImage) { $thumbURL = ''; $zoomImageURL = ''; try{ $thumbURL = $productImage->getResizedUrl(ISC_PRODUCT_IMAGE_SIZE_STANDARD, true); //$GLOBALS['ProductThumbURL'] = $thumbURL; } catch (Exception $exception) { // do nothing, will result in returning blank string, which is fine } try{ $zoomImageURL = $productImage->getResizedUrl(ISC_PRODUCT_IMAGE_SIZE_ZOOM, true); } catch (Exception $exception) { // do nothing, will result in returning blank string, which is fine } if($thumbURL == '' && $zoomImageURL == '') { continue; } $resizedZoomDimension = $productImage->getResizedFileDimensions(ISC_PRODUCT_IMAGE_SIZE_ZOOM); $resizedTinyDimension = $productImage->getResizedFileDimensions(ISC_PRODUCT_IMAGE_SIZE_TINY); //calculate the max zoom image width and height if ($GLOBALS['ZoomImageMaxWidth'] < $resizedZoomDimension[ISC_PRODUCT_IMAGE_DIMENSIONS_WIDTH]) { $GLOBALS['ZoomImageMaxWidth'] = $resizedZoomDimension[ISC_PRODUCT_IMAGE_DIMENSIONS_WIDTH]; //the height of the image has got the max width needed to calulate the image fancy box size. $GLOBALS['ZoomImageMaxWidthHeight'] = $resizedZoomDimension[ISC_PRODUCT_IMAGE_DIMENSIONS_HEIGHT]; } if ($GLOBALS['ZoomImageMaxHeight'] < $resizedZoomDimension[ISC_PRODUCT_IMAGE_DIMENSIONS_HEIGHT]) { $GLOBALS['ZoomImageMaxHeight'] = $resizedZoomDimension[ISC_PRODUCT_IMAGE_DIMENSIONS_HEIGHT]; //the width of the image has got the max height needed to calulate the image fancy box size. $GLOBALS['ZoomImageMaxHeightWidth'] = $resizedZoomDimension[ISC_PRODUCT_IMAGE_DIMENSIONS_HEIGHT]; } $GLOBALS['ImageDescription'] = isc_html_escape($productImage->getDescription()); if($GLOBALS['ImageDescription'] == '') { $GLOBALS['ImageDescription'] = GetLang("Image") . " " . ($i + 1); } //show image carousel if(GetConfig('ProductImagesTinyThumbnailsEnabled')==1) { $GLOBALS['ProdImageJavascript'] .= " ThumbURLs[".$i."] = " . isc_json_encode($thumbURL) . "; ProductImageDescriptions[".$i."] = " . isc_json_encode($GLOBALS['ImageDescription']) . "; "; $GLOBALS['TinyImageOverJavascript'] = "showProductThumbImage(".$i.")"; //$GLOBALS['ProductTinyImageURL'] = $productImage->getResizedUrl(ISC_PRODUCT_IMAGE_SIZE_TINY, true); try{ $GLOBALS['ProductTinyImageURL'] = $productImage->getResizedUrl(ISC_PRODUCT_IMAGE_SIZE_TINY, true); //$GLOBALS['ProductThumbURL'] = $thumbURL; } catch (Exception $exception) { // do nothing, will result in returning blank string, which is fine } $GLOBALS['ProductThumbIndex'] = $i; if(GetConfig('ProductImageMode') == 'lightbox') { $GLOBALS['TinyImageClickJavascript'] = "showProductImageLightBox(".$i."); return false;"; } else { $GLOBALS['TinyImageClickJavascript'] = "showProductImage('".GetConfig('ShopPath')."/productimage.php', ".$GLOBALS['ProductId'].", ".$i.");"; } $GLOBALS['TinyImageWidth'] = $resizedTinyDimension[ISC_PRODUCT_IMAGE_DIMENSIONS_WIDTH]; $GLOBALS['TinyImageHeight'] = $resizedTinyDimension[ISC_PRODUCT_IMAGE_DIMENSIONS_HEIGHT]; $GLOBALS['TinyImageTopPadding'] = floor(($GLOBALS['ProductMaxTinyHeight'] - $GLOBALS['TinyImageHeight']) / 2); $GLOBALS['SNIPPETS']['ProductTinyImages'] .= $GLOBALS['ISC_CLASS_TEMPLATE']->GetSnippet("ProductTinyImage"); $continue = true; } if(GetConfig('ProductImagesImageZoomEnabled') == 1) { //check if zoom image is large enough for image zoomer if($resizedZoomDimension[ISC_PRODUCT_IMAGE_DIMENSIONS_WIDTH]<ISC_PRODUCT_IMAGE_MIN_ZOOM_WIDTH && $resizedZoomDimension[ISC_PRODUCT_IMAGE_DIMENSIONS_HEIGHT]<ISC_PRODUCT_IMAGE_MIN_ZOOM_HEIGHT) { $zoomImageURL = ''; } $GLOBALS['ProdImageZoomJavascript'] .= " ZoomImageURLs[".$i."] = " . isc_json_encode($zoomImageURL) . "; "; $continue = true; } // $GLOBALS['ProductZoomImageURL'] = $zoomImageURL; //this image is the product page thumbnail if($i==0) { //get the thumb image for product page $thumb = $thumbURL; $curZoomImage = $zoomImageURL; $thumbImageDescription = $GLOBALS['ImageDescription']; //if there is no need to loop through images anymore, get out from the loop. if($continue === false) { break; } } $i++; } } $GLOBALS['VisibleImageTotal'] = $i+1; $GLOBALS['ShowImageZoomer'] = GetConfig('ProductImagesImageZoomEnabled'); if ($GLOBALS['ShowImageZoomer']) { $GLOBALS['SNIPPETS']['ProductImageZoomer'] = $GLOBALS['ISC_CLASS_TEMPLATE']->GetSnippet("ProductImageZoomer"); } $GLOBALS['ZoomImageURL'] = $curZoomImage; //if no product thumb images if($thumb == '') { if(GetConfig('DefaultProductImage') == 'template') { $thumb = $GLOBALS['IMG_PATH'].'/ProductDefault.gif'; } else { $thumb = GetConfig('ShopPath').'/'.GetConfig('DefaultProductImage'); } } // need to check for variation images //$GLOBALS['HideOnNoImages'] = 'display: none;'; $GLOBALS['ImageDescription'] = $thumbImageDescription; $GLOBALS['ThumbImageURL'] = $thumb; //image popup javascript for the thumbnail image when the page is loaded $imagePopupLink = "showProductImage('".GetConfig('ShopPath')."/productimage.php', ".$GLOBALS['ProductId'].");"; $GLOBALS['ImagePopupLink'] = $imagePopupLink; $GLOBALS['TinyImageClickJavascript'] = $imagePopupLink; // If we're showing images as a lightbox, we need to load up the URLs for the other images for this product if(GetConfig('ProductImageMode') == 'lightbox') { $GLOBALS['TinyImageClickJavascript'] = "showProductImageLightBox(); return false;"; $GLOBALS['LightBoxImageJavascript'] = $GLOBALS['ISC_CLASS_TEMPLATE']->GetSnippet('ProductImagesLightBox'); } if ($GLOBALS['NumProdImages']) { $GLOBALS['SNIPPETS']['ProductThumbImage'] = $GLOBALS['ISC_CLASS_TEMPLATE']->GetSnippet('ProductThumbImage'); } else { $GLOBALS['SNIPPETS']['ProductThumbImage'] = $GLOBALS['ISC_CLASS_TEMPLATE']->GetSnippet('ProductThumbImagePlaceholder'); } }