public static function fork($nid)
 {
     $dbm = \CADB\DBM::instance();
     $que = "SELECT * FROM {guide} WHERE nid = " . $nid;
     $guide = $dbm->getFetchArray($que);
     if (!$guide) {
         self::setErrorMsg("존재하지 않는 모범단협입니다.");
         return -1;
     }
     $que = "INSERT INTO {guide} (";
     $que2 = ") VALUES (";
     $array1 = 'array("';
     $array2 = "";
     $c = 0;
     foreach ($guide as $k => $v) {
         if ($k == 'nid' || $k == 'vid') {
             continue;
         }
         if ($k == 'created') {
             continue;
         }
         $que .= ($c ? ", " : "") . "`" . $k . "`";
         $que2 .= ($c ? ", " : "") . "?";
         if (is_numeric($v)) {
             $array1 .= 'd';
         } else {
             $guide[$k] = stripslashes($v);
             $array1 .= 's';
         }
         if ($k == 'current') {
             $guide[$k] = 0;
         }
         $array2 .= ($c ? ", " : "") . '$' . 'guide[' . $k . ']';
         $c++;
     }
     $que .= ", `created`";
     $que2 .= ", ?)";
     $que = $que . $que2;
     $array1 .= 'd",';
     $array2 .= ", time())";
     $eval_str = '$' . "q_args = " . $array1 . $array2 . ";";
     eval($eval_str);
     if ($dbm->execute($que, $q_args) < 1) {
         self::setErrorMsg($que . "가 DB에 반영되지 않았습니다.");
         return -1;
     }
     $insert_nid = $dbm->getLastInsertId();
     $que = "UPDATE {guide} SET vid = ? WHERE nid = ?";
     if ($dbm->execute($que, array("dd", $insert_nid, $insert_nid)) < 1) {
         self::setErrorMsg($que . " 가 DB에 반영되지 않았습니다.");
         self::rollback($insert_nid);
         return -1;
     }
     self::$log = "모범단협: " . $nid . " 을 복사하여 새모범단협: " . $insert_nid . " 으로 복사했습니다.\n";
     $clause = array();
     $que = "SELECT * FROM {guide_clause} WHERE nid = " . $nid . " ORDER BY parent ASC, idx ASC";
     while ($row = $dbm->getFetchArray($que)) {
         $clause[] = $row;
     }
     if (is_array($clause)) {
         foreach ($clause as $cl) {
             if (self::forkClause($cl, $insert_nid) < 0) {
                 self::rollback($insert_nid);
                 return -1;
             }
         }
     }
     self::$log .= "모범단협: " . $nid . " 의 모든 세부조항을 복사하여 새모범단협: " . $insert_nid . " 의 세부조항으로 복사했습니다.\n";
     \CADB\Log::guideLog('fork', $insert_nid, $insert_nid, 0, self::$log);
     return $insert_nid;
 }