142 lines
3.5 KiB
PHP
142 lines
3.5 KiB
PHP
<?php
|
|
defined('BASEPATH') OR exit('No direct script access allowed');
|
|
|
|
/**
|
|
* Board Category model class
|
|
*
|
|
* Copyright (c) CIBoard <www.ciboard.co.kr>
|
|
*
|
|
* @author CIBoard (develop@ciboard.co.kr)
|
|
*/
|
|
|
|
class Board_category_model extends CB_Model
|
|
{
|
|
|
|
/**
|
|
* 테이블명
|
|
*/
|
|
public $_table = 'board_category';
|
|
|
|
/**
|
|
* 사용되는 테이블의 프라이머리키
|
|
*/
|
|
public $primary_key = 'bca_id'; // 사용되는 테이블의 프라이머리키
|
|
|
|
function __construct()
|
|
{
|
|
parent::__construct();
|
|
}
|
|
|
|
|
|
public function get_all_category($brd_id = 0)
|
|
{
|
|
$brd_id = (int) $brd_id;
|
|
if (empty($brd_id)) {
|
|
return;
|
|
}
|
|
|
|
$cachename = 'category-all-' . $brd_id;
|
|
if ( ! $result = $this->cache->get($cachename)) {
|
|
$where = array('brd_id' => $brd_id);
|
|
$return = $this->get($primary_value = '', $select = '', $where, $limit = '', $offset = 0, $findex = 'bca_order', $forder = 'asc');
|
|
if ($return) {
|
|
foreach ($return as $key => $value) {
|
|
$result[$value['bca_parent']][] = $value;
|
|
}
|
|
$this->cache->save($cachename, $result);
|
|
}
|
|
}
|
|
return $result;
|
|
}
|
|
|
|
|
|
public function get_category_info($brd_id = 0, $bca_key = '')
|
|
{
|
|
$brd_id = (int) $brd_id;
|
|
if (empty($brd_id)) {
|
|
return;
|
|
}
|
|
if (empty($bca_key)) {
|
|
return;
|
|
}
|
|
|
|
$cachename = 'category-' . $brd_id;
|
|
if ( ! $result = $this->cache->get($cachename)) {
|
|
$where = array('brd_id' => $brd_id);
|
|
$return = $this->get($primary_value = '', $select = '', $where, $limit = '', $offset = 0, $findex = 'bca_order', $forder = 'asc');
|
|
if ($return) {
|
|
foreach ($return as $key => $value) {
|
|
$result[$value['bca_key']] = $value;
|
|
}
|
|
$this->cache->save($cachename, $result);
|
|
}
|
|
}
|
|
return isset($result[$bca_key]) ? $result[$bca_key] : '';
|
|
}
|
|
|
|
|
|
public function next_key($parent, $brd_id)
|
|
{
|
|
if ((string) $parent === '0') {
|
|
$this->db->select('bca_key');
|
|
$this->db->where(array('brd_id' => $brd_id));
|
|
$res = $this->db->get($this->_table);
|
|
$result = $res->result_array();
|
|
$max = 0;
|
|
foreach ($result as $key => $value) {
|
|
$float = floatval($value['bca_key']);
|
|
if ($float > $max) {
|
|
$max = $float;
|
|
}
|
|
}
|
|
return intval($max + 1);
|
|
}
|
|
if (strpos($parent, '.') === false) {
|
|
$this->db->select('bca_key');
|
|
$this->db->where(array('brd_id' => $brd_id));
|
|
$this->db->like('bca_key', $parent . '.', 'after');
|
|
$res = $this->db->get($this->_table);
|
|
$result = $res->result_array();
|
|
$max = 0;
|
|
foreach ($result as $key => $value) {
|
|
$float = $value['bca_key'];
|
|
if ($float > $max) {
|
|
$max = $float;
|
|
}
|
|
}
|
|
|
|
if ($max) {
|
|
$key_explode = explode('.', $max);
|
|
$digit = substr($key_explode[1], 0, 3) + 1;
|
|
$ret = sprintf("%03d", $digit);
|
|
return $key_explode[0] . '.' . $ret;
|
|
} else {
|
|
return $parent . '.001';
|
|
}
|
|
} else {
|
|
$this->db->select('bca_key');
|
|
$this->db->where(array('brd_id' => $brd_id));
|
|
$this->db->like('bca_key', $parent, 'after');
|
|
$res = $this->db->get($this->_table);
|
|
$result = $res->result_array();
|
|
$max = 0;
|
|
foreach ($result as $key => $value) {
|
|
$float = $value['bca_key'];
|
|
if ($float > $max) {
|
|
$max = $float;
|
|
}
|
|
}
|
|
if ((string) $max === (string) $parent) {
|
|
return $parent . '001';
|
|
} else {
|
|
$key_explode = explode('.', $max);
|
|
$parent_explode = explode('.', $parent);
|
|
$parentlen = strlen($parent_explode[1]);
|
|
$digit = substr($key_explode[1], 0, $parentlen + 3) + 1;
|
|
$res = sprintf("%0" . ($parentlen + 3) . "d", $digit);
|
|
return $key_explode[0] . '.' . $res;
|
|
}
|
|
}
|
|
}
|
|
}
|