function set_name_map() { global $_POST; foreach ($_POST as $prodName => $tableName) { $tableName = trim($tableName); if ($prodName == "set_type" || $prodName == "submit") { continue; } echo "<br>"; if ($tableName == "") { echo "提示:产品({$prodName})的表名为空"; continue; } if (preg_match("/\$\\w+\$/", $tableName) === false) { echo "错误:产品({$prodName})的表名({$tableName})只能由字符组成!"; break; } if (strlen($tableName) == 20) { echo "错误:产品({$prodName})的表名({$tableName})长度不能超过20!"; break; } dbUtil(SetProdNameMap, $prodName, $tableName); $retArray = get_db_result(); if ($retArray[0] == 1) { echo $retArray[1]; break; } else { echo $retArray[1]; } } echo " <a href='../../../index.php'>返回</a>"; }
function export_svn_code($code_url, $prod_name, $ldap, $password) { $code_url = trim($code_url); if (strlen($prod_name) > 30) { set_util_result(1, "错误:服务名称不能超过30个字符!"); return; } if (preg_match("/^(https:\\/\\/[^@]+)@(\\d+)\$/", $code_url, $matches) == 0) { set_util_result(1, "错误:无效的svn地址!"); return; } $url_addr = $matches[1]; $version = $matches[2]; $target_dir = dirname(__FILE__) . "/../../code/" . md5($prod_name); if (!file_exists($target_dir)) { mkdir($target_dir); } $target_dir = realpath($target_dir); $target_svn_dir = $target_dir . "/" . $version; if (file_exists($target_svn_dir)) { set_util_result(1, "错误:该版本已经存在!"); return; } $target_exp_file = dirname(__FILE__) . "/../../templates/svn_export.exp"; $content = file_get_contents(dirname(__FILE__) . "/../../templates/svn_export.template"); $content = str_replace('$current_file$', $target_exp_file, $content); $content = str_replace('$user_name$', $ldap, $content); $content = str_replace('$svn_url$', $code_url, $content); $content = str_replace('$target_dirname$', $target_svn_dir, $content); $content = str_replace('$password$', $password, $content); file_put_contents($target_exp_file, $content); $cmd = "chmod 700 {$target_exp_file}; {$target_exp_file}"; exec($cmd, $lines, $ret); $pos = strpos(array_pop($lines), "authorization failed"); if ($pos !== false) { set_util_result(1, "错误:执行expect脚本失败(请确定用户名密码是否正确)!"); return; } dbUtil(AddCodeInfo, $code_url, $version, $prod_name, $ldap, $target_svn_dir); $db_ret = get_db_result(); set_util_result($db_ret[0], $db_ret[1]); }
function dbUtil() { $args_arr = func_get_args(); $type = $args_arr[0]; if ($type != GetStatus && $type != SetStatus) { reset_db_result(); } try { $mongo = new MongoClient('mongodb://nb403:27127/admin:admin'); $db = $mongo->svnCodeComment; if ($type == LoadCodePathInfoTable) { return load_codePathInfoTable($db); } elseif ($type == LoadProdTableNameMapInfoTable) { return load_prodTableNameMapInfoTable($db); } elseif ($type == LoadCodeCommentInfoTable) { $prodName = $args_arr[1]; return load_codeCommentInfoTable($db, $prodName); } elseif ($type == SaveCodePathInfo) { list($svnAddr, $version, $prodName, $creator) = array_slice($args_arr, 1); return save_codePathInfo($db, $svnAddr, $version, $prodName, $creator); } elseif ($type == SaveProdTableNameMapInfo) { list($prodName, $tableName) = array_slice($args_arr, 1); return save_prodTableNameMapInfo($db, $prodName, $tableName); } elseif ($type == SaveCodeCommentInfo) { list($prodName, $version, $status, $filePath, $commentor, $type, $content, $detail_type, $selected_id) = array_slice($args_arr, 1); return save_codeCommentInfo($db, $prodName, $version, $status, $filePath, $commentor, $type, $content, $detail_type, $selected_id); } elseif ($type == SetStatus) { list($status, $msg) = array_slice($args_arr, 1); return set_db_result($status, $msg); } elseif ($type == GetStatus) { return get_db_result(); } elseif ($type == CreateCollection) { $tableName = $args_arr[1]; return create_table($db, $tableName); } } catch (MongoConnectionException $e) { set_db_result(1, $e->getMessage()); return false; } }