Пример #1
0
 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;
 }
Пример #2
0
 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));
 }