public function process() { $this->layout = 'admin'; $context = \CADB\Model\Context::instance(); if (!($rdb = $context->getProperty('service.redis'))) { \CADB\Lib\Error("자동완성 기능이 활성화 되어 있지 않습니다."); } if (!$this->themes) { $this->themes = $context->getProperty('service.themes'); } $nid = \CADB\Guide::getCurrent(); $cids = \CADB\Guide::getTaxonomy(); $guide_taxonomy = \CADB\Taxonomy::getTaxonomy($cids); $fields = \CADB\Fields\DBM::searchField('autocomplete', 1); $field_cids = array(); $this->fields = array(); if (is_array($fields)) { foreach ($fields as $f) { switch ($f['type']) { case 'taxonomy': $field_cids[] = $f['cid']; break; case 'char': case 'text': $this->fields[] = $f; break; } } } if (count($field_cids)) { $field_taxonomy = \CADB\Taxonomy::getTaxonomy($field_cids); $this->taxonomy = array_merge($guide_taxonomy, $field_taxonomy); } else { $this->taxonomy = $guide_taxonomy; } }
public function process() { $this->output = 'json'; $context = \CADB\Model\Context::instance(); if (!($rdb = $context->getProperty('service.redis'))) { \CADB\RespondJson::ResultPage(array(-1, '자동완성 기능이 활성화 되어 있지 않습니다.')); } if (!$this->themes) { $this->themes = $context->getProperty('service.themes'); } $nid = \CADB\Guide::getCurrent(); $cids = \CADB\Guide::getTaxonomy(); $guide_taxonomy = \CADB\Taxonomy::getTaxonomy($cids); $fields = \CADB\Fields\DBM::searchField('autocomplete', 1); $field_cids = array(); $this->fields = array(); if (is_array($fields)) { foreach ($fields as $fid => $f) { switch ($f['type']) { case 'taxonomy': $field_cids[] = $f['cid']; break; case 'char': $this->fields[$f['table']][$fid] = $f; break; } } } if (count($field_cids)) { $field_taxonomy = \CADB\Taxonomy::getTaxonomy($field_cids); $this->taxonomy = array_merge($guide_taxonomy, $field_taxonomy); } else { $this->taxonomy = $guide_taxonomy; } if (is_array($this->taxonomy) && @count($this->taxonomy)) { $txcids = array(); foreach ($this->taxonomy as $cid => $tx) { $txcids[] = $cid; } $this->taxonomy_terms = \CADB\Taxonomy::getTaxonomyTerms($txcids); foreach ($this->taxonomy_terms as $cid => $taxo_terms) { foreach ($taxo_terms as $tid => $terms) { $this->buildAutocomplete($terms['name'], $terms['name'], 20); } } } \CADB\Organize::setMode('admin'); $total_cnt = \CADB\Organize::totalCnt('', null); $orgs = \CADB\Organize::getList('', -1, 0, null); for ($i = 0; $i < $total_cnt; $i++) { $row = $orgs[$i]; if ($row['nojo']) { $nojo = trim($row['nojo']); $this->buildAutocomplete($nojo, $nojo, 15); $this->spaceBuildAutocomplete($nojo, $nojo, 15); if (preg_match("/^전국/i", $nojo)) { $nojo2 = preg_replace("/^전국/i", "", trim($nojo)); $this->buildAutocomplete($nojo2, $nojo, 15); $this->spaceBuildAutocomplete($nojo2, $nojo, 15); } } for ($s = 1; $s <= 4; $s++) { $score = 15 - $s * 3; if ($row['sub' . $s]) { $name = trim($row['sub' . $s]); $this->buildAutocomplete($name, $name, $score); $this->spaceBuildAutocomplete($name, $name, $score); } } if (is_array($this->fields['organize'])) { foreach ($this->fields['organize'] as $fid => $f) { if ($row['f' . $fid]) { $v = explode(",", $row['f' . $fid]); for ($k = 0; $k < @count($v); $k++) { $name = trim($v[$k]); $this->buildAutocomplete($name, $name, 1); $this->spaceBuildAutocomplete($name, $name, 1); } } } } } if (is_array($this->fields)) { foreach ($this->fields as $table => $fieldlist) { if ($table == 'organize') { continue; } } } $this->remakeRedis(); }
private function validate($mode) { if (!$this->params['table']) { \CADB\RespondJson::ResultPage(array(-1, '테이블을 지정하세요')); } if ($mode != 'add') { if (!$this->params['fid']) { \CADB\RespondJson::ResultPage(array(-2, '필드번호를 지정하세요')); } $this->field = \CADB\Fields\DBM::getField($this->params['fid']); if (!$this->field) { \CADB\RespondJson::ResultPage(array(-2, '존재하지 않는 필드입니다')); } } if ($mode != 'delete') { if (!$this->params['subject']) { \CADB\RespondJson::ResultPage(array(-3, '필드제목을 지정하세요')); } $this->params['subject'] = trim($this->params['subject']); $fields = \CADB\Fields\DBM::searchField('subject', $this->params['subject']); if ($mode == 'add' && @count($fields) > 0) { \CADB\RespondJson::ResultPage(array(-3, '다른 필드에서 사용중인 이름입니다.')); } else { if ($mode == 'modify') { if (is_array($fields)) { foreach ($fields as $_fid => $field) { if ($_fid != $this->params['fid']) { \CADB\RespondJson::ResultPage(array(-3, '다른 필드에서 사용중인 이름입니다.')); } } } } } if (empty($this->params['iscolumn'])) { $this->params['iscolumn'] = 0; } if ($mode == 'modify') { if ($this->params['iscolumn'] != $this->field['iscolumn']) { \CADB\RespondJson::ResultPage(array(-5, 'field column 여부는 변경할 수 없습니다.' . $this->params['iscolumn'] . " " . $this->field['iscolumn'])); } } if (!$this->params['type']) { \CADB\RespondJson::ResultPage(array(-5, '입력방식을 지정하세요')); } if ($mode == 'modify') { if ($this->params['type'] != $this->field['type']) { \CADB\RespondJson::ResultPage(array(-5, '입력방식은 변경할 수 없습니다')); } } if (!in_array($this->params['type'], array('char', 'text', 'taxonomy', 'int', 'date'))) { \CADB\RespondJson::ResultPage(array(-5, '허용되지 않는 입력방식입니다.')); } if ($this->params['type'] == 'taxonomy') { if (!$this->params['cid']) { \CADB\RespondJson::ResultPage(array(-8, '분류를 선택하세요.')); } if ($mode == 'modify') { if ($this->params['cid'] != $this->field['cid']) { \CADB\RespondJson::ResultPage(array(-8, '분류값을 변경할 수 없습니다.')); } } } if (!$this->params['iscolumn'] & $this->params['indextype'] != 'none') { \CADB\RespondJson::ResultPage(array(-11, '칼럼이 아니면 검색키로 사용할 수 없습니다.')); } } }