本文整理汇总了PHP中SC_Utils_Ex::sfArrayIntersectKeys方法的典型用法代码示例。如果您正苦于以下问题:PHP SC_Utils_Ex::sfArrayIntersectKeys方法的具体用法?PHP SC_Utils_Ex::sfArrayIntersectKeys怎么用?PHP SC_Utils_Ex::sfArrayIntersectKeys使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SC_Utils_Ex
的用法示例。
在下文中一共展示了SC_Utils_Ex::sfArrayIntersectKeys方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: lfRegistProduct
/**
* 商品登録を行う.
*
* FIXME: 商品登録の実処理自体は、LC_Page_Admin_Products_Productと共通化して欲しい。
*
* @param SC_Query $objQuery
* SC_Queryインスタンス
* @param string|integer $line
* 処理中の行数
* @return void
*/
public function lfRegistProduct($objQuery, $line = '', &$objFormParam)
{
// 登録データ対象取得
$arrList = $objFormParam->getDbArray();
// 登録時間を生成(DBのCURRENT_TIMESTAMPだとcommitした際、全て同一の時間になってしまう)
$arrList['update_date'] = $this->lfGetDbFormatTimeWithLine($line);
// 商品登録情報を生成する。
// 商品テーブルのカラムに存在しているもののうち、Form投入設定されていないデータは上書きしない。
$sqlval = SC_Utils_Ex::sfArrayIntersectKeys($arrList, $this->arrProductColumn);
// 必須入力では無い項目だが、空文字では問題のある特殊なカラム値の初期値設定
$sqlval = $this->lfSetProductDefaultData($sqlval);
GC_Utils_Ex::gfPrintLog(print_r(array(__LINE__, $sqlval, $arrList), true), DEBUG_LOG_REALFILE);
$sqlval = $objQuery->extractOnlyColsOf($this->table, $sqlval);
if ($sqlval[$this->id_column] != '') {
// 同じidが存在すればupdate存在しなければinsert
$where = $this->id_column . ' = ?';
$product_exists = $objQuery->exists($this->table, $where, array($sqlval[$this->id_column]));
if ($product_exists) {
GC_Utils_Ex::gfPrintLog(print_r(array(__LINE__, $sqlval, $arrList), true), DEBUG_LOG_REALFILE);
$objQuery->update($this->table, $sqlval, $where, array($sqlval[$this->id_column]));
} else {
$sqlval['create_date'] = $arrList['update_date'];
// INSERTの実行
GC_Utils_Ex::gfPrintLog(print_r(array(__LINE__, $sqlval, $arrList), true), DEBUG_LOG_REALFILE);
$objQuery->insert($this->table, $sqlval);
// シーケンスの調整
$seq_count = $objQuery->currVal($this->seq_name);
if ($seq_count < $sqlval[$this->id_column]) {
$objQuery->setVal($this->seq_name, $sqlval[$this->id_column] + 1);
}
}
$product_id = $sqlval[$this->id_column];
} else {
// 新規登録
$sqlval[$this->id_column] = $objQuery->nextVal($this->seq_name);
$product_id = $sqlval[$this->id_column];
$sqlval['create_date'] = $arrList['update_date'];
// INSERTの実行
GC_Utils_Ex::gfPrintLog(print_r(array(__LINE__, $sqlval, $arrList), true), DEBUG_LOG_REALFILE);
$objQuery->insert($this->table, $sqlval);
}
$objDb = new SC_Helper_DB_Ex();
// カテゴリ登録
if (isset($arrList['category_ids'])) {
if ($objDb->sfColumnExists($this->categories_table, $this->id_column)) {
$objQuery->delete($this->categories_table, $this->id_column . " = ?", array($sqlval[$this->id_column]));
$arrCategory_id = explode(',', $arrList['category_ids']);
$rank = 1;
foreach ($arrCategory_id as $category_id) {
$sqlval2 = array($this->id_column => $sqlval[$this->id_column], "category_id" => $category_id, "rank" => $rank++);
$sqlval2 = $objQuery->extractOnlyColsOf($this->categories_table, $sqlval2);
$objQuery->insert($this->categories_table, $sqlval2);
}
}
} elseif (count($this->arrCategory) == 1) {
if ($objDb->sfColumnExists($this->categories_table, $this->id_column)) {
$objQuery->delete($this->categories_table, $this->id_column . " = ?", array($sqlval[$this->id_column]));
$keys = array_keys($this->arrCategory);
$sqlval2 = array($this->id_column => $sqlval[$this->id_column], "category_id" => $keys[0], "rank" => 1);
$sqlval2 = $objQuery->extractOnlyColsOf($this->categories_table, $sqlval2);
$objQuery->insert($this->categories_table, $sqlval2);
}
}
}
示例2: extractShipping
/**
* 配送情報のみ抜き出す。
*
* @param string $arrSrc 元となる配列
* @return void
*/
public function extractShipping($arrSrc)
{
$arrKey = array();
foreach ($this->arrShippingKey as $key) {
$arrKey[] = 'shipping_' . $key;
}
return SC_Utils_Ex::sfArrayIntersectKeys($arrSrc, $arrKey);
}
示例3: lfRegistProductClass
/**
* 商品規格登録を行う.
*
* FIXME: 商品規格登録の実処理自体は、LC_Page_Admin_Products_Productと共通化して欲しい。
*
* @param SC_Query $objQuery SC_Queryインスタンス
* @param array $arrList 商品規格情報配列
* @param integer $product_id 商品ID
* @param integer $product_class_id 商品規格ID
* @return void
*/
public function lfRegistProductClass($objQuery, $arrList, $product_id, $product_class_id)
{
$objProduct = new SC_Product_Ex();
// FIXME: dtb_csvテーブルの中で古いカラム名(右辺)が設定されている。sfArrayIntersectKeysでフィルタされてしまうので、名称を変更する必要がある
if (array_key_exists('classcategory_id', $arrList) && $arrList['classcategory_id'] != '') {
$arrList['classcategory_id1'] = $arrList['classcategory_id'];
}
if (array_key_exists('parent_classcategory_id', $arrList) && $arrList['classcategory_id'] != '') {
$arrList['classcategory_id2'] = $arrList['parent_classcategory_id'];
}
// 商品規格登録情報を生成する。
// 商品規格テーブルのカラムに存在しているもののうち、Form投入設定されていないデータは上書きしない。
$sqlval = SC_Utils_Ex::sfArrayIntersectKeys($arrList, $this->arrProductClassColumn);
if ($product_class_id == '') {
// 新規登録
// 必須入力では無い項目だが、空文字では問題のある特殊なカラム値の初期値設定
$sqlval = $this->lfSetProductClassDefaultData($sqlval);
$sqlval['product_id'] = $product_id;
$sqlval['product_class_id'] = $objQuery->nextVal('dtb_products_class_product_class_id');
$sqlval['create_date'] = $arrList['update_date'];
// INSERTの実行
$objQuery->insert('dtb_products_class', $sqlval);
$product_class_id = $sqlval['product_class_id'];
} else {
// UPDATEの実行
// 必須入力では無い項目だが、空文字では問題のある特殊なカラム値の初期値設定
$sqlval = $this->lfSetProductClassDefaultData($sqlval, true);
$where = 'product_class_id = ?';
$objQuery->update('dtb_products_class', $sqlval, $where, array($product_class_id));
}
}
示例4: lfRegistProductClass
/**
* 商品規格登録を行う.
*
* FIXME: 商品規格登録の実処理自体は、LC_Page_Admin_Products_Productと共通化して欲しい。
*
* @param SC_Query $objQuery SC_Queryインスタンス
* @param array $arrList 商品規格情報配列
* @param integer $product_id 商品ID
* @param integer $product_class_id 商品規格ID
* @return void
*/
function lfRegistProductClass($objQuery, $arrList, $product_id, $product_class_id)
{
$objProduct = new SC_Product_Ex();
// 商品規格登録情報を生成する。
// 商品規格テーブルのカラムに存在しているもののうち、Form投入設定されていないデータは上書きしない。
$sqlval = SC_Utils_Ex::sfArrayIntersectKeys($arrList, $this->arrProductClassColumn);
if ($product_class_id == '') {
// 新規登録
// 必須入力では無い項目だが、空文字では問題のある特殊なカラム値の初期値設定
$sqlval = $this->lfSetProductClassDefaultData($sqlval);
$sqlval['product_id'] = $product_id;
$sqlval['product_class_id'] = $objQuery->nextVal('dtb_products_class_product_class_id');
$sqlval['create_date'] = $arrList['update_date'];
// INSERTの実行
$objQuery->insert('dtb_products_class', $sqlval);
$product_class_id = $sqlval['product_class_id'];
} else {
// UPDATEの実行
// 必須入力では無い項目だが、空文字では問題のある特殊なカラム値の初期値設定
$sqlval = $this->lfSetProductClassDefaultData($sqlval, true);
$where = 'product_class_id = ?';
$objQuery->update('dtb_products_class', $sqlval, $where, array($product_class_id));
}
}
开发者ID:nanasess,项目名称:eccube-WindowsAzureBlob-plugin,代码行数:35,代码来源:LC_Page_Admin_Products_UploadCSV.php
示例5: lfRegistCategory
/**
* カテゴリ登録を行う.
*
* FIXME: 登録の実処理自体は、LC_Page_Admin_Products_Categoryと共通化して欲しい。
*
* @param SC_Query $objQuery SC_Queryインスタンス
* @param string|integer $line 処理中の行数
* @return integer カテゴリID
*/
function lfRegistCategory($objQuery, $line, &$objFormParam)
{
// 登録データ対象取得
$arrList = $objFormParam->getHashArray();
// 登録時間を生成(DBのCURRENT_TIMESTAMPだとcommitした際、すべて同一の時間になってしまう)
$arrList['update_date'] = $this->lfGetDbFormatTimeWithLine($line);
// 登録情報を生成する。
// テーブルのカラムに存在しているもののうち、Form投入設定されていないデータは上書きしない。
$sqlval = SC_Utils_Ex::sfArrayIntersectKeys($arrList, $this->arrRegistColumn);
// 必須入力では無い項目だが、空文字では問題のある特殊なカラム値の初期値設定
$sqlval = $this->lfSetCategoryDefaultData($sqlval);
if ($sqlval['category_id'] != '') {
// 同じidが存在すればupdate存在しなければinsert
$where = 'category_id = ?';
$category_exists = $objQuery->exists('dtb_category', $where, array($sqlval['category_id']));
if ($category_exists) {
// UPDATEの実行
$where = 'category_id = ?';
$objQuery->update('dtb_category', $sqlval, $where, array($sqlval['category_id']));
} else {
$sqlval['create_date'] = $arrList['update_date'];
// 新規登録
$category_id = $this->registerCategory($sqlval['parent_category_id'], $sqlval['category_name'], $_SESSION['member_id'], $sqlval['category_id']);
}
$category_id = $sqlval['category_id'];
// TODO: 削除時処理
} else {
// 新規登録
$category_id = $this->registerCategory($sqlval['parent_category_id'], $sqlval['category_name'], $_SESSION['member_id']);
}
return $category_id;
}
示例6: lfInsertDummyProductClass
/**
* 規格を設定していない商品を商品規格テーブルに登録
*
* @param array $arrList
* @return void
*/
function lfInsertDummyProductClass($arrList)
{
$objQuery =& SC_Query_Ex::getSingletonInstance();
$objDb = new SC_Helper_DB_Ex();
// 配列の添字を定義
$checkArray = array('product_class_id', 'product_id', 'product_code', 'stock', 'stock_unlimited', 'price01', 'price02', 'sale_limit', 'deliv_fee', 'point_rate', 'product_type_id', 'down_filename', 'down_realfilename');
$sqlval = SC_Utils_Ex::sfArrayIntersectKeys($arrList, $checkArray);
$sqlval = SC_Utils_Ex::arrayDefineIndexes($sqlval, $checkArray);
$sqlval['stock_unlimited'] = $sqlval['stock_unlimited'] ? UNLIMITED_FLG_UNLIMITED : UNLIMITED_FLG_LIMITED;
$sqlval['creator_id'] = strlen($_SESSION['member_id']) >= 1 ? $_SESSION['member_id'] : '0';
if (strlen($sqlval['product_class_id']) == 0) {
$sqlval['product_class_id'] = $objQuery->nextVal('dtb_products_class_product_class_id');
$sqlval['create_date'] = 'CURRENT_TIMESTAMP';
$sqlval['update_date'] = 'CURRENT_TIMESTAMP';
// INSERTの実行
$objQuery->insert('dtb_products_class', $sqlval);
} else {
$sqlval['update_date'] = 'CURRENT_TIMESTAMP';
// UPDATEの実行
$objQuery->update('dtb_products_class', $sqlval, 'product_class_id = ?', array($sqlval['product_class_id']));
}
}
示例7: lfRegistProduct
/**
* DBに商品データを登録する
*
* @param SC_UploadFile_Ex $objUpFile
* SC_UploadFileインスタンス
* @param SC_UploadFile_Ex $objDownFile
* SC_UploadFileインスタンス
* @param array $arrList
* フォーム入力パラメーター配列
* @return integer 登録商品ID
*/
public function lfRegistProduct(SC_UploadFile &$objUpFile, SC_UploadFile &$objDownFile, $arrList)
{
$product_id = parent::lfRegistProduct($objUpFile, $objDownFile, $arrList);
$objQuery = SC_Query_Ex::getSingletonInstance();
$objDb = new SC_Helper_DB_Ex();
// auto_display_
$arrList["auto_display_start_date"] = $this->sfGetTimestamp($arrList, "auto_display_start_date");
$arrList["auto_display_end_date"] = $this->sfGetTimestamp($arrList, "auto_display_end_date", true);
// spass_provide_
$arrList["spass_provide_start_date"] = $this->sfGetTimestamp($arrList, "spass_provide_start_date");
$arrList["spass_provide_end_date"] = $this->sfGetTimestamp($arrList, "spass_provide_end_date", true);
// FIXME 画像のリネーム
$objProduct = new SC_Product_Ex();
$arrProduct = $objProduct->getDetail($product_id);
$objUpFile->setDBFileList($arrProduct);
$arrTemp = $objUpFile->getDBFileList();
GC_Utils_Ex::gfPrintLog(print_r($arrProduct, true), DEBUG_LOG_REALFILE);
GC_Utils_Ex::gfPrintLog(print_r($arrTemp, true), DEBUG_LOG_REALFILE);
$arrRet = SC_Utils_Ex::sfArrayIntersectKeys($arrList, array("kisekae_provider_id", "kisekae_site_id", "kisekae_contents_id", "auto_display_status", "auto_display_start_date", "auto_display_end_date", "spass_provide_start_date", "spass_provide_end_date", "bgcolor", "fgcolor", "lkcolor", "product_code_spass", "kisekae_contents_spass_id"));
GC_Utils_Ex::gfPrintLog(print_r($arrTemp, true), DEBUG_LOG_REALFILE);
$arrTemp = array_filter($arrTemp, function ($filename) {
$filename_realpath = IMAGE_SAVE_REALDIR . $filename;
list($width, $height) = getimagesize($filename_realpath);
return is_file($filename_realpath) && $width > 0 && $height > 0;
});
GC_Utils_Ex::gfPrintLog(print_r($arrTemp, true), DEBUG_LOG_REALFILE);
foreach ($arrTemp as $key => $filename) {
GC_Utils_Ex::gfPrintLog(print_r(array($key => $filename), true), DEBUG_LOG_REALFILE);
$filename_realpath = IMAGE_SAVE_REALDIR . $filename;
list($width, $height) = getimagesize($filename_realpath);
$extension = pathinfo($filename_realpath, PATHINFO_EXTENSION);
$pattern = "p%010d_%s_%04dx%04d.%s";
$rename = sprintf($pattern, $product_id, $key, $width, $height, $extension);
$rename_realpath = IMAGE_SAVE_REALDIR . $rename;
if (copy($filename_realpath, $rename_realpath)) {
$arrRet[$key] = $rename;
}
}
GC_Utils_Ex::gfPrintLog(print_r($arrRet, true), DEBUG_LOG_REALFILE);
$arrRet = $objQuery->extractOnlyColsOf("dtb_products", $arrRet);
GC_Utils_Ex::gfPrintLog(print_r($arrRet, true), DEBUG_LOG_REALFILE);
if (count($arrRet) && $objProduct->isValidProductId($product_id, true)) {
$objQuery->update("dtb_products", $arrRet, "product_id=?", array($product_id));
}
if ($objDb->sfColumnExists("cp_dtb_product_characters", "product_id")) {
$objQuery->delete("cp_dtb_product_characters", "product_id=?", array($product_id));
$character_ids = $arrList["character_id"];
if (!is_null($character_ids) && (is_array($character_ids) || is_numeric($character_ids))) {
if (is_numeric($character_ids)) {
$character_ids = array($character_ids);
}
$character_ids = array_unique($character_ids);
foreach ($character_ids as $character_id) {
$objQuery->insert("cp_dtb_product_characters", compact("product_id", "character_id"));
}
}
}
return $product_id;
}