Exemplo n.º 1
0
 /**
  * This method renders a product to a template.
  *
  * @param Product $product Product
  * @param string $template TYPO3 Template
  * @param array $typoscript TypoScript
  * @param array $articleMarker Marker for the article description
  * @param string $articleSubpart Subpart
  *
  * @return string rendered HTML
  */
 public function renderProduct(Product $product, $template, array $typoscript, array $articleMarker, $articleSubpart = '')
 {
     if (!$product instanceof Product) {
         return '';
     }
     if (empty($articleMarker)) {
         return $this->error('renderProduct', __LINE__, 'No ArticleMarker defined in renderProduct ');
     }
     $hooks = HookFactory::getHooks('Controller/BaseController', 'renderProduct');
     $data = $product->returnAssocArray();
     // maybe this is a related product so category may be wrong
     $categoryUid = $this->category->getUid();
     $productCategories = $product->getParentCategories();
     if (!in_array($categoryUid, $productCategories, false)) {
         $categoryUid = $productCategories[0];
     }
     /*
      *  Build TS for Linking the Catergory Images
      */
     $localTs = $typoscript;
     $typoLinkConf = array('useCacheHash' => 1);
     /*
      * Generate TypoLink Configuration and ad to fields by addTypoLinkToTs
      */
     if ($this->conf['singlePid']) {
         $typoLinkConf['parameter'] = $this->conf['singlePid'];
     } elseif ($this->conf['overridePid']) {
         $typoLinkConf['parameter'] = $this->conf['overridePid'];
     } else {
         $typoLinkConf['parameter'] = $this->pid;
     }
     $typoLinkConf['additionalParams'] = $this->argSeparator . $this->prefixId . '[showUid]=' . $product->getUid();
     $typoLinkConf['additionalParams'] .= $this->argSeparator . $this->prefixId . '[catUid]=' . $categoryUid;
     if ($this->basketHashValue) {
         $typoLinkConf['additionalParams'] .= $this->argSeparator . $this->prefixId . '[basketHashValue]=' . $this->basketHashValue;
     }
     $localTs = $this->addTypoLinkToTypoScript($localTs, $typoLinkConf);
     $markerArray = $this->generateMarkerArray($data, $localTs, '', 'tx_commerce_products');
     $markerArrayUp = array();
     foreach ($markerArray as $k => $v) {
         $markerArrayUp[strtoupper($k)] = $v;
     }
     $markerArray = $this->cObj->fillInMarkerArray(array(), $markerArrayUp, implode(',', array_keys($markerArrayUp)), false, 'PRODUCT_');
     $this->can_attributes = $product->getAttributes(array(ATTRIB_CAN));
     $this->selectAttributes = $product->getAttributes(array(ATTRIB_SELECTOR));
     $this->shall_attributes = $product->getAttributes(array(ATTRIB_SHAL));
     $productAttributesSubpartArray = array();
     $productAttributesSubpartArray[] = '###' . strtoupper($this->conf['templateMarker.']['productAttributes']) . '###';
     $productAttributesSubpartArray[] = '###' . strtoupper($this->conf['templateMarker.']['productAttributes2']) . '###';
     $markerArray['###SUBPART_PRODUCT_ATTRIBUTES###'] = $this->cObj->stdWrap($this->renderProductAttributeList($product, $productAttributesSubpartArray, $typoscript['productAttributes.']['fields.']), $typoscript['productAttributes.']);
     $linkArray = array();
     $linkArray['catUid'] = (int) $categoryUid;
     if ($this->basketHashValue) {
         $linkArray['basketHashValue'] = $this->basketHashValue;
     }
     if (is_numeric($this->piVars['manufacturer'])) {
         $linkArray['manufacturer'] = $this->piVars['manufacturer'];
     }
     if (is_numeric($this->piVars['mDepth'])) {
         $linkArray['mDepth'] = $this->piVars['mDepth'];
     }
     foreach ($hooks as $hookObj) {
         if (method_exists($hookObj, 'postProcessLinkArray')) {
             $linkArray = $hookObj->postProcessLinkArray($linkArray, $product, $this);
         }
     }
     $wrapMarkerArray['###PRODUCT_LINK_DETAIL###'] = explode('|', $this->pi_list_linkSingle('|', $product->getUid(), true, $linkArray, false, $this->conf['overridePid']));
     $articleTemplate = $this->cObj->getSubpart($template, '###' . strtoupper($articleSubpart) . '###');
     if ($this->conf['useStockHandling'] == 1) {
         $product = \CommerceTeam\Commerce\Utility\GeneralUtility::removeNoStockArticles($product, $this->conf['articles.']['showWithNoStock']);
     }
     // Set RenderMaxArticles to TS value
     if (isset($localTs['maxArticles']) && (int) $localTs['maxArticles']) {
         $product->setRenderMaxArticles($localTs['maxArticles']);
     }
     $subpartArray = array();
     if ($this->conf['disableArticleViewForProductlist'] == 1 && !$this->piVars['showUid'] || $this->conf['disableArticleView'] == 1) {
         $subpartArray['###' . strtoupper($articleSubpart) . '###'] = '';
     } else {
         $subpartArray['###' . strtoupper($articleSubpart) . '###'] = $this->makeArticleView('list', array(), $product, $articleMarker, $articleTemplate);
     }
     /*
      * Get The Checapest Price
      */
     $cheapestArticleUid = $product->getCheapestArticle();
     /**
      * Cheapest Article.
      *
      * @var Article $cheapestArticle
      */
     $cheapestArticle = GeneralUtility::makeInstance('CommerceTeam\\Commerce\\Domain\\Model\\Article', $cheapestArticleUid);
     $cheapestArticle->loadData();
     $cheapestArticle->loadPrices();
     $markerArray['###PRODUCT_CHEAPEST_PRICE_GROSS###'] = Money::format($cheapestArticle->getPriceGross(), $this->currency);
     $cheapestArticleUid = $product->getCheapestArticle(1);
     /**
      * Cheapest Article.
      *
      * @var Article $cheapestArticle
      */
     $cheapestArticle = GeneralUtility::makeInstance('CommerceTeam\\Commerce\\Domain\\Model\\Article', $cheapestArticleUid);
     $cheapestArticle->loadData();
     $cheapestArticle->loadPrices();
     $markerArray['###PRODUCT_CHEAPEST_PRICE_NET###'] = Money::format($cheapestArticle->getPriceNet(), $this->currency);
     foreach ($hooks as $hookObj) {
         if (method_exists($hookObj, 'additionalMarkerProduct')) {
             $markerArray = $hookObj->additionalMarkerProduct($markerArray, $product, $this);
         }
     }
     foreach ($hooks as $hookObj) {
         if (method_exists($hookObj, 'additionalSubpartsProduct')) {
             $subpartArray = $hookObj->additionalSubpartsProduct($subpartArray, $product, $this);
         }
     }
     $content = $this->substituteMarkerArrayNoCached($template, $markerArray, $subpartArray, $wrapMarkerArray);
     if ($typoscript['editPanel'] == 1) {
         $content = $this->cObj->editPanel($content, $typoscript['editPanel.'], 'tx_commerce_products:' . $product->getUid());
     }
     foreach ($hooks as $hookObj) {
         if (method_exists($hookObj, 'modifyContentProduct')) {
             $content = $hookObj->modifyContentProduct($content, $product, $this);
         }
     }
     return $content;
 }
