/** * get module * * @param string $moduleName * @param array $params 라우트 정보를 가지고 있다. * @param boolean $install 인스톨용으로 사용되는 모듈인지에 대한 여부 * @return object */ public static function load($moduleName, $params = null, $install = false) { global $goose; $existModule = self::existModule($moduleName); if ($existModule['state'] == 'error') { return $existModule; } else { $pwd = $existModule['pwd']; $path = $existModule['path']; } // set setting data $tmp_settingOriginal = Util::jsonToArray(Util::openFile($pwd . 'setting.json')); $tmp_settingUser = Util::jsonToArray(Util::openFile($pwd . 'setting.user.json')); if ($tmp_settingOriginal && $tmp_settingUser) { $settings = $tmp_settingUser ? Util::extendArray($tmp_settingOriginal, $tmp_settingUser) : $tmp_settingOriginal; } else { $settings = $tmp_settingUser ? $tmp_settingUser : null; $settings = $tmp_settingOriginal ? $tmp_settingOriginal : $settings; } if (!$settings || !is_array($settings)) { return new Object(array('state' => 'error', 'message' => '[' . $moduleName . '] setting.json파일이 없습니다.')); } // set module class path $pwd_class = Util::checkUserFile($pwd . $moduleName . '.class.php'); if ($pwd_class) { require_once $pwd_class; // check install if ($settings['install'] && !in_array($moduleName, $goose->modules) && !$install) { return new Object(array('state' => 'error', 'message' => '[' . $moduleName . '] 인스톨이 필요한 모듈입니다.')); } // check permission if ($settings['permission'] && $settings['permission'] > $_SESSION['goose_level'] && !$goose->isAdmin) { return new Object(array('state' => 'error', 'message' => '[' . $moduleName . '] 접근 권한이 없습니다.')); } // set module class $settings['skin'] = $settings['skin'] ? $settings['skin'] : 'default'; $tmpModule = new $moduleName(array('name' => $settings['name'], 'path' => $path, 'set' => $settings, 'goose' => $goose, 'isAdmin' => $settings['adminPermission'] <= $_SESSION['goose_level'] || $goose->isAdmin ? true : false, 'param' => $params ? $params : array())); // return module return $tmpModule; } else { return new Object(array('state' => 'error', 'message' => '[' . $moduleName . '] 정상적인 모듈이 아닙니다.')); } }
/** * get data item * * @param array $getParam * @return array|null */ public function getItem($getParam = array()) { if ($this->name != 'category') { return array('state' => 'error', 'message' => '잘못된 객체로 접근했습니다.'); } // set original parameter $originalParam = array('table' => Spawn::getTableName($this->name)); // get data $data = Spawn::item(Util::extendArray($originalParam, $getParam)); // check data if (!$data) { return array('state' => 'error', 'message' => '데이터가 없습니다.'); } // return data return array('state' => 'success', 'data' => $data); }
/** * get data item * * @param array $getParam * @return array|null */ public function getItem($getParam = array()) { if ($this->name != 'nest') { return array('state' => 'error', 'message' => '잘못된 객체로 접근했습니다.'); } // set original parameter $originalParam = array('table' => Spawn::getTableName($this->name)); // get data $data = Spawn::item(Util::extendArray($originalParam, $getParam)); // check data if (!$data) { return array('state' => 'error', 'message' => '데이터가 없습니다.'); } // convert json data if (is_array($data) && $data['json']) { $data['json'] = Util::jsonToArray($data['json'], null, true); } // return data return array('state' => 'success', 'data' => $data); }
/** * gets an array of all config values * * @return array */ public function getAll() { if ($this->_combined) { return $this->_combined; } $path = $this->_path; $env = $this->_env; $type = $this->_type; if (!file_exists($path)) { throw new Exception('configuration file does not exist at ' . $path); } // parse the file switch ($type) { case self::PHP: include $path; $parsed_file = $config; break; default: $parsed_file = parse_ini_file($path, true); break; } // find all the environments $sections = array_keys($parsed_file); // make sure environment exists $map = $this->_getEnvironmentMap($sections); if (!isset($map[$env])) { throw new Exception('environment: ' . $env . ' not found in config at : ' . $path); } $parents = $this->_getParents($sections, $env); $to_merge = array_reverse($parents); $to_merge[] = $env; $start = array_shift($to_merge); $this->_combined = $parsed_file[$start]; foreach ($to_merge as $env) { $full_section = $map[$env]; $this->_combined = Util::extendArray($this->_combined, $parsed_file[$full_section], $this->_exceptions[$env]); } return $this->_combined; }