public function renameSchema($schema, $name) { if ($schema == "public") { $response['success'] = false; $response['message'] = "You can't rename 'public'"; $response['code'] = 401; return $response; } $newName = Model::toAscii($name, array(), "_"); $this->connect(); $this->begin(); $whereClauseG = "f_table_schema=''{$schema}''"; $whereClauseR = "******"; $query = "SELECT * FROM settings.getColumns('{$whereClauseG}','{$whereClauseR}') ORDER BY sort_id"; $res = $this->prepare($query); try { $res->execute(); } catch (\PDOException $e) { $this->rollback(); $response['success'] = false; $response['message'] = $e->getMessage(); $response['code'] = 401; return $response; } while ($row = $this->fetchRow($res)) { $query = "UPDATE settings.geometry_columns_join SET _key_ = '{$newName}.{$row['f_table_name']}.{$row['f_geometry_column']}' WHERE _key_ ='{$row['f_table_schema']}.{$row['f_table_name']}.{$row['f_geometry_column']}'"; $resUpdate = $this->prepare($query); try { $resUpdate->execute(); } catch (\PDOException $e) { $this->rollback(); $response['success'] = false; $response['message'] = $e->getMessage(); $response['code'] = 400; return $response; } } $query = "ALTER SCHEMA {$schema} RENAME TO {$newName}"; $res = $this->prepare($query); try { $res->execute(); } catch (\PDOException $e) { $this->rollback(); $response['success'] = false; $response['message'] = $e->getMessage(); $response['code'] = 401; return $response; } $setObj = new \app\models\Setting(); $settings = $setObj->getArray(); $extents = $settings['extents']->{$schema}; $center = $settings['center']->{$schema}; $zoom = $settings['zoom']->{$schema}; if ($extents) { $settings['extents']->{$newName} = $extents; $settings['center']->{$newName} = $center; $settings['zoom']->{$newName} = $zoom; if (\app\conf\App::$param["encryptSettings"]) { $pubKey = file_get_contents(\app\conf\App::$param["path"] . "app/conf/public.key"); $sql = "UPDATE settings.viewer SET viewer=pgp_pub_encrypt('" . json_encode($settings) . "', dearmor('{$pubKey}'))"; } else { $sql = "UPDATE settings.viewer SET viewer='" . json_encode($settings) . "'"; } $res = $this->prepare($sql); try { $res->execute(); } catch (\PDOException $e) { $this->rollback(); $response['success'] = false; $response['message'] = $e->getMessage(); $response['code'] = 401; return $response; } } $this->commit(); $response['success'] = true; $response['message'] = "{$schema} renamed to {$newName}"; $response['data']['name'] = $newName; return $response; }