Exemplo n.º 2
0
 /**
  * Method for generating the rootlineMenu to use in TS.
  *
  * @param string $content Passed to method
  * @param array $conf TS Array
  *
  * @return array for the menurendering of TYPO3
  */
 public function renderRootline($content, array $conf)
 {
     $this->mConf = $this->processConf($conf);
     $this->pid = (int) ($this->mConf['overridePid'] ? $this->mConf['overridePid'] : $this->getFrontendController()->id);
     $this->entryLevel = (int) $this->mConf['entryLevel'];
     $this->gpVars = GeneralUtility::_GPmerged($this->prefixId);
     \CommerceTeam\Commerce\Utility\GeneralUtility::initializeFeUserBasket();
     $this->gpVars['basketHashValue'] = $this->getBasket()->getBasketHashValue();
     if (!is_object($this->category)) {
         $this->category = GeneralUtility::makeInstance('CommerceTeam\\Commerce\\Domain\\Model\\Category', $this->mConf['category'], $this->getFrontendController()->sys_language_uid);
         $this->category->loadData();
     }
     $returnArray = array();
     $returnArray = $this->getCategoryRootlineforTypoScript((int) $this->gpVars['catUid'], $returnArray);
     /*
      * Add product to rootline, if a product is displayed and showProducts
      * is set via TS
      */
     if ($this->mConf['showProducts'] == 1 && $this->gpVars['showUid'] > 0) {
         /**
          * Product.
          *
          * @var \CommerceTeam\Commerce\Domain\Model\Product $product
          */
         $product = GeneralUtility::makeInstance('CommerceTeam\\Commerce\\Domain\\Model\\Product', $this->gpVars['showUid'], $this->getFrontendController()->sys_language_uid);
         $product->loadData();
         /**
          * Category.
          *
          * @var \CommerceTeam\Commerce\Domain\Model\Category $category
          */
         $category = GeneralUtility::makeInstance('CommerceTeam\\Commerce\\Domain\\Model\\Category', $this->gpVars['catUid'], $this->getFrontendController()->sys_language_uid);
         $category->loadData();
         $addGetvars = $this->separator . $this->prefixId . '[showUid]=' . $product->getUid() . $this->separator . $this->prefixId . '[catUid]=' . $category->getUid();
         if (is_string($this->gpVars['basketHashValue'])) {
             $addGetvars .= $this->separator . $this->prefixId . '[basketHashValue]=' . $this->gpVars['basketHashValue'];
         }
         $cHash = $this->generateChash($addGetvars . $this->getFrontendController()->linkVars);
         /*
          * Currently no Navtitle in tx_commerce_products
          * 'nav_title' => $ProductObject->get_navtitle(),
          */
         if ($product->getUid() == $this->gpVars['showUid']) {
             $itemState = 'CUR';
             $itemStateList = 'CUR,NO';
         } else {
             $itemState = 'NO';
             $itemStateList = 'NO';
         }
         $returnArray[] = array('uid' => $this->pid, '_ADD_GETVARS' => $addGetvars . $this->separator . 'cHash=' . $cHash, 'ITEM_STATE' => $itemState, 'ITEM_STATES_LIST' => $itemStateList, 'title' => $product->getTitle(), '_PAGES_OVERLAY' => $product->getTitle());
     }
     if ($this->entryLevel) {
         for ($i = 0; $i < $this->entryLevel; $i++) {
             array_shift($returnArray);
         }
     }
     return $returnArray;
 }
