public function revert(array $migrations) { $migrations = $this->sort($migrations, SORT_DESC); $reverteds = 0; try { foreach ($migrations as $migration) { $this->query->begin(); if (!$this->storage->isAppliedVersion($migration->version)) { $this->logger->log(sprintf('Revert migration skipped, Already reverted.: {system:"%s", version:"%s"}', $this->storage->system, $migration->version)); continue; } $migration->down(); $migration->applied = false; $this->storage->markReverted($migration->version); $this->query->commit(); $this->logger->log(sprintf('Revert migration successful: {system:"%s", version:"%s"}', $this->storage->system, $migration->version)); $reverteds++; } $this->query->commit(); } catch (Exception $e) { if ($this->query->inTransaction()) { $this->query->rollback(); } $this->logger->log(sprintf('Revert migration failed: {system:"%s", version:"%s"}', $this->storage->system, $migration->version)); throw $e; } return $reverteds; }
function lfDeleteFavoriteProduct($customer_id, $product_id) { $objQuery = new SC_Query_Ex(); $count = $objQuery->count("dtb_customer_favorite_products", "customer_id = ? AND product_id = ?", array($customer_id, $product_id)); if ($count > 0) { $objQuery->begin(); $objQuery->delete('dtb_customer_favorite_products', "customer_id = ? AND product_id = ?", array($customer_id, $product_id)); $objQuery->commit(); } }
/** * 受注テーブルの論理削除 */ function lfDelete($arrOrderId) { $objQuery = new SC_Query_Ex(); if (!isset($arrOrderId) || !is_array($arrOrderId)) { return false; } $arrUpdate = array('del_flg' => 1, 'update_date' => 'CURRENT_TIMESTAMP'); $objQuery->begin(); foreach ($arrOrderId as $orderId) { $objQuery->update('dtb_order', $arrUpdate, 'order_id = ?', array($orderId)); } $objQuery->commit(); $this->tpl_onload = "window.alert('選択項目を削除しました。');"; return true; }
/** * Page のアクション. * * @return void */ function action() { $objDb = new SC_Helper_DB_Ex(); $objFormParam = new SC_FormParam_Ex(); // 入力パラメーター初期化 $this->initParam($objFormParam); $objFormParam->setParam($_POST); $objFormParam->convParam(); switch ($this->getMode()) { // カテゴリー登録/編集実行 case 'edit': $category_id = $objFormParam->getValue('category_id'); if ($category_id == '') { $this->doRegister($objFormParam); } else { $this->doEdit($objFormParam); } break; // 入力ボックスへ編集対象のカテゴリ名をセット // 入力ボックスへ編集対象のカテゴリ名をセット case 'pre_edit': $this->doPreEdit($objFormParam); break; // カテゴリ削除 // カテゴリ削除 case 'delete': $this->doDelete($objFormParam, $objDb); break; // 表示順を上へ // 表示順を上へ case 'up': $this->doUp($objFormParam); break; // 表示順を下へ // 表示順を下へ case 'down': $this->doDown($objFormParam); break; // XXX 使われていないコード? // XXX 使われていないコード? case 'moveByDnD': // DnDしたカテゴリと移動先のセットを分解する $keys = explode("-", $_POST['keySet']); if ($keys[0] && $keys[1]) { $objQuery = new SC_Query_Ex(); $objQuery->begin(); // 移動したデータのrank、level、parent_category_idを取得 $rank = $objQuery->get('rank', "dtb_category", "category_id = ?", array($keys[0])); $level = $objQuery->get('level', "dtb_category", "category_id = ?", array($keys[0])); $parent = $objQuery->get("parent_category_id", "dtb_category", "category_id = ?", array($keys[0])); // 同一level内のrank配列を作成 $objQuery->setOption("ORDER BY rank DESC"); if ($level == 1) { // 第1階層の時 $arrRet = $objQuery->select('rank', "dtb_category", "level = ?", array($level)); } else { // 第2階層以下の時 $arrRet = $objQuery->select('rank', "dtb_category", "level = ? AND parent_category_id = ?", array($level, $parent)); } for ($i = 0; $i < sizeof($arrRet); $i++) { $rankAry[$i + 1] = $arrRet[$i]['rank']; } // 移動したデータのグループ内データ数 $my_count = $this->lfCountChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $keys[0]); if ($rankAry[$keys[1]] > $rank) { // データが今の位置より上がった時 $up_count = $rankAry[$keys[1]] - $rank; $decAry = $objQuery->select("category_id", "dtb_category", "level = ? AND rank > ? AND rank <= ?", array($level, $rank, $rankAry[$keys[1]])); foreach ($decAry as $value) { // 上のグループから減算 $this->lfDownRankChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $value["category_id"], $my_count); } // 自分のグループに加算 $this->lfUpRankChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $keys[0], $up_count); } else { if ($rankAry[$keys[1]] < $rank) { // データが今の位置より下がった時 $down_count = 0; $incAry = $objQuery->select("category_id", "dtb_category", "level = ? AND rank < ? AND rank >= ?", array($level, $rank, $rankAry[$keys[1]])); foreach ($incAry as $value) { // 下のグループに加算 $this->lfUpRankChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $value["category_id"], $my_count); // 合計減算値 $down_count += $this->lfCountChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $value["category_id"]); } // 自分のグループから減算 $this->lfDownRankChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $keys[0], $down_count); } } $objQuery->commit(); } break; // カテゴリツリークリック時 // カテゴリツリークリック時 case 'tree': break; // CSVダウンロード // CSVダウンロード case 'csv': // CSVを送信する $objCSV = new SC_Helper_CSV_Ex(); $objCSV->sfDownloadCsv("5", "", array(), "", true); exit; break; default: break; } $parent_category_id = $objFormParam->getValue('parent_category_id'); // 空の場合は親カテゴリを0にする if (empty($parent_category_id)) { $parent_category_id = 0; } // 親カテゴリIDの保持 $this->arrForm['parent_category_id'] = $parent_category_id; // カテゴリ一覧を取得 $this->arrList = $this->findCategoiesByParentCategoryId($parent_category_id); // カテゴリツリーを取得 $this->arrTree = $objDb->sfGetCatTree($parent_category_id); // ぱんくずの生成 $arrBread = array(); $objDb->findTree($this->arrTree, $parent_category_id, $arrBread); $this->tpl_bread_crumbs = SC_Utils_Ex::jsonEncode($arrBread); }