21 protected $_aComponentNames = array(
'oxcmp_cur' => 1,
'oxcmp_shop' => 1,
'oxcmp_basket' => 1,
'oxcmp_user' => 1);
230 if ($sParentId && $this->_oParentProd === null) {
231 $this->_oParentProd =
false;
232 $oProduct =
oxNew(
'oxArticle');
233 if (($oProduct->load($sParentId))) {
235 $this->_oParentProd = $oProduct;
263 $oProduct->appendLink($sAddParams);
274 return $this->
getConfig()->getConfigParam(
'bl_perfLoadReviews');
284 if ($this->_blCanRate === null) {
286 $this->_blCanRate =
false;
290 $oRating =
oxNew(
'oxrating');
291 $this->_blCanRate = $oRating->allowRating($oUser->getId(),
'oxarticle', $this->
getProduct()->getId());
307 if ($oUser = $this->
getUser()) {
322 if ($this->_aAttributes === null) {
324 $aArtAttributes = $this->
getProduct()->getAttributes();
327 $this->_aAttributes =
false;
329 if (count($aArtAttributes)) {
330 foreach ($aArtAttributes as $sKey => $oAttribute) {
331 $this->_aAttributes[$sKey] =
new stdClass();
332 $this->_aAttributes[$sKey]->title = $oAttribute->oxattribute__oxtitle->value;
333 $this->_aAttributes[$sKey]->value = $oAttribute->oxattribute__oxvalue->value;
351 $oTagList =
oxNew(
"oxArticleTagList");
353 $oTagList->setArticleId($this->
getProduct()->getId());
354 $oTagCloud =
oxNew(
"oxTagCloud");
355 $oTagCloud->setTagList($oTagList);
356 $oTagCloud->setExtendedMode(
true);
371 if ($this->_blCanEditTags === null) {
372 $this->_blCanEditTags =
false;
374 $this->_blCanEditTags =
true;
388 if ($this->_iLinkType === null) {
390 if (
'vendor' == $sListType) {
392 } elseif (
'manufacturer' == $sListType) {
395 } elseif (
'tag' == $sListType) {
399 } elseif (
'recommlist' == $sListType) {
424 if (is_object($oList)) {
425 $oList = clone $oList;
429 if (isset($oList[$sOxId])) {
430 unset($oList[$sOxId]);
444 if ($this->_aVariantList === null) {
448 if ($oParent = $oProduct->getParentArticle()) {
451 $oParent->setNoVariantLoading(
false);
452 $this->_aVariantList = $oParent->getFullVariants(
false);
455 if (count($this->_aVariantList) &&
$myConfig->getConfigParam(
'blVariantParentBuyable')) {
457 $oParent->enablePriceLoad();
458 $oParent->aSelectlist = $oParent->getSelectLists();
459 $this->_aVariantList = array_merge(array($oParent), $this->_aVariantList->getArray());
463 $this->_aVariantList = $oProduct->getFullVariants(
false);
467 foreach ($this->_aVariantList as $oVariant) {
496 if ($this->_oCaptcha === null) {
497 $this->_oCaptcha =
oxNew(
'oxCaptcha');
510 if ($this->_aMediaFiles === null) {
511 $aMediaFiles = $this->
getProduct()->getMediaUrls();
512 $this->_aMediaFiles = count($aMediaFiles) ? $aMediaFiles :
false;
527 if ($this->_aLastProducts === null) {
530 $sParentIdField =
'oxarticles__oxparentid';
531 $sArtId = $oProduct->$sParentIdField->value ? $oProduct->$sParentIdField->value : $oProduct->getId();
533 $oHistoryArtList =
oxNew(
'oxArticleList');
534 $oHistoryArtList->loadHistoryArticles($sArtId, $iCnt);
535 $this->_aLastProducts = $oHistoryArtList;
548 if ($this->_oManufacturer === null) {
549 $this->_oManufacturer = $this->
getProduct()->getManufacturer(
false);
562 if ($this->_oVendor === null) {
563 $this->_oVendor = $this->
getProduct()->getVendor(
false);
576 if ($this->_oCategory === null) {
577 $this->_oCategory = $this->
getProduct()->getCategory();
590 if ($this->_aPicGallery === null) {
607 return $aPicGallery[
'ActPic'];
619 return $aPicGallery[
'MorePics'];
631 return $aPicGallery[
'Icons'];
643 return $aPicGallery[
'ZoomPic'];
655 return $aPicGallery[
'ZoomPics'];
665 if ($this->_aReviews === null) {
666 $this->_aReviews =
false;
667 if ($this->
getConfig()->getConfigParam(
'bl_perfLoadReviews')) {
668 $this->_aReviews = $this->
getProduct()->getReviews();
682 if ($this->_oCrossSelling === null) {
683 $this->_oCrossSelling =
false;
685 $this->_oCrossSelling = $oProduct->getCrossSelling();
699 if ($this->_oSimilarProducts === null) {
700 $this->_oSimilarProducts =
false;
702 $this->_oSimilarProducts = $oProduct->getSimilarProducts();
718 if ($this->_aSimilarRecommListIds === null) {
719 $this->_aSimilarRecommListIds =
false;
722 $this->_aSimilarRecommListIds = array($oProduct->getId());
736 if ($this->_oAccessoires === null) {
737 $this->_oAccessoires =
false;
739 $this->_oAccessoires = $oProduct->getAccessoires();
753 if ($this->_aAlsoBoughtArts === null) {
754 $this->_aAlsoBoughtArts =
false;
756 $this->_aAlsoBoughtArts = $oProduct->getCustomerAlsoBoughtThisProducts();
772 $sFixedPriceField =
'oxarticles__oxblfixedprice';
773 if (isset($oProduct->$sFixedPriceField->value) && $oProduct->$sFixedPriceField->value) {
810 $this->_sSearchTitle = $sTitle;
820 $this->_sCatTreePath = $sActCatPath;
832 return $oProduct->oxarticles__oxisconfigurable->value;
843 if ($this->_dRatingValue === null) {
844 $this->_dRatingValue = (double) 0;
846 $blShowVariantsReviews = $this->
getConfig()->getConfigParam(
'blShowVariantReviews');
847 $this->_dRatingValue = round($oDetailsProduct->getArticleRatingAverage($blShowVariantsReviews), 1);
861 return $this->
getConfig()->getConfigParam(
'bl_perfLoadReviews');
871 if ($this->_iRatingCnt === null) {
872 $this->_iRatingCnt =
false;
874 $blShowVariantsReviews = $this->
getConfig()->getConfigParam(
'blShowVariantReviews');
875 $this->_iRatingCnt = $oDetailsProduct->getArticleRatingCount($blShowVariantsReviews);
899 if ($this->_sBidPrice === null) {
900 $this->_sBidPrice =
false;
903 $oCur = $this->
getConfig()->getActShopCurrencyObject();
920 $sParentIdField =
'oxarticles__oxparentid';
923 return $oParent->getVariantSelections($sVarSelId, $oProduct->getId());
937 if ($aVariantSelections && $aVariantSelections[
'oActiveVariant'] && !$aVariantSelections[
'blPerfectFit']) {
938 return $aVariantSelections[
'oActiveVariant'];
954 if ($this->_oProduct === null) {
961 $myConfig->setConfigParam(
'blLoadVariants',
true);
966 $this->_oProduct =
oxNew(
'oxarticle');
968 if (!$this->_oProduct->load($sOxid)) {
969 $myUtils->redirect(
$myConfig->getShopHomeURL());
970 $myUtils->showMessageAndExit(
'');
974 $aVarSelections = $this->_oProduct->getVariantSelections($sVarSelId);
975 if ($aVarSelections && $aVarSelections[
'oActiveVariant'] && $aVarSelections[
'blPerfectFit']) {
976 $this->_oProduct = $aVarSelections[
'oActiveVariant'];
980 if (!$this->_blIsInitialized) {
993 if ($sSortingParameters) {
994 list($sSortBy, $sSortDir) = explode(
'|', $sSortingParameters);
1011 $oCategory =
oxNew(
'oxCategory');
1016 if (!$sCatId && $oProduct->getCategory()) {
1017 $oCategory = $oProduct->getCategory();
1019 $oCategory->load($sCatId);
1029 $oLocator->setLocatorData($oProduct, $this);
1042 if ($this->_blMdView === null) {
1043 $this->_blMdView =
false;
1044 if ($this->
getConfig()->getConfigParam(
'blUseMultidimensionVariants')) {
1045 $iMaxMdDepth = $this->
getProduct()->getMdVariants()->getMaxDepth();
1046 $this->_blMdView = ($iMaxMdDepth > 1);
1062 $sSeparator = $this->
getConfig()->getConfigParam(
"sTagSeparator");
1076 if (!$this->_oProduct->isVisible()) {
1077 $blContinue =
false;
1078 } elseif ($this->_oProduct->oxarticles__oxparentid->value) {
1079 $oParent = $this->
_getParentProduct($this->_oProduct->oxarticles__oxparentid->value);
1080 if (!$oParent || !$oParent->isVisible()) {
1081 $blContinue =
false;
1086 $myUtils->redirect(
$myConfig->getShopHomeURL());
1087 $myUtils->showMessageAndExit(
'');
1091 $this->_blIsInitialized =
true;
1106 if ($sSortBy = $oCategory->getDefaultSorting()) {
1107 $sSortDir = ($oCategory->getDefaultSortingMode()) ?
"desc" :
"asc";
1108 $aSorting = array(
'sortby' => $sSortBy,
'sortdir' => $sSortDir);