Exemplo n.º 3
0
 /**
  * This fetches the value for an attribute. It fetches the "default_value"
  * from the table if the attribute has no valuelist, otherwise it fetches
  * the title from the attribute_values table.
  * You can submit only an attribute uid, then the mehod fetches the data
  * from the databse itself, or you submit the data from the relation table
  * and the data from the attribute table if this data is already present.
  *
  * @param int $pUid Product UID
  * @param int $aUid Attribute UID
  * @param string $relationTable Table where the relations between
  *      prodcts and attributes are stored
  * @param array $relationData  Relation dataset between the product
  *      and the attribute (default NULL)
  * @param array $attributeData Meta data (has_valuelist, unit) for
  *      the attribute you want to get the value from (default NULL)
  *
  * @return string The value of the attribute. It's maybe appended with the
  *      unit of the attribute
  */
 public function getAttributeValue($pUid, $aUid, $relationTable, array $relationData = null, array $attributeData = null)
 {
     $database = self::getDatabaseConnection();
     if ($relationData == null || $attributeData == null) {
         // data from database if one of the arguments is NULL. This nesccessary
         // to keep the data consistant
         $relRes = $database->exec_SELECTquery('uid_valuelist, default_value, value_char', $relationTable, 'uid_local = ' . (int) $pUid . ' AND uid_foreign = ' . (int) $aUid);
         $relationData = $database->sql_fetch_assoc($relRes);
         $attributeData = $this->getAttributeData($aUid, 'has_valuelist, unit');
     }
     if ($attributeData['has_valuelist'] == '1') {
         if ($attributeData['multiple'] == 1) {
             $result = array();
             if (is_array($relationData)) {
                 foreach ($relationData as $relation) {
                     $valueRes = $database->exec_SELECTquery('value', 'tx_commerce_attribute_values', 'uid = ' . (int) $relation['uid_valuelist'] . $this->enableFields('tx_commerce_attribute_values'));
                     $value = $database->sql_fetch_assoc($valueRes);
                     $result[] = $value['value'];
                 }
             }
             return '<ul><li>' . implode('</li><li>', \CommerceTeam\Commerce\Utility\GeneralUtility::removeXSSStripTagsArray($result)) . '</li></ul>';
         } else {
             // fetch data from attribute values table
             $valueRes = $database->exec_SELECTquery('value', 'tx_commerce_attribute_values', 'uid = ' . (int) $relationData['uid_valuelist'] . $this->enableFields('tx_commerce_attribute_values'));
             $value = $database->sql_fetch_assoc($valueRes);
             return $value['value'];
         }
     } elseif (!empty($relationData['value_char'])) {
         // the value is in field default_value
         return $relationData['value_char'] . ' ' . $attributeData['unit'];
     }
     return $relationData['default_value'] . ' ' . $attributeData['unit'];
 }
