<?php if (!defined('__GOOSE__')) { exit; } // check user if (!$this->isAdmin) { return array('state' => 'error', 'action' => 'back', 'message' => '권한이 없습니다.'); } // remove article data if ($post['delete_article']) { $file = Module::load('file'); // remove attach files $articles = Spawn::items(array('table' => Spawn::getTableName('article'), 'field' => 'srl', 'where' => 'nest_srl=' . (int) $post['nest_srl'])); $file_srls = array(); foreach ($articles as $k => $v) { $data = $file->getItems(array('field' => 'srl', 'where' => 'article_srl=' . (int) $v['srl'])); if ($data['state'] == 'success') { foreach ($data['data'] as $k2 => $v2) { if ($v2['srl']) { $file_srls[] = (int) $v2['srl']; } } } } $file->actRemoveFile($file_srls, 'file'); $result = Spawn::delete(array('table' => Spawn::getTableName('article'), 'where' => 'nest_srl=' . (int) $post['nest_srl'], 'debug' => false)); } // remove category data if ($post['delete_category']) { $result = Spawn::delete(array('table' => Spawn::getTableName('category'), 'where' => 'nest_srl=' . (int) $post['nest_srl'], 'debug' => false));
/** * get data index * * @param array $getParams * @return array|null */ public function getItems($getParams = null) { if ($this->name != 'category') { return array('state' => 'error', 'message' => '잘못된 객체로 접근했습니다.'); } // set original parameter $originalParam = array('table' => Spawn::getTableName($this->name), 'order' => 'srl', 'sort' => 'desc'); // get data $data = Spawn::items(Util::extendArray($originalParam, $getParams)); if (!count($data)) { return array('state' => 'error', 'message' => '데이터가 없습니다.'); } // return data return array('state' => 'success', 'data' => $data); }
/** * get data items * * @param array $getParams * @return array|null */ public function getItems($getParams = null) { if ($this->name != 'nest') { return array('state' => 'error', 'message' => '잘못된 객체로 접근했습니다.'); } // set original parameter $originalParam = array('table' => Spawn::getTableName($this->name), 'order' => 'srl', 'sort' => 'desc'); // get data $data = Spawn::items(Util::extendArray($originalParam, $getParams)); if (!count($data)) { return array('state' => 'error', 'message' => '데이터가 없습니다.'); } // convert json data foreach ($data as $k => $v) { if ($data[$k]['json']) { $data[$k]['json'] = Util::jsonToArray($v['json'], null, true); } } // return data return array('state' => 'success', 'data' => $data); }
/** * get article json * article의 json필드의 내용을 가져온다. * * @param int $srl * @return array */ function getArticleJSON($srl) { $data = Spawn::items(array('table' => Spawn::getTableName('article'), 'field' => 'json', 'where' => 'srl=' . (int) $srl)); return count($data) ? Util::jsonToArray($data[0]['json'], null, true) : null; }
/** * Index * * @param array $options : { * * } * @return array */ public function index($options) { $result = ['nest' => null, 'category' => null, 'articles' => null, 'pageNavigation' => null, 'nextpage' => null]; $print = explode(',', $options['print_data']); // get nests if ($options['nest_id']) { $result['nest'] = Spawn::item(['table' => Spawn::getTableName('nest'), 'where' => 'id=\'' . $options['nest_id'] . '\'', 'debug' => false]); $result['nest'] = $result['nest'] ? $result['nest'] : null; if (isset($result['nest']['srl'])) { $result['nest']['json'] = Util::jsonToArray($result['nest']['json'], false, true); } else { return ['state' => 'error', 'message' => 'not found nest data']; } // get categories list if ($result['nest']['json']['useCategory'] && $this->searchKeyInArray($print, 'category')) { $result['category'] = Spawn::items(['table' => Spawn::getTableName('category'), 'where' => 'nest_srl=' . (int) $result['nest']['srl'], 'field' => 'srl,name', 'order' => 'turn', 'sort' => 'asc']); $cnt_all = Spawn::count(['table' => Spawn::getTableName('article'), 'where' => 'app_srl=' . $options['app_srl'] . ' and nest_srl=' . (int) $result['nest']['srl']]); if (count($result['category'])) { $check_active = false; $index = [['srl' => 0, 'name' => 'All', 'count' => $cnt_all, 'active' => false]]; foreach ($result['category'] as $k => $v) { $cnt = $cnt_all > 0 ? Spawn::count(['table' => Spawn::getTableName('article'), 'where' => 'category_srl=' . (int) $v['srl']]) : 0; if ($options['category_srl'] == (int) $v['srl']) { $check_active = true; } $index[] = ['srl' => (int) $v['srl'], 'name' => $v['name'], 'count' => $cnt, 'active' => $options['category_srl'] == (int) $v['srl']]; } if (!$check_active) { $index[0]['active'] = true; } $result['category'] = $index; } } } // get articles // init paginate require_once __GOOSE_PWD__ . 'core/classes/Paginate.class.php'; $options['page'] = $options['page'] > 1 ? $options['page'] : 1; $count = $options['count']; $scale = $options['pageScale']; $params = ['keyword' => $_GET['keyword'] ? $_GET['keyword'] : '']; $nest_srl = $options['nest_id'] ? isset($result['nest']['srl']) ? $result['nest']['srl'] : -1 : null; $where = 'app_srl=' . $options['app_srl']; $where .= $nest_srl ? ' and nest_srl=' . $nest_srl : ''; $where .= $options['category_srl'] ? ' and category_srl=' . (int) $options['category_srl'] : ''; $where .= $_GET['keyword'] ? ' and (title LIKE "%' . $_GET['keyword'] . '%" or content LIKE "%' . $_GET['keyword'] . '%")' : ''; // get total article $total = Spawn::count(['table' => Spawn::getTableName('article'), 'where' => $where]); // set paginate instance $paginate = new Paginate($total, $_GET['page'], $params, $count, $scale); // set limit $limit = $paginate->offset . ',' . $paginate->size; // get articles $result['articles'] = Spawn::items(['table' => Spawn::getTableName('article'), 'field' => 'srl,nest_srl,category_srl,hit,json,regdate,title', 'where' => $where, 'limit' => $limit, 'sort' => 'desc', 'order' => 'srl']); // adjustment articles if ($this->searchKeyInArray($print, 'article')) { foreach ($result['articles'] as $k => $v) { if (isset($v['regdate'])) { $result['articles'][$k]['regdate'] = Util::convertDate($v['regdate']); } if (isset($v['modate'])) { $result['articles'][$k]['modate'] = Util::convertDate($v['modate']); } if (isset($v['category_srl'])) { $category = Spawn::item(['table' => Spawn::getTableName('category'), 'where' => 'srl=' . (int) $v['category_srl']]); $result['articles'][$k]['category_name'] = isset($category['name']) ? $category['name'] : ''; } $result['articles'][$k]['json'] = Util::jsonToArray($v['json'], false, true); } } // set paginate if ($this->searchKeyInArray($print, 'nav_paginate')) { $result['pageNavigation'] = $paginate->createNavigationToObject(); } // set nextpage if ($this->searchKeyInArray($print, 'nav_more')) { $nextPaginate = new Paginate($total, $options['page'] + 1, $params, $count, $scale); $limit = $nextPaginate->offset . ',' . $nextPaginate->size; $nextArticles = Spawn::items(['table' => Spawn::getTableName('article'), 'field' => 'srl', 'where' => $where, 'limit' => $limit, 'sort' => 'desc', 'order' => 'srl']); $result['nextpage'] = count($nextArticles) ? $options['page'] + 1 : null; } $result['nest'] = $this->searchKeyInArray($print, 'nest') ? $result['nest'] : null; $result['articles'] = $this->searchKeyInArray($print, 'article') ? $result['articles'] : null; $result['state'] = 'success'; return $result; }
<?php if (!defined('__GOOSE__')) { exit; } $files = null; switch ($this->param['action']) { case 'create': $files = Spawn::items(array('table' => Spawn::getTableName('file_tmp'), 'order' => 'srl', 'sort' => 'asc')); $state = 'complete'; $type = 'session'; break; case 'modify': $files = Spawn::items(array('table' => Spawn::getTableName('file'), 'where' => 'article_srl=' . (int) $article_srl, 'order' => 'srl', 'sort' => 'asc')); $state = 'uploaded'; $type = 'edit'; break; } // adjust data $pushData = array(); if (count($files)) { foreach ($files as $k => $v) { $item = array('srl' => $v['srl'], 'location' => $v['loc'], 'filename' => $v['name'], 'filetype' => $v['type'], 'filesize' => $v['size'], 'state' => $state, 'type' => $type); $pushData[] = $item; } } return json_encode($pushData);
/** * api - get data * 데이터를 얻어오는 역할을 하는 메서드 * * @param string $method * @param array $get parameter * @return array */ private function api_get($method, $get) { if (!$this->auth($get['api_key'])) { return array('state' => 'error', 'message' => '올바른 api_key값이 아닙니다.'); } // check mod value if (!$get['mod']) { return array('state' => 'error', 'message' => 'mod값이 없습니다.'); } // set table $get['table'] = $get['table'] ? $get['table'] : $get['mod']; // get module $activeMod = Module::load($get['mod']); // get allow field if (!count($activeMod->set['allowApi']['read'])) { return array('state' => 'error', 'message' => '해당모듈에 허용하는 필드에 접근할 수 없습니다.'); } // set parameters $params = $this->parameterToArray($get, $activeMod->set['allowApi']['read'][$get['table']]); switch ($method) { // get count case 'count': $result = Spawn::count(array('table' => Spawn::getTableName($params['table']), 'where' => $params['where'] ? $params['where'] : null)); return array('state' => 'success', 'data' => $result); break; // get single item // get single item case 'single': $result = Spawn::item(array('table' => Spawn::getTableName($params['table']), 'field' => $params['field'], 'where' => $params['where'], 'debug' => false)); if (!$result) { $result = array(); } return array('state' => 'success', 'data' => $result); break; // get multiple items // get multiple items case 'multi': $total = Spawn::count(array('table' => Spawn::getTableName($params['table']), 'where' => $params['where'])); if ($total > 0) { require_once __GOOSE_PWD__ . 'core/classes/Paginate.class.php'; $params['page'] = $params['page'] > 1 ? $params['page'] : 1; $params['limit'] = $params['limit'] ? $params['limit'] : $this->set['defaultPagePerCount']; $params['sort'] = $params['sort'] ? $params['sort'] : $params['order'] ? "desc" : ""; $paginate = new Paginate($total, $params['page'], array(), $params['limit'], 1); $result = Spawn::items(array('table' => Spawn::getTableName($params['table']), 'field' => $params['field'], 'where' => $params['where'], 'order' => $params['order'], 'sort' => $params['sort'], 'limit' => array($paginate->offset, $paginate->size), 'debug' => false)); } else { $result = array(); } return array('state' => 'success', 'data' => $result); break; // no method // no method default: return array('state' => 'error', 'message' => 'method값이 없습니다.'); break; } }