123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298 |
- <?php
- class DatabaseController
- {
-
-
- private $returnJson = array('type' => 'database');
-
- public function __construct()
- {
-
-
- $server = new GuestModule;
- if (!$server->checkLogin()) {
- $this->returnJson['statusCode'] = '120005';
- exitOutput($this->returnJson);
- }
- }
-
- public function addDatabase()
- {
- $nameLen = mb_strlen(quickInput('dbName'), 'utf8');
- $dbName = securelyInput('dbName');
- $dbVersion = securelyInput('dbVersion');
- if (!($nameLen >= 1 && $nameLen <= 32)) {
-
-
- $this->returnJson['statusCode'] = '220001';
- } elseif (!(is_float(floatval($dbVersion)) && intval($dbVersion))) {
-
-
- $this->returnJson['statusCode'] = '220002';
- } else {
- $service = new DatabaseModule;
- $result = $service->addDatabase($dbName, $dbVersion);
- if ($result) {
- $this->returnJson['statusCode'] = '000000';
- $this->returnJson['dbID'] = $result;
- } else {
- $this->returnJson['statusCode'] = '220003';
- }
- }
- exitOutput($this->returnJson);
- }
-
- public function deleteDatabase()
- {
- $dbID = securelyInput('dbID');
- $module = new DatabaseModule();
- $userType = $module->getUserType($dbID);
- if ($userType < 0 || $userType > 1) {
- $this->returnJson['statusCode'] = '120007';
- exitOutput($this->returnJson);
- }
-
-
- if (!preg_match('/^[0-9]{1,11}$/', $dbID)) {
- $this->returnJson['statusCode'] = '220004';
- } else {
- $service = new DatabaseModule;
- $result = $service->deleteDatabase($dbID);
- if ($result) {
- $this->returnJson['statusCode'] = '000000';
- } else {
- $this->returnJson['statusCode'] = '220005';
- }
- }
- exitOutput($this->returnJson);
- }
-
- public function getDatabase()
- {
- $service = new DatabaseModule;
- $result = $service->getDatabase();
- if ($result) {
- $this->returnJson['statusCode'] = '000000';
- $this->returnJson['databaseList'] = $result;
- } else {
- $this->returnJson['statusCode'] = '220006';
- }
- exitOutput($this->returnJson);
- }
-
- public function editDatabase()
- {
- $dbID = securelyInput('dbID');
- $module = new DatabaseModule();
- $userType = $module->getUserType($dbID);
- if ($userType < 0 || $userType > 2) {
- $this->returnJson['statusCode'] = '120007';
- exitOutput($this->returnJson);
- }
- $nameLen = mb_strlen(quickInput('dbName'), 'utf8');
- $dbName = securelyInput('dbName');
- $dbVersion = securelyInput('dbVersion');
-
-
- if (!preg_match('/^[0-9]{1,11}$/', $dbID)) {
- $this->returnJson['statusCode'] = '220004';
- } elseif (!($nameLen >= 1 && $nameLen <= 32)) {
-
-
- $this->returnJson['statusCode'] = '220001';
- } elseif (!(is_float(floatval($dbVersion)) && intval($dbVersion))) {
-
-
- $this->returnJson['statusCode'] = '220002';
- } else {
- $service = new DatabaseModule;
- $result = $service->editDatabase($dbID, $dbName, $dbVersion);
- if ($result) {
- $this->returnJson['statusCode'] = '000000';
- } else {
- $this->returnJson['statusCode'] = '220007';
- }
- }
- exitOutput($this->returnJson);
- }
-
- public function exportDatabase()
- {
- $dbID = quickInput('dbID');
- $module = new DatabaseModule();
- $userType = $module->getUserType($dbID);
- if ($userType < 0 || $userType > 1) {
- $this->returnJson['statusCode'] = '120007';
- exitOutput($this->returnJson);
- }
-
-
- if (!preg_match('/^[0-9]{1,11}$/', $dbID)) {
- $this->returnJson['statusCode'] = '220004';
- } else {
- $service = new DatabaseModule;
- $fileName = $service->exportDatabase($dbID);
- if ($fileName) {
- $this->returnJson['statusCode'] = '000000';
- $this->returnJson['fileName'] = $fileName;
- } else {
-
-
- $this->returnJson['statusCode'] = '220000';
- }
- }
- exitOutput($this->returnJson);
- }
-
- public function importDatabase()
- {
- $dbID = securelyInput('dbID');
- $module = new DatabaseModule();
- $userType = $module->getUserType($dbID);
- if ($userType < 0 || $userType > 2) {
- $this->returnJson['statusCode'] = '120007';
- exitOutput($this->returnJson);
- }
- $dumpSql = quickInput('dumpSql');
-
-
- if (!preg_match('/^[0-9]{1,11}$/', $dbID)) {
- $this->returnJson['statusCode'] = '230001';
- } else {
- $tables = array();
-
-
- preg_match_all('/CREATE.*?TABLE[\\s\\S]+?;/', $dumpSql, $sql);
- if (empty($sql)) {
- preg_match_all('/create.*?table[\\s\\S]+?;/', $dumpSql, $sql);
- }
- preg_match_all('/ALTER.*?TABLE[\\s\\S]+?PRIMARY.+?\\)/', $dumpSql, $primaryKeys);
- if (empty($primaryKeys)) {
- preg_match_all('/alter.*?table[\\s\\S]+?primary.+?\\)/', $dumpSql, $primaryKeys);
- }
- foreach ($sql[0] as $tableSql) {
-
-
- preg_match('/`(.*?)`/', $tableSql, $tableName);
- preg_match("/COMMENT='(.*?)'/", $tableSql, $tableDesc);
- if (empty($tableDesc)) {
- preg_match("/comment='(.*?)'/", $tableSql, $tableDesc);
- }
-
-
- $tableField = substr(substr($tableSql, strpos($tableSql, '(') + 1), 0, strlen($tableSql) - strpos($tableSql, '(') - 9);
- if ($primaryKeys[0] != NULL) {
- $key = '';
- foreach ($primaryKeys[0] as $primaryKey) {
- if (strpos($primaryKey, $tableName[1]) !== FALSE) {
- $key = substr($primaryKey, strpos($primaryKey, '('));
- break;
- }
- }
- }
- $tables[] = array(
- 'tableName' => $tableName[1],
- 'tableDesc' => $tableDesc[1],
- 'tableField' => $tableField,
- 'primaryKey' => $key
- );
- }
- if (count($tables) > 0) {
- $service = new DatabaseModule;
- $result = $service->importDatabase($dbID, $tables);
- if ($result) {
- $this->returnJson['statusCode'] = '000000';
-
- } else {
-
-
- $this->returnJson['statusCode'] = '220008';
- }
- } else {
-
-
- $this->returnJson['statusCode'] = '220009';
- }
- }
- exitOutput($this->returnJson);
- }
-
- public function importDatabseByJson()
- {
- $json = quickInput('data');
- $data = json_decode($json, TRUE);
- if (empty($data)) {
-
-
- $this->returnJson['statusCode'] = '220010';
- } else {
- $service = new DatabaseModule;
- $result = $service->importDatabseByJson($data);
- if ($result) {
- $this->returnJson['statusCode'] = '000000';
- } else {
- $this->returnJson['statusCode'] = '220000';
- }
- }
- exitOutput($this->returnJson);
- }
- }
- ?>
|