Exemplo n.º 4
0
 /**
  * This method converts an sends mails.
  *
  * @param array $mailconf Mail configuration
  * @param array $orderdata Order data
  * @param string $template Template
  *
  * @return bool of \TYPO3\CMS\Core\Mail\MailMessage
  */
 protected function ordermoveSendMail(array $mailconf, array &$orderdata, &$template)
 {
     // First line is subject
     $parts = explode(chr(10), $mailconf['plain']['content'], 2);
     // add mail subject
     $mailconf['alternateSubject'] = trim($parts[0]);
     // replace plaintext content
     $mailconf['plain']['content'] = trim($parts[1]);
     /*
      * Convert Text to charset
      */
     $this->csConvObj->initCharset('utf-8');
     $this->csConvObj->initCharset('8bit');
     $mailconf['plain']['content'] = $this->csConvObj->conv($mailconf['plain']['content'], 'utf-8', 'utf-8');
     $mailconf['alternateSubject'] = $this->csConvObj->conv($mailconf['alternateSubject'], 'utf-8', 'utf-8');
     $hooks = \CommerceTeam\Commerce\Factory\HookFactory::getHooks('Hook/OrdermailHooks', 'ordermoveSendMail');
     foreach ($hooks as $hook) {
         if (method_exists($hook, 'postOrdermoveSendMail')) {
             $hook->postOrdermoveSendMail($mailconf, $orderdata, $template);
         }
     }
     return \CommerceTeam\Commerce\Utility\GeneralUtility::sendMail($mailconf);
 }
Exemplo n.º 5
0
 /**
  * Returns if this category has products with stock.
  *
  * @return bool TRUE, if this category has products with stock, FALSE if not
  */
 public function hasProductsWithStock()
 {
     $result = false;
     if ($this->hasProducts()) {
         $result = !empty(\CommerceTeam\Commerce\Utility\GeneralUtility::removeNoStockProducts($this->getProducts(), 0));
     }
     return $result;
 }
