/** * Gets all active categories from the rootline to change the ItemState * * @return array of all active Categories * @depricated since commerce 1.0.0, this function will be removed in commerce 1.4.0, method is no API and should be used */ public function getActiveCats() { \TYPO3\CMS\Core\Utility\GeneralUtility::logDeprecatedFunction(); $active = array('0' => $this->catObj->getUid()); $rootline = $this->catObj->getParentCategoriesUidlist(); foreach ($rootline as $cat) { $active[] = $cat; } return $active; }
/** * 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 = \TYPO3\CMS\Core\Utility\GeneralUtility::_GP('tx_commerce'); if (is_array($generellRequestVars)) { foreach ($generellRequestVars as $key => $value) { if (empty($this->piVars[$key])) { $this->piVars[$key] = $value; } } } } if (is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['commerce/pi1/class.tx_commerce_pi1.php']['init'])) { \TYPO3\CMS\Core\Utility\GeneralUtility::deprecationLog(' hook $GLOBALS[\'TYPO3_CONF_VARS\'][\'EXTCONF\'][\'commerce/pi1/class.tx_commerce_pi1.php\'][\'init\'] is deprecated since commerce 1.0.0, it will be removed in commerce 1.4.0, please use instead $GLOBALS[\'TYPO3_CONF_VARS\'][\'EXTCONF\'][\'commerce/Classes/Controller/ListController.php\'][\'init\'] '); foreach ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['commerce/pi1/class.tx_commerce_pi1.php']['init'] as $classRef) { $hookObj = \TYPO3\CMS\Core\Utility\GeneralUtility::getUserObj($classRef); if (method_exists($hookObj, 'preInit')) { $hookObj->preInit($this); } } } if (is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['commerce/Classes/Controller/ListController.php']['init'])) { foreach ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['commerce/Classes/Controller/ListController.php']['init'] as $classRef) { $hookObj = \TYPO3\CMS\Core\Utility\GeneralUtility::getUserObj($classRef); if (method_exists($hookObj, 'preInit')) { $hookObj->preInit($this); } } } $this->templateFolder = 'uploads/tx_commerce/'; $this->pi_USER_INT_obj = 0; $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'], '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 Tx_Commerce_Domain_Model_Category $tmpCategory */ $tmpCategory = NULL; if ($this->piVars['catUid']) { $this->cat = (int) $this->piVars['catUid']; $tmpCategory = \TYPO3\CMS\Core\Utility\GeneralUtility::makeinstance('Tx_Commerce_Domain_Model_Category', $this->cat, $this->getFrontendController()->tmpl->setup['config.']['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 = \TYPO3\CMS\Core\Utility\GeneralUtility::makeinstance('Tx_Commerce_Domain_Model_Category', $this->cat, $this->getFrontendController()->tmpl->setup['config.']['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'] > 0 && !$GLOBALS['TSFE']->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 = \TYPO3\CMS\Core\Utility\GeneralUtility::makeinstance('Tx_Commerce_Domain_Model_Category', $this->master_cat, $this->getFrontendController()->tmpl->setup['config.']['sys_language_uid']); $this->masterCategoryObj->loadData(); /** * Master category * * @var Tx_Commerce_Domain_Model_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 Tx_Commerce_Domain_Model_Category category */ $this->category = \TYPO3\CMS\Core\Utility\GeneralUtility::makeinstance('Tx_Commerce_Domain_Model_Category', $this->cat, $GLOBALS['TSFE']->tmpl->setup['config.']['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 = Tx_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; } if (is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['commerce/pi1/class.tx_commerce_pi1.php']['postInit'])) { \TYPO3\CMS\Core\Utility\GeneralUtility::deprecationLog(' hook $GLOBALS[\'TYPO3_CONF_VARS\'][\'EXTCONF\'][\'commerce/pi1/class.tx_commerce_pi1.php\'][\'postInit\'] is deprecated since commerce 1.0.0, it will be removed in commerce 1.4.0, please use instead $GLOBALS[\'TYPO3_CONF_VARS\'][\'EXTCONF\'][\'commerce/Classes/Controller/ListController.php\'][\'postInit\'] '); foreach ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['commerce/pi1/class.tx_commerce_pi1.php']['postInit'] as $classRef) { $hookObj = \TYPO3\CMS\Core\Utility\GeneralUtility::getUserObj($classRef); if (method_exists($hookObj, 'postInit')) { $hookObj->postInit($this); } } } if (is_array($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['commerce/Classes/Controller/ListController.php']['postInit'])) { foreach ($GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['commerce/Classes/Controller/ListController.php']['postInit'] as $classRef) { $hookObj = \TYPO3\CMS\Core\Utility\GeneralUtility::getUserObj($classRef); if (method_exists($hookObj, 'postInit')) { $hookObj->postInit($this); } } } }
/** * Adds the global Marker for the formtags to the given marker array * * @param array $markerArray Array of marker * @param string|bool $wrap If the marker should be wrapped * * @return array Marker Array with the new marker */ public function addFormMarker(array $markerArray, $wrap = FALSE) { $newMarkerArray['GENERAL_FORM_ACTION'] = $this->pi_getPageLink($this->conf['basketPid']); if (!empty($this->conf['basketPid.'])) { $basketConf = $this->conf['basketPid.']; $basketConf['returnLast'] = 'url'; $newMarkerArray['GENERAL_FORM_ACTION'] = $this->cObj->typoLink('', $basketConf); } if (is_object($this->category)) { $newMarkerArray['GENERAL_HIDDENCATUID'] = '<input type="hidden" name="' . $this->prefixId . '[catUid]" value="' . $this->category->getUid() . '" />'; } if ($wrap) { foreach ($newMarkerArray as $key => $value) { $markerArray[$this->cObj->wrap($key, $wrap)] = $value; } } else { $markerArray = array_merge($markerArray, $newMarkerArray); } return $markerArray; }