protected function buildQueryFromConditions($excludeConditions = false, $excludedFieldname = null, $variantMode = null) { if ($variantMode == null) { $variantMode = $this->getVariantMode(); } $preCondition = "active = 1 AND o_virtualProductActive = 1"; if ($this->inProductList) { $preCondition .= " AND inProductList = 1"; } $tenantCondition = $this->getCurrentTenantConfig()->getCondition(); if ($tenantCondition) { $preCondition .= " AND " . $tenantCondition; } if ($this->getCategory()) { $preCondition .= " AND parentCategoryIds LIKE '%," . $this->getCategory()->getId() . ",%'"; } $condition = $preCondition; //variant handling and userspecific conditions if ($variantMode == OnlineShop_Framework_IProductList::VARIANT_MODE_INCLUDE_PARENT_OBJECT) { if (!$excludeConditions) { $userspecific = $this->buildUserspecificConditions($excludedFieldname); if ($userspecific) { $condition .= " AND " . $userspecific; } } } else { if ($variantMode == OnlineShop_Framework_IProductList::VARIANT_MODE_HIDE) { $condition .= " AND o_type != 'variant'"; } if (!$excludeConditions) { $userspecific = $this->buildUserspecificConditions($excludedFieldname); if ($userspecific) { $condition .= " AND " . $userspecific; } } } if ($this->queryConditions) { $searchstring = ""; foreach ($this->queryConditions as $queryConditionPartArray) { foreach ($queryConditionPartArray as $queryConditionPart) { $searchstring .= "+" . $queryConditionPart . "* "; } } $condition .= " AND " . $this->resource->buildFulltextSearchWhere($this->tenantConfig->getSearchAttributeConfig(), $searchstring); } OnlineShop_Plugin::getSQLLogger()->log("Total Condition: " . $condition, Zend_Log::INFO); return $condition; }
protected function doInsertData($data) { //insert index data $dataKeys = []; $updateData = []; $insertData = []; $insertStatement = []; foreach ($data as $key => $d) { $dataKeys[$this->db->quoteIdentifier($key)] = '?'; $updateData[] = $d; $insertStatement[] = $this->db->quoteIdentifier($key) . " = ?"; $insertData[] = $d; } $insert = "INSERT INTO " . $this->tenantConfig->getTablename() . " (" . implode(",", array_keys($dataKeys)) . ") VALUES (" . implode(",", $dataKeys) . ")" . " ON DUPLICATE KEY UPDATE " . implode(",", $insertStatement); $this->db->query($insert, array_merge($updateData, $insertData)); }