Exemplo n.º 6
0
 /**
  * Send admin mail
  * Also performes a charset Conversion for the mail, including Sender.
  *
  * @param int $orderUid Order ID
  * @param array $orderData Collected Order Data form PI3
  *
  * @return bool TRUE on success
  */
 public function sendAdminMail($orderUid, array $orderData)
 {
     $hooks = HookFactory::getHooks('Controller/CheckoutController', 'sendAdminMail');
     $frontendController = $this->getFrontendController();
     if (is_array($this->getFrontendUser()->user && strlen($this->getFrontendUser()->user['email']))) {
         $userMail = $this->getFrontendUser()->user['email'];
     } else {
         $userMail = $this->sessionData['billing']['email'];
     }
     if (is_array($this->getFrontendUser()->user && strlen($this->getFrontendUser()->user['name']))) {
         $userName = $this->getFrontendUser()->user['name'] . ' ' . $this->getFrontendUser()->user['surname'];
     } else {
         $userName = $this->sessionData['billing']['name'] . ' ' . $this->sessionData['billing']['surname'];
     }
     if ($this->conf['adminmail.']['from'] || $userMail) {
         /**
          * Checkout controller.
          *
          * @var \CommerceTeam\Commerce\Controller\CheckoutController $adminMailObj
          */
         $adminMailObj = GeneralUtility::makeInstance('CommerceTeam\\Commerce\\Controller\\CheckoutController');
         $adminMailObj->conf = $this->conf;
         $adminMailObj->pi_setPiVarDefaults();
         $adminMailObj->cObj = $this->cObj;
         $adminMailObj->pi_loadLL();
         $adminMailObj->staticInfo =& $this->staticInfo;
         $adminMailObj->currency = $this->currency;
         $adminMailObj->showCurrency = $this->conf['adminmail.']['showCurrency'];
         $adminMailObj->templateCode = $this->cObj->fileResource($this->conf['adminmail.']['templateFile']);
         $adminMailObj->generateLanguageMarker();
         $adminMailObj->userData = $this->userData;
         foreach ($hooks as $hookObj) {
             if (method_exists($hookObj, 'preGenerateMail')) {
                 $hookObj->preGenerateMail($adminMailObj, $this);
             }
         }
         $mailcontent = $adminMailObj->generateMail($orderUid, $orderData);
         $basket = $this->getBasket();
         foreach ($hooks as $hookObj) {
             if (method_exists($hookObj, 'postGenerateMail')) {
                 $hookObj->postGenerateMail($adminMailObj, $this, $basket, $mailcontent, $this);
             }
         }
         $htmlContent = '';
         if ($this->conf['adminmail.']['useHtml'] == '1' && $this->conf['adminmail.']['templateFileHtml']) {
             $adminMailObj->templateCode = $this->cObj->fileResource($this->conf['adminmail.']['templateFileHtml']);
             $htmlContent = $adminMailObj->generateMail($orderUid, $orderData, array());
             $adminMailObj->isHtmlMail = true;
             foreach ($hooks as $hookObj) {
                 if (method_exists($hookObj, 'postGenerateMail')) {
                     $hookObj->postGenerateMail($adminMailObj, $this, $basket, $htmlContent);
                 }
             }
             unset($adminMailObj->isHtmlMail);
         }
         // Moved to plainMailEncoded
         // First line is subject
         $parts = explode(chr(10), $mailcontent, 2);
         $subject = trim($parts[0]);
         $plainMessage = trim($parts[1]);
         // Check if charset ist set by TS
         // Otherwise set to default Charset
         if (!$this->conf['adminmail.']['charset']) {
             $this->conf['adminmail.']['charset'] = $frontendController->renderCharset;
         }
         // Checck if mailencoding ist set
         // Otherwise set to 8bit
         if (!$this->conf['adminmail.']['encoding ']) {
             $this->conf['adminmail.']['encoding '] = '8bit';
         }
         // Convert Text to charset
         $frontendController->csConvObj->initCharset($frontendController->renderCharset);
         $frontendController->csConvObj->initCharset(strtolower($this->conf['adminmail.']['charset']));
         $plainMessage = $frontendController->csConvObj->conv($plainMessage, $frontendController->renderCharset, strtolower($this->conf['adminmail.']['charset']));
         $subject = $frontendController->csConvObj->conv($subject, $frontendController->renderCharset, strtolower($this->conf['adminmail.']['charset']));
         $usernameMailencoded = $frontendController->csConvObj->specCharsToASCII($frontendController->renderCharset, $userName);
         if ($this->debug) {
             print '<b>Adminmail from </b><pre>' . $plainMessage . '</pre>' . LF;
         }
         // Mailconf for tx_commerce_div::sendMail($mailconf);
         $recipient = array();
         if ($this->conf['adminmail.']['cc']) {
             $recipient = GeneralUtility::trimExplode(',', $this->conf['adminmail.']['cc']);
         }
         if (is_array($recipient)) {
             array_push($recipient, $this->conf['adminmail.']['mailto']);
         }
         $mailconf = array('plain' => array('content' => $plainMessage, 'subject' => $subject), 'html' => array('content' => $htmlContent, 'path' => '', 'useHtml' => $this->conf['adminmail.']['useHtml']), 'defaultCharset' => $this->conf['adminmail.']['charset'], 'encoding' => $this->conf['adminmail.']['encoding'], 'attach' => $this->conf['adminmail.']['attach.'], 'alternateSubject' => $this->conf['adminmail.']['alternateSubject'], 'recipient' => implode(',', $recipient), 'recipient_copy' => $this->conf['adminmail.']['bcc'], 'replyTo' => $this->conf['adminmail.']['from'], 'priority' => $this->conf['adminmail.']['priority'], 'callLocation' => 'sendAdminMail', 'additionalData' => $this);
         // Check if user mail is set
         if ($userMail && $usernameMailencoded && $this->conf['adminmail.']['sendAsUser'] == 1) {
             $mailconf['fromEmail'] = $userMail;
             $mailconf['fromName'] = $usernameMailencoded;
         } else {
             $mailconf['fromEmail'] = $this->conf['adminmail.']['from'];
             $mailconf['fromName'] = $this->conf['adminmail.']['from_name'];
         }
         \CommerceTeam\Commerce\Utility\GeneralUtility::sendMail($mailconf);
         return true;
     }
     return false;
 }
