Server : Apache/2.4.58 (Ubuntu) System : Linux yumsem00.cafe24.com 5.4.0-131-generic #147-Ubuntu SMP Fri Oct 14 17:07:22 UTC 2022 x86_64 User : root ( 0) PHP Version : 8.2.14 Disable Function : NONE Directory : /var/www/html/wp-content/plugins/kboard/class/ |
Upload File : |
<?php /** * KBoard 카테고리 * @link www.cosmosfarm.com * @copyright Copyright 2021 Cosmosfarm. All rights reserved. * @license http://www.gnu.org/licenses/gpl.html */ class KBoardTreeCategory { var $tree_category = array(); var $row = ''; var $dropdown = ''; var $list_row = ''; var $depth = 0; var $parent_id = ''; public function __construct($value=''){ if($value){ if(is_int($value)){ $this->setBoardID($value); } else{ $this->setTreeCategory($value); } } } /** * 게시판 아이디값을 입력받는다. * @param int $board_id */ public function setBoardID($board_id){ $board = new KBoard($board_id); if($board->meta->tree_category){ $this->setTreeCategory($board->meta->tree_category); } } /** * 계층형 카테고리 정보를 받는다. * @param array|string $tree_category */ public function setTreeCategory($tree_category){ if(is_array($tree_category)){ $this->tree_category = $tree_category; } else{ $this->tree_category = unserialize($tree_category); } } /** * 카테고리 상하 관계를 표현하기 위한 배열을 반환한다. * @return array */ public function buildAdminTreeCategory(){ $new_category = array(); if($this->tree_category){ foreach($this->tree_category as $item){ if(!(isset($item['parent_id']) && $item['parent_id'])){ $children = $this->getAdminTreeCategoryChildren($item['id']); if($children) $item['children'] = $children; array_push($new_category, $item); } } } return $new_category; } /** * 하위 카테고리를 반환한다. * @param string $parent_id * @return array */ public function getAdminTreeCategoryChildren($parent_id){ $new_category = array(); foreach($this->tree_category as $item){ if(isset($item['parent_id']) && $parent_id == $item['parent_id']){ $children = $this->getAdminTreeCategoryChildren($item['id']); if($children) $item['children'] = $children; array_push($new_category, $item); } } return $new_category; } /** * 관리자 페이지의 계층형 카테고리를 반환한다. * @param array $tree_category * @param number $level * @return string */ public function buildAdminTreeCategorySortableRow($tree_category, $level=0){ if($tree_category){ foreach($tree_category as $key=>$value){ $this->row .= '<li id="tree_category_'.$value['id'].'" style="display: list-item;">'. '<div id="tree-category-'.$value['id'].'" class="menu-item-bar"><div data-id="'.$value['id'].'" class="menu-item-handle ui-sortable-handle" onclick="kboard_tree_category_edit_toggle(\''.$value['id'].'\', \''.$value['category_name'].'\', \''.$value['parent_id'].'\')">'. '<span class="item-title">'.$value['category_name'].'</span>'. '<input type="hidden" id="tree-category-id-'.$value['id'].'" name="tree_category['.$value['id'].'][id]" value="'.$value['id'].'">'. '<input type="hidden" id="tree-category-name-'.$value['id'].'" name="tree_category['.$value['id'].'][category_name]" value="'.$value['category_name'].'">'. '<input type="hidden" id="tree-category-parent-'.$value['id'].'" class="kboard-tree-category-parents" name="tree_category['.$value['id'].'][parent_id]" value="'.$value['parent_id'].'">'. '</div></div>'; if(isset($value['children']) && $value['children']){ $this->row .= '<ul>'; $this->buildAdminTreeCategorySortableRow($value['children'], $level+1); $this->row .= '</ul>'; } $this->row .= '</li>'; } } return $this->row; } /** * 검색 옵션의 데이터를 반환한다. * @param array $search_option */ public function getSelectedList(){ $kboard_search_option = kboard_search_option(); $search_option = array(); if(isset($kboard_search_option['tree_category_1']['value']) && $kboard_search_option['tree_category_1']['value']){ for($i=1; $i<=$this->getCount(); $i++){ if(!(isset($kboard_search_option['tree_category_'.$i]['value']) && $kboard_search_option['tree_category_'.$i]['value'])) break; $search_option[] = $kboard_search_option['tree_category_'.$i]['value']; } } return $search_option; } /** * 검색 옵션의 하위 카테고리 데이터를 반환한다. * @param string $category_name * @return array $tree_category */ public function getCategoryItemList($category_name=''){ $tree_category = array(); if(!$category_name){ foreach($this->tree_category as $item){ if(!(isset($item['parent_id']) && $item['parent_id'])){ $tree_category[] = $item; } } } else{ foreach($this->tree_category as $item){ if($this->parent_id == $item['parent_id'] && $category_name == $item['category_name']){ $this->parent_id = $item['id']; } } if($this->parent_id){ foreach($this->tree_category as $item){ if($this->parent_id == $item['parent_id']){ $tree_category[] = $item; } } } } $this->depth++; return $tree_category; } /** * 등록된 계층형 카테고리의 전체 개수를 반환한다. * @return number */ public function getCount(){ return count($this->tree_category); } /** * 선택된 카테고리를 반환한다. * @return number */ public function getCategoryNameWithDepth($depth){ $kboard_search_option = kboard_search_option(); $current_category = isset($kboard_search_option['tree_category_'.$depth]['value'])?$kboard_search_option['tree_category_'.$depth]['value']:''; return $current_category; } } ?>