本文整理汇总了PHP中SC_Helper_DB_Ex::sfGetCatTree方法的典型用法代码示例。如果您正苦于以下问题:PHP SC_Helper_DB_Ex::sfGetCatTree方法的具体用法?PHP SC_Helper_DB_Ex::sfGetCatTree怎么用?PHP SC_Helper_DB_Ex::sfGetCatTree使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SC_Helper_DB_Ex
的用法示例。
在下文中一共展示了SC_Helper_DB_Ex::sfGetCatTree方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: doAction
public function doAction($arrParam)
{
$arrRequest = $this->doInitParam($arrParam);
if (!$this->isParamError()) {
$category_id = $arrRequest['BrowseNodeId'];
if ($category_id && !SC_Helper_DB_Ex::sfIsRecord('dtb_category', 'category_id', (array) $category_id, 'del_flg = 0')) {
$category_id = '0';
} else {
if (SC_Utils_Ex::isBlank($category_id)) {
$category_id = '0';
}
}
// LC_Page_Products_CategoryList::lfGetCategories() と相当類似しているので共通化したい
$arrCategory = null;
// 選択されたカテゴリ
$arrChildren = array();
// 子カテゴリ
$arrAll = SC_Helper_DB_Ex::sfGetCatTree($category_id, true);
foreach ($arrAll as $category) {
if ($category_id != 0 && $category['category_id'] == $category_id) {
$arrCategory = $category;
continue;
}
if ($category['parent_category_id'] != $category_id) {
continue;
}
$arrGrandchildrenID = SC_Utils_Ex::sfGetUnderChildrenArray($arrAll, 'parent_category_id', 'category_id', $category['category_id']);
$category['has_children'] = count($arrGrandchildrenID) > 0;
$arrChildren[] = $category;
}
if (!SC_Utils_Ex::isBlank($arrCategory)) {
$arrData = array('BrowseNodeId' => $category_id, 'Name' => $arrCategory['category_name'], 'PageURL' => HTTP_URL . 'products/list.php?category_id=' . $arr['category_id'], 'has_children' => count($arrChildren) > 0);
} else {
$arrData = array('BrowseNodeId' => $category_id, 'Name' => 'ホーム', 'PageURL' => HTTP_URL, 'has_children' => count($arrChildren) > 0);
}
if (!SC_Utils_Ex::isBlank($arrChildren)) {
$arrData['Children'] = array();
foreach ($arrChildren as $category) {
$arrData['Children']['BrowseNode'][] = array('BrowseNodeId' => $category['category_id'], 'Name' => $category['category_name'], 'PageURL' => HTTP_URL . 'products/list.php?category_id=' . $category['category_id'], 'has_children' => $category['has_children']);
}
}
$this->setResponse('BrowseNode', $arrData);
// TODO: Ancestors 親ノード
return true;
}
return false;
}
示例2: lfGetCategories
/**
* 選択されたカテゴリとその子カテゴリの情報を取得し、
* ページオブジェクトに格納する。
*
* @param string $category_id カテゴリID
* @param boolean $count_check 有効な商品がないカテゴリを除くかどうか
* @param object &$objPage ページオブジェクト
* @return void
*/
function lfGetCategories($category_id, $count_check = false, &$objPage)
{
// カテゴリの正しいIDを取得する。
$category_id = $this->lfCheckCategoryId($category_id);
if ($category_id == 0) {
SC_Utils_Ex::sfDispSiteError(CATEGORY_NOT_FOUND);
}
$arrCategory = null;
// 選択されたカテゴリ
$arrChildren = array();
// 子カテゴリ
$arrAll = SC_Helper_DB_Ex::sfGetCatTree($category_id, $count_check);
foreach ($arrAll as $category) {
// 選択されたカテゴリの場合
if ($category['category_id'] == $category_id) {
$arrCategory = $category;
continue;
}
// 関係のないカテゴリはスキップする。
if ($category['parent_category_id'] != $category_id) {
continue;
}
// 子カテゴリの場合は、孫カテゴリが存在するかどうかを調べる。
$arrGrandchildrenID = SC_Utils_Ex::sfGetUnderChildrenArray($arrAll, 'parent_category_id', 'category_id', $category['category_id']);
$category['has_children'] = count($arrGrandchildrenID) > 0;
$arrChildren[] = $category;
}
if (!isset($arrCategory)) {
SC_Utils_Ex::sfDispSiteError(CATEGORY_NOT_FOUND);
}
// 子カテゴリの商品数を合計する。
$children_product_count = 0;
foreach ($arrChildren as $category) {
$children_product_count += $category['product_count'];
}
// 選択されたカテゴリに直属の商品がある場合は、子カテゴリの先頭に追加する。
if ($arrCategory['product_count'] > $children_product_count) {
$arrCategory['product_count'] -= $children_product_count;
// 子カテゴリの商品数を除く。
$arrCategory['has_children'] = false;
// 商品一覧ページに遷移させるため。
array_unshift($arrChildren, $arrCategory);
}
return array('arrChildren' => $arrChildren, 'arrCategory' => $arrCategory);
}
示例3: lfGetCategories
/**
* 選択されたカテゴリーとその子カテゴリーの情報を取得し、
* ページオブジェクトに格納する。
*
* @param string $category_id カテゴリーID
* @param boolean $count_check 有効な商品がないカテゴリーを除くかどうか
* @param object &$objPage ページオブジェクト
* @return void
*/
function lfGetCategories($category_id, $count_check = false, &$objPage)
{
$objDb = new SC_Helper_DB_Ex();
// カテゴリーの正しいIDを取得する。
$arrCategory_id = $objDb->sfGetCategoryId('', $category_id);
$category_id = $arrCategory_id[0];
if ($category_id == 0) {
SC_Utils_Ex::sfDispSiteError(CATEGORY_NOT_FOUND, "", false, "", true);
}
$arrCategory = null;
// 選択されたカテゴリー
$arrChildren = array();
// 子カテゴリー
$arrAll = $objDb->sfGetCatTree($category_id, $count_check);
foreach ($arrAll as $category) {
// 選択されたカテゴリーの場合
if ($category['category_id'] == $category_id) {
$arrCategory = $category;
continue;
}
// 関係のないカテゴリーはスキップする。
if ($category['parent_category_id'] != $category_id) {
continue;
}
// 子カテゴリーの場合は、孫カテゴリーが存在するかどうかを調べる。
$arrGrandchildrenID = SC_Utils_Ex::sfGetUnderChildrenArray($arrAll, 'parent_category_id', 'category_id', $category['category_id']);
$category['has_children'] = count($arrGrandchildrenID) > 0;
$arrChildren[] = $category;
}
if (!isset($arrCategory)) {
SC_Utils_Ex::sfDispSiteError(CATEGORY_NOT_FOUND, "", false, "", true);
}
// 子カテゴリーの商品数を合計する。
$children_product_count = 0;
foreach ($arrChildren as $category) {
$children_product_count += $category['product_count'];
}
// 選択されたカテゴリーに直属の商品がある場合は、子カテゴリーの先頭に追加する。
if ($arrCategory['product_count'] > $children_product_count) {
$arrCategory['product_count'] -= $children_product_count;
// 子カテゴリーの商品数を除く。
$arrCategory['has_children'] = false;
// 商品一覧ページに遷移させるため。
array_unshift($arrChildren, $arrCategory);
}
// 結果を格納する。
$objPage->arrCategory = $arrCategory;
$objPage->arrChildren = $arrChildren;
}
示例4: process
//.........这里部分代码省略.........
}
break;
case 'pre_edit':
// 編集項目のカテゴリ名をDBより取得する。
$oquery = new SC_Query();
$where = "category_id = ?";
$cat_name = $oquery->get("dtb_category", "category_name", $where, array($_POST['category_id']));
$description = $oquery->get("dtb_category", "description", $where, array($_POST['category_id']));
// 入力項目にカテゴリ名を入力する。
$this->arrForm['category_name'] = $cat_name;
$this->arrForm['description'] = $description;
// POSTデータを引き継ぐ
$this->arrForm['category_id'] = $_POST['category_id'];
break;
case 'delete':
$objQuery = new SC_Query();
// 子カテゴリのチェック
$where = "parent_category_id = ? AND del_flg = 0";
$count = $objQuery->count("dtb_category", $where, array($_POST['category_id']));
if ($count != 0) {
$this->arrErr['category_name'] = "※ 子カテゴリが存在するため削除できません。<br>";
}
// 登録商品のチェック
$table = "dtb_product_categories AS T1 LEFT JOIN dtb_products AS T2 ON T1.product_id = T2.product_id";
$where = "T1.category_id = ? AND T2.del_flg = 0";
$count = $objQuery->count($table, $where, array($_POST['category_id']));
if ($count != 0) {
$this->arrErr['category_name'] = "※ カテゴリ内に商品が存在するため削除できません。<br>";
}
if (!isset($this->arrErr['category_name'])) {
// ランク付きレコードの削除(※処理負荷を考慮してレコードごと削除する。)
$objDb->sfDeleteRankRecord("dtb_category", "category_id", $_POST['category_id'], "", true);
}
break;
case 'up':
$objQuery = new SC_Query();
$objQuery->begin();
$up_id = $this->lfGetUpRankID($objQuery, "dtb_category", "parent_category_id", "category_id", $_POST['category_id']);
if ($up_id != "") {
// 上のグループのrankから減算する数
$my_count = $this->lfCountChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $_POST['category_id']);
// 自分のグループのrankに加算する数
$up_count = $this->lfCountChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $up_id);
if ($my_count > 0 && $up_count > 0) {
// 自分のグループに加算
$this->lfUpRankChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $_POST['category_id'], $up_count);
// 上のグループから減算
$this->lfDownRankChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $up_id, $my_count);
}
}
$objQuery->commit();
break;
case 'down':
$objQuery = new SC_Query();
$objQuery->begin();
$down_id = $this->lfGetDownRankID($objQuery, "dtb_category", "parent_category_id", "category_id", $_POST['category_id']);
if ($down_id != "") {
// 下のグループのrankに加算する数
$my_count = $this->lfCountChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $_POST['category_id']);
// 自分のグループのrankから減算する数
$down_count = $this->lfCountChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $down_id);
if ($my_count > 0 && $down_count > 0) {
// 自分のグループから減算
$this->lfUpRankChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $down_id, $my_count);
// 下のグループに加算
$this->lfDownRankChilds($objQuery, "dtb_category", "parent_category_id", "category_id", $_POST['category_id'], $down_count);
}
}
$objQuery->commit();
break;
case 'tree':
break;
case 'csv':
require_once CLASS_EX_PATH . "helper_extends/SC_Helper_CSV_Ex.php";
$objCSV = new SC_Helper_CSV_Ex();
// オプションの指定
$option = "ORDER BY rank DESC";
// CSV出力タイトル行の作成
$arrOutput = SC_Utils_Ex::sfSwapArray($objCSV->sfgetCsvOutput(5, " WHERE csv_id = 5 AND status = 1"));
if (count($arrOutput) <= 0) {
break;
}
$arrOutputCols = $arrOutput['col'];
$arrOutputTitle = $arrOutput['disp_name'];
$head = SC_Utils_Ex::sfGetCSVList($arrOutputTitle);
$where = "del_flg = 0";
$data = $objCSV->lfGetCategoryCSV($where, $option, $arrval, $arrOutputCols);
// CSVを送信する。
SC_Utils_Ex::sfCSVDownload($head . $data, 'category');
exit;
break;
default:
$this->arrForm['parent_category_id'] = 0;
break;
}
$this->arrList = $this->lfGetCat($this->arrForm['parent_category_id']);
$this->arrTree = $objDb->sfGetCatTree($this->arrForm['parent_category_id']);
$objView->assignobj($this);
$objView->display(MAIN_FRAME);
}
示例5: process
/**
* Page のプロセス.
*
* @return void
*/
function process()
{
$conn = new SC_DBConn();
$objView = new SC_AdminView();
$objSess = new SC_Session();
$objDb = new SC_Helper_DB_Ex();
// 認証可否の判定
SC_Utils_Ex::sfIsSuccess($objSess);
$this->tpl_pageno = isset($_POST['pageno']) ? $_POST['pageno'] : "";
// 通常時は親カテゴリを0に設定する。
$this->arrForm['parent_category_id'] = isset($_POST['parent_category_id']) ? $_POST['parent_category_id'] : 0;
if (!isset($_POST['mode'])) {
$_POST['mode'] = "";
}
switch ($_POST['mode']) {
case 'up':
$where = "category_id = " . SC_Utils_Ex::sfQuoteSmart($_POST['parent_category_id']);
$objDb->sfRankUp("dtb_product_categories", "product_id", $_POST['product_id'], $where);
break;
case 'down':
$where = "category_id = " . SC_Utils_Ex::sfQuoteSmart($_POST['parent_category_id']);
$objDb->sfRankDown("dtb_product_categories", "product_id", $_POST['product_id'], $where);
break;
case 'move':
$key = "pos-" . $_POST['product_id'];
$input_pos = mb_convert_kana($_POST[$key], "n");
if (SC_Utils_Ex::sfIsInt($input_pos)) {
$where = "category_id = " . SC_Utils_Ex::sfQuoteSmart($_POST['parent_category_id']);
$objDb->sfMoveRank("dtb_product_categories", "product_id", $_POST['product_id'], $input_pos, $where);
}
break;
case 'tree':
// カテゴリの切替は、ページ番号をクリアする。
$this->tpl_pageno = "";
break;
default:
break;
}
$this->arrTree = $objDb->sfGetCatTree($this->arrForm['parent_category_id']);
$this->arrProductsList = $this->lfGetProduct($this->arrForm['parent_category_id']);
$objView->assignobj($this);
$objView->display(MAIN_FRAME);
}