Exemplo n.º 7
0
 /**
  * Gets the basket storage pid.
  *
  * @return int
  */
 public function getBasketStoragePid()
 {
     if (is_null($this->basketStoragePid)) {
         $this->basketStoragePid = GeneralUtility::getBasketStoragePid();
     }
     return $this->basketStoragePid;
 }
Exemplo n.º 8
0
 /**
  * Get all addresses from the database that are assigned to the current user.
  *
  * @param int $userId      UID of the user
  * @param int $addressType Type of addresses to retrieve
  *
  * @return array Keys with UIDs and values with complete addresses data
  */
 public function getAddresses($userId, $addressType = 0)
 {
     $select = 'tx_commerce_fe_user_id = ' . (int) $userId . \TYPO3\CMS\Backend\Utility\BackendUtility::BEenableFields('tt_address');
     if ($addressType > 0) {
         $select .= ' AND tx_commerce_address_type_id=' . (int) $addressType;
     } elseif (isset($this->conf['selectAddressTypes'])) {
         $select .= ' AND tx_commerce_address_type_id IN (' . $this->conf['selectAddressTypes'] . ')';
     } else {
         $this->addresses = array();
         return array();
     }
     $select .= ' AND deleted=0 AND pid=' . $this->conf['addressPid'];
     /*
      * Hook for adding select statement
      */
     $hooks = HookFactory::getHooks('Controller/AddressesController', 'getAddresses');
     foreach ($hooks as $hook) {
         if (method_exists($hook, 'editSelectStatement')) {
             $select = $hook->editSelectStatement($select, $userId, $addressType, $this);
         }
     }
     $rows = $this->getDatabaseConnection()->exec_SELECTgetRows('*', 'tt_address', $select, '', 'tx_commerce_is_main_address desc');
     $result = array();
     foreach ($rows as $address) {
         $result[$address['uid']] = \CommerceTeam\Commerce\Utility\GeneralUtility::removeXSSStripTagsArray($address);
     }
     return $result;
 }
