xxx * 2、使用父类的成员函数:parent::yyy() * 3、使用父类的非成员函数,直接用即可:zzz() * 4、 */ function __construct() { /* * 避免子类的构造函数覆盖父类的构造函数 */ parent::__construct(); /* * 其它自定义操作 */ } //获取指定项的值 public function Get($key) { $result = $this->database_medoo->select("config", ["config_value"], ["config_name" => $key]); return $result[0]['config_value']; } //修改配置文件的值 public function Update($key, $value) { $result = $this->database_medoo->update("config", ["config_value" => $value], ["config_name" => $key]); } //获取服务器基本信息 public function GetBasicSetting($requestPayload) { $all_mail_status = $this->Get("ALL_MAIL_STATUS") == 1 ? true : false; $result = array( "server_ip" => $this->Get("SERVER_IP"), "server_domain" => $this->Get("SERVER_DOMAIN"), "svn_repository_path" => $this->Get("SVN_REPOSITORY_PATH"), "backup_path" => $this->Get("BACKUP_PATH"), "all_mail_status" => $all_mail_status ); $data['status'] = 1; $data['data'] = $result; $data['message'] = '获取基础配置信息成功'; return $data; } //设置服务器基本信息 public function SetBasicSetting($requestPayload) { $server_ip = trim($requestPayload['server_ip']); $server_domain = trim($requestPayload['server_domain']); $svn_repository_path = trim($requestPayload['svn_repository_path']); $backup_path = trim($requestPayload['backup_path']); $all_mail_status = $requestPayload['all_mail_status']; if (empty($server_ip) || empty($server_domain) || empty($svn_repository_path) || empty($backup_path)) { $data['status'] = 0; $data['message'] = '参数不完整或错误'; return $data; } $old_path = $this->Get("SVN_REPOSITORY_PATH"); $new_path = $svn_repository_path; $UpdateRepositoryParentPath = true; if ($old_path != $new_path) { $UpdateRepositoryParentPath = $this->UpdateRepositoryParentPath($old_path, $new_path); } if ($UpdateRepositoryParentPath) { $this->Update("SERVER_IP", $server_ip); $this->Update("SERVER_DOMAIN", $server_domain); $this->Update("SVN_REPOSITORY_PATH", $svn_repository_path); $this->Update("BACKUP_PATH", $backup_path); if ($all_mail_status) { $this->Update("ALL_MAIL_STATUS", 1); } else { $this->Update("ALL_MAIL_STATUS", 0); } $data['status'] = 1; $data['message'] = "保存成功"; return $data; } else { $data['status'] = 0; $data['message'] = "修改版本库父文件夹出错"; return $data; } } //更改版本库父文件夹后触发的操作 private function UpdateRepositoryParentPath($old_path, $new_path) { parent::RequestReplyExec(" mkdir $new_path"); $info = parent::RequestReplyExec(' ps auxf|grep -v "grep"|grep svnserve'); if ($info == '' && !file_exists('/usr/bin/svnserve')) { /* * 没有安装过svn服务 */ //移动仓库 $file_arr = scandir($old_path); foreach ($file_arr as $file_item) { if ($file_item != '.' && $file_item != '..') { if (is_dir($old_path . '/' . $file_item)) { $file_arr2 = scandir($old_path . '/' . $file_item); foreach ($file_arr2 as $file_item2) { if (($file_item2 == 'conf' || $file_item2 == 'db' || $file_item2 == 'hooks' || $file_item2 == 'locks')) { parent::RequestReplyExec(' mv -b -f ' . $old_path . '/' . $file_item . ' ' . $new_path); } } } } } //检查仓库是否已经被移动 $file_arr = scandir($old_path); foreach ($file_arr as $file_item) { if ($file_item != '.' && $file_item != '..') { if (is_dir($old_path . '/' . $file_item)) { $file_arr2 = scandir($old_path . '/' . $file_item); foreach ($file_arr2 as $file_item2) { if (($file_item2 == 'conf' || $file_item2 == 'db' || $file_item2 == 'hooks' || $file_item2 == 'locks')) { return false; } } } } } return true; } else { /* * 安装过svn服务 */ //停止服务 parent::RequestReplyExec(' systemctl stop svnserve'); //移动仓库 $file_arr = scandir($old_path); foreach ($file_arr as $file_item) { if ($file_item != '.' && $file_item != '..') { if (is_dir($old_path . '/' . $file_item)) { $file_arr2 = scandir($old_path . '/' . $file_item); foreach ($file_arr2 as $file_item2) { if (($file_item2 == 'conf' || $file_item2 == 'db' || $file_item2 == 'hooks' || $file_item2 == 'locks')) { parent::RequestReplyExec(' mv -b -f ' . $old_path . '/' . $file_item . ' ' . $new_path); } } } } } //修改配置文件 parent::RequestReplyExec(' sed -i \'s/' . str_replace('/', '\/', $old_path) . '/' . str_replace('/', '\/', $new_path) . '/g\'' . ' /etc/sysconfig/svnserve'); //bug //启动服务 parent::RequestReplyExec(' systemctl start svnserve'); //检查配置文件是否被正确修改 $file = fopen("/etc/sysconfig/svnserve", "r") or exit("无法打开文件!"); $file_content = array(); while (!feof($file)) { array_push($file_content, fgets($file)); } fclose($file); foreach ($file_content as $key => $value) { if (strstr($value, $old_path)) { return false; } } //检查仓库是否已经被移动 $file_arr = scandir($old_path); foreach ($file_arr as $file_item) { if ($file_item != '.' && $file_item != '..') { if (is_dir($old_path . '/' . $file_item)) { $file_arr2 = scandir($old_path . '/' . $file_item); foreach ($file_arr2 as $file_item2) { if (($file_item2 == 'conf' || $file_item2 == 'db' || $file_item2 == 'hooks' || $file_item2 == 'locks')) { return false; } } } } } return true; } } }