function lfGetProductsList($searchCondition, $disp_number, $startno, $linemax, &$objProduct) { if (DB_TYPE != 'sqlsrv') { return parent::lfGetProductsList($searchCondition, $disp_number, $startno, $linemax, $objProduct); } else { $arrOrderVal = array(); $objQuery =& SC_Query_Ex::getSingletonInstance(); // 表示順序 switch ($this->orderby) { // 販売価格が安い順 case 'price': $objProduct->setProductsOrder('price02', 'dtb_products_class', 'ASC'); break; // 新着順 // 新着順 case 'date': $objProduct->setProductsOrder('create_date', 'dtb_products', 'DESC'); break; default: if (strlen($searchCondition['where_category']) >= 1) { $dtb_product_categories = '(SELECT * FROM dtb_product_categories WHERE ' . $searchCondition['where_category'] . ')'; $arrOrderVal = $searchCondition['arrvalCategory']; } else { $dtb_product_categories = 'dtb_product_categories'; } $order = <<<__EOS__ ( SELECT TOP 1 T3.rank * 2147483648 + T2.rank FROM {$dtb_product_categories} T2 JOIN dtb_category T3 ON T2.category_id = T3.category_id WHERE T2.product_id = alldtl.product_id ORDER BY T3.rank DESC, T2.rank DESC ) DESC ,product_id DESC __EOS__; $objQuery->setOrder($order); break; } // 取得範囲の指定(開始行番号、行数のセット) $objQuery->setLimitOffset($disp_number, $startno); $objQuery->setWhere($searchCondition['where']); // 表示すべきIDとそのIDの並び順を一気に取得 $arrProductId = $objProduct->findProductIdsOrder($objQuery, array_merge($searchCondition['arrval'], $arrOrderVal)); $objQuery =& SC_Query_Ex::getSingletonInstance(); $arrProducts = $objProduct->getListByProductIds($objQuery, $arrProductId); // 規格を設定 $objProduct->setProductsClassByProductIds($arrProductId); $arrProducts['productStatus'] = $objProduct->getProductStatus($arrProductId); return $arrProducts; } }
/** * Page のプロセス. * * @return void */ function process() { parent::process(); }
/** * 検索条件のwhere文とかを取得 * * @return array */ public function lfGetSearchCondition(&$arrSearchData) { $searchCondition = parent::lfGetSearchCondition($arrSearchData); GC_Utils_Ex::gfPrintLog(print_r($this->arrForm, true), DEBUG_LOG_REALFILE); $objSql = new SC_SelectSql_Ex(); $objSql->setWhere($searchCondition['where']); $character_id = $this->arrForm['character_id']; if (SC_Utils_Ex::sfIsInt($character_id)) { $this->arrSearchData["character_id"] = $character_id; $objSql->setWhere("product_id IN (\n SELECT product_id\n FROM cp_dtb_product_characters\n INNER JOIN cp_dtb_character USING(character_id)\n WHERE character_id = ?\n AND cp_dtb_character.status = 1\n AND cp_dtb_character.del_flg = 0\n )"); $searchCondition['arrval'][] = intval($character_id); } $searchCondition['where'] = $objSql->getWhere(false); $searchCondition['where_for_count'] = $objSql->getWhere(false); return $searchCondition; }
/** * デストラクタ. * * @return void */ function destroy() { parent::destroy(); }