Exemplo n.º 9
0
 /**
  * Inits the main params for using in the script.
  *
  * @param array $conf Configuration
  *
  * @return void
  */
 public function init(array $conf = array())
 {
     parent::init($conf);
     // Merge default vars, if other prefix_id
     if ($this->prefixId != 'tx_commerce_pi1') {
         $generellRequestVars = GeneralUtility::_GP('tx_commerce');
         if (is_array($generellRequestVars)) {
             foreach ($generellRequestVars as $key => $value) {
                 if (empty($this->piVars[$key])) {
                     $this->piVars[$key] = $value;
                 }
             }
         }
     }
     $hooks = HookFactory::getHooks('Controller/ListController', 'init');
     foreach ($hooks as $hook) {
         if (method_exists($hook, 'preInit')) {
             $hook->preInit($this);
         }
     }
     $this->conf['singleProduct'] = (int) $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'product_id', 's_product');
     if ($this->conf['singleProduct'] > 0) {
         // product UID was set by Plugin or TS
         $this->singleViewAsPlugin = true;
     }
     // Unset variable, if smaller than 0, as -1 is returend
     // when no product is selcted in form.
     if ($this->conf['singleProduct'] < 0) {
         $this->conf['singleProduct'] = false;
     }
     $this->piVars['showUid'] = intval($this->piVars['showUid']) ?: 0;
     $this->piVars['showUid'] = $this->piVars['showUid'] ?: $this->conf['singleProduct'];
     $this->handle = $this->piVars['showUid'] ? 'singleView' : 'listView';
     // Define the currency
     // Use of curency is depricated as it was only a typo :-)
     if ($this->conf['curency'] > '') {
         $this->currency = $this->conf['curency'];
     }
     if ($this->conf['currency'] > '') {
         $this->currency = $this->conf['currency'];
     }
     if (empty($this->currency)) {
         $this->currency = 'EUR';
     }
     // Set some flexform values
     $this->master_cat = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'StartCategory', 's_product');
     if (!$this->master_cat) {
         $this->master_cat = $this->conf['catUid'];
     }
     if ($this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'listPid', 's_template')) {
         $this->conf['listPid'] = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'listPid', 's_template');
     }
     if ($this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'singlePid', 's_template')) {
         $this->conf['singlePid'] = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'singlePid', 's_template');
     }
     // @deprecated flexform value to be removed in 5.0.0
     if ($this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'displayPID', 's_template')) {
         $this->conf['overridePid'] = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'displayPID', 's_template');
     }
     if ($this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'numberOfTopproducts', 's_product')) {
         $this->conf['numberOfTopproducts'] = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'numberOfTopproducts', 's_product');
     }
     if ($this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'showPageBrowser', 's_template')) {
         $this->conf['showPageBrowser'] = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'showPageBrowser', 's_template');
     }
     if ($this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'maxRecords', 's_template')) {
         $this->conf['maxRecords'] = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'maxRecords', 's_template');
     }
     if ($this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'maxPages', 's_template')) {
         $this->conf['maxPages'] = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'maxPages', 's_template');
     }
     if ($this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'basketPid', 's_template')) {
         $this->conf['basketPid'] = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'basketPid', 's_template');
     }
     if ($this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'dontLinkActivePage', 's_template')) {
         $this->conf['pageBrowser.']['dontLinkActivePage'] = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'dontLinkActivePage', 's_template');
     }
     if ($this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'showFirstLast', 's_template')) {
         $this->conf['pageBrowser.']['showFirstLast'] = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'showFirstLast', 's_template');
     }
     if ($this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'showRange', 's_template')) {
         $this->conf['pageBrowser.']['showRange'] = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'showRange', 's_template');
     }
     if ($this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'showItemCount', 's_template')) {
         $this->conf['pageBrowser.']['showItemCount'] = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'showItemCount', 's_template');
     }
     if ($this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'hscText', 's_template')) {
         $this->conf['pageBrowser.']['hscText'] = $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'hscText', 's_template');
     }
     if ($this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'template', 's_template') && file_exists($this->templateFolder . $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'template', 's_template'))) {
         $this->conf['templateFile'] = $this->templateFolder . $this->pi_getFFvalue($this->cObj->data['pi_flexform'], 'template', 's_template');
         if ($this->cObj->fileResource($this->conf['templateFile'])) {
             $this->templateCode = $this->cObj->fileResource($this->conf['templateFile']);
         }
     }
     $accessible = false;
     /**
      * Temporary category.
      *
      * @var Category
      */
     $tmpCategory = null;
     if ($this->piVars['catUid']) {
         $this->cat = (int) $this->piVars['catUid'];
         $tmpCategory = GeneralUtility::makeinstance('CommerceTeam\\Commerce\\Domain\\Model\\Category', $this->cat, $this->getFrontendController()->sys_language_uid);
         $accessible = $tmpCategory->isAccessible();
     }
     // Validate given catUid, if it's given and accessible
     if (!$this->piVars['catUid'] || !$accessible) {
         $this->cat = (int) $this->master_cat;
         $tmpCategory = GeneralUtility::makeinstance('CommerceTeam\\Commerce\\Domain\\Model\\Category', $this->cat, $this->getFrontendController()->sys_language_uid);
     }
     if (!isset($this->piVars['catUid'])) {
         $this->piVars['catUid'] = $this->master_cat;
     }
     if (is_object($tmpCategory)) {
         $tmpCategory->loadData();
     }
     $this->category = $tmpCategory;
     $categorySubproducts = $this->category->getProductUids();
     $frontend = $this->getFrontendController();
     if (!$this->conf['singleProduct'] && (int) $this->piVars['showUid'] && !$this->getFrontendController()->beUserLogin) {
         if (is_array($categorySubproducts)) {
             if (!in_array($this->piVars['showUid'], $categorySubproducts)) {
                 $categoryAllSubproducts = $this->category->getProducts();
                 if (!in_array((int) $this->piVars['showUid'], $categoryAllSubproducts)) {
                     // The requested product is not beblow the selected category
                     // So exit with page not found
                     $frontend->pageNotFoundAndExit($this->pi_getLL('error.productNotFound', 'Product not found', 1));
                 }
             }
         } else {
             $categoryAllSubproducts = $this->category->getProducts();
             if (!in_array($this->piVars['showUid'], $categoryAllSubproducts)) {
                 // The requested product is not beblow the selected category
                 // So exit with page not found
                 $frontend->pageNotFoundAndExit($this->pi_getLL('error.productNotFound', 'Product not found', 1));
             }
         }
     }
     if ($this->piVars['catUid'] && $this->conf['checkCategoryTree'] == 1) {
         // Validate given CAT UID, if is below master_cat
         $this->masterCategoryObj = GeneralUtility::makeinstance('CommerceTeam\\Commerce\\Domain\\Model\\Category', $this->master_cat, $this->getFrontendController()->sys_language_uid);
         $this->masterCategoryObj->loadData();
         /*
          * Master category
          *
          * @var Category masterCategoryObj
          */
         $masterCategorySubCategories = $this->masterCategoryObj->getChildCategoriesUidlist();
         if (in_array($this->piVars['catUid'], $masterCategorySubCategories)) {
             $this->cat = (int) $this->piVars['catUid'];
         } else {
             // Wrong UID, so start with page not found
             $frontend->pageNotFoundAndExit($this->pi_getLL('error.categoryNotFound', 'Product not found', 1));
         }
     } elseif (!isset($this->piVars['catUid'])) {
         $this->cat = (int) $this->master_cat;
     }
     if ($this->cat != $this->category->getUid()) {
         // Only, if the category has been changed
         unset($this->category);
         /*
          * Category
          *
          * @var Category category
          */
         $this->category = GeneralUtility::makeinstance('CommerceTeam\\Commerce\\Domain\\Model\\Category', $this->cat, $this->getFrontendController()->sys_language_uid);
         $this->category->loadData();
     }
     $this->internal['results_at_a_time'] = $this->conf['maxRecords'];
     $this->internal['maxPages'] = $this->conf['maxPages'];
     // Going the long way ??? Just for list view
     $long = 1;
     switch ($this->handle) {
         case 'singleView':
             if ($this->initSingleView($this->piVars['showUid'])) {
                 $long = 0;
             }
             break;
         default:
     }
     if ($this->cat > 0) {
         $this->category_array = $this->category->returnAssocArray();
         $catConf = $this->category->getTyposcriptConfig();
         if (is_array($catConf['catTS.'])) {
             \TYPO3\CMS\Core\Utility\ArrayUtility::mergeRecursiveWithOverrule($this->conf, $catConf['catTS.']);
         }
         if ($long) {
             $this->category->setPageTitle();
             $this->category->getChildCategories();
             if ($this->conf['groupProductsByCategory']) {
                 $this->category_products = $this->category->getProducts(0);
             } elseif ($this->conf['showProductsRecLevel']) {
                 $this->category_products = $this->category->getProducts($this->conf['showProductsRecLevel']);
             } else {
                 $this->category_products = $this->category->getProducts(0);
             }
             if ($this->conf['useStockHandling'] == 1) {
                 $this->category_products = \CommerceTeam\Commerce\Utility\GeneralUtility::removeNoStockProducts($this->category_products, $this->conf['products.']['showWithNoStock']);
             }
             $this->internal['res_count'] = count($this->category_products);
         }
     } else {
         $this->content = $this->cObj->stdWrap($this->conf['emptyCOA'], $this->conf['emptyCOA.']);
         $this->handle = false;
     }
     foreach ($hooks as $hook) {
         if (method_exists($hook, 'postInit')) {
             $hook->postInit($this);
         }
     }
 }
Exemplo n.º 10
0
 /**
  * Returns the HTML code for the header row.
  *
  * @param int $colCount The number of columns we have
  * @param array $acBefore The additional columns before the attribute columns
  * @param array $acAfter The additional columns after the attribute columns
  * @param bool $addTr Add table row
  *
  * @return string The HTML header code
  */
 protected function getHeadRow(&$colCount, array $acBefore = null, array $acAfter = null, $addTr = true)
 {
     $result = '';
     if ($addTr) {
         $result .= '<tr>';
     }
     if ($acBefore != null) {
         $result .= '<th>' . implode('</th><th>', \CommerceTeam\Commerce\Utility\GeneralUtility::removeXSSStripTagsArray($acBefore)) . '</th>';
     }
     if (is_array($this->attributes['ct1'])) {
         foreach ($this->attributes['ct1'] as $attribute) {
             $result .= '<th>' . htmlspecialchars(strip_tags($attribute['attributeData']['title'])) . '</th>';
             ++$colCount;
         }
     }
     if ($acAfter != null) {
         $result .= '<th>' . implode('</th><th>', \CommerceTeam\Commerce\Utility\GeneralUtility::removeXSSStripTagsArray($acAfter)) . '</th>';
     }
     if ($addTr) {
         $result .= '</tr>';
     }
     $colCount += count($acBefore) + count($acAfter);
     return $result;
 }