Ejemplo n.º 1
0
 /**
  * カテゴリ変更時の移動処理を行う.
  *
  * ※この関数って、どこからも呼ばれていないのでは??
  *
  * @param  Query $objQuery  Query インスタンス
  * @param  string   $table     テーブル名
  * @param  string   $id_name   ID名
  * @param  string   $cat_name  カテゴリ名
  * @param  integer  $old_catid 旧カテゴリID
  * @param  integer  $new_catid 新カテゴリID
  * @param  integer  $id        ID
  * @return void
  */
 public function moveCatRank($objQuery, $table, $id_name, $cat_name, $old_catid, $new_catid, $id)
 {
     if ($old_catid == $new_catid) {
         return;
     }
     // 旧カテゴリでのランク削除処理
     // 移動レコードのランクを取得する。
     $sqlval = array();
     $where = "{$id_name} = ?";
     $rank = $objQuery->get('rank', $table, $where, array($id));
     // 削除レコードのランクより上のレコードを一つ下にずらす。
     $where = "rank > ? AND {$cat_name} = ?";
     $arrWhereVal = array($rank, $old_catid);
     $arrRawSql = array('rank' => '(rank - 1)');
     $objQuery->update($table, $sqlval, $where, $arrWhereVal, $arrRawSql);
     // 新カテゴリでの登録処理
     // 新カテゴリの最大ランクを取得する。
     $max_rank = $objQuery->max('rank', $table, "{$cat_name} = ?", array($new_catid)) + 1;
     $sqlval = array('rank' => $max_rank);
     $where = "{$id_name} = ?";
     $arrWhereVal = array($id);
     $objQuery->update($table, $sqlval, $where, $arrWhereVal);
 }