session_start(); require_once "definition.php"; require_once "funcs.php"; $counter = 0; $mode = $_POST[mode]; $log = $_SESSION[log]; $xml_l = removeQuote($_POST[xml_l]); $xml_r = removeQuote($_POST[xml_r]); $prob = 'prob1_1'; if(isset($_POST[problem])){ $prob = $_POST[problem]; } for ($i = 0; $i < $file_n; $i++){ $files[$i] = rand_file_name(); } if($mode =="") { // initial $show_bidings = $display[0]; $show_code = $display[0]; $show_pre_documents = $display[0]; $show_log = $display[0]; }else{ $show_bindings = $_POST[show_bindings]; $show_code = $_POST[show_code]; $show_pre_documents = $_POST[show_pre_documents]; $show_log = $_POST[show_log]; } preg_match ("/^([^_]+)_/", $prob, $match); $prob_name = $match[1]; $code_txt = html_of_string(file($prob_name . ".bxd")); if($mode == "" || $mode == "prob_changed"){ $log = ""; $_SESSION[remove] = false; $pre_xml_l = join("", file($prob_name . "_l.xml")); $pre_xml_r = join("", file($prob_name . "_r.xml")); $xml_l = join("", file($prob . "_l.xml")); $xml_r = join("", file($prob . "_r.xml")); $pre_xml_l_file = new_file_name($counter, $files); write_to_file($pre_xml_l_file, $pre_xml_l); $pre_xml_r_file = new_file_name($counter, $files); write_to_file($pre_xml_r_file, $pre_xml_r); $binding_l_file = new_file_name($counter, $files); $binding_r_file = new_file_name($counter, $files); $mtree_l_file = new_file_name($counter, $files); $mtree_r_file = new_file_name($counter, $files); $mes = join("\n", binding_markedTree(($prob_name . ".bxd"), ($prob_name . "_parse_l"), ($prob_name . "_parse_r"), $pre_xml_l_file, $pre_xml_r_file, $binding_l_file, $binding_r_file, $mtree_l_file, $mtree_r_file)); $log .= $mes; $binding_l = join("", file($binding_l_file)); $binding_r = join("", file($binding_r_file)); $_SESSION[mtree_l] = join("", file($mtree_l_file)); $_SESSION[mtree_r] = join("", file($mtree_r_file)); }else{ $pre_xml_l = $_SESSION[pre_xml_l]; $pre_xml_r = $_SESSION[pre_xml_r]; $binding_l = $_SESSION[binding_l]; $binding_r = $_SESSION[binding_r]; if($mode == "sync"){ $xml_l_file = new_file_name($counter, $files); write_to_file($xml_l_file, $xml_l); $xml_r_file = new_file_name($counter, $files); write_to_file($xml_r_file, $xml_r); if((validate_xml($xml_l_file) != "") || (validate_xml($xml_r_file) != "")){ $binding_l = validate_xml($xml_l_file); $binding_r = validate_xml($xml_r_file); }else{ $xml_l_modified = is_edited($xml_l_file); $xml_r_modified = is_edited($xml_r_file); if((!ereg("Not Edited", $xml_l_modified)) && (!ereg("Not Edited", $xml_r_modified))){ $binding_l = "Editions in both documents\n"; $binding_r = "Editions in both documents\n"; $log .= "Editions in both documents\n"; }else if(ereg("Not Edited", $xml_l_modified) && ereg("Not Edited", $xml_r_modified)){ $log .= "Please edit one of the documents"; }else{ $relation_file = $prob_name . ".bxd"; $left_parse_automaton_file = $prob_name . "_parse_l"; $right_parse_automaton_file = $prob_name . "_parse_r"; $left_unparse_automaton_file = $prob_name . "_unparse_l"; $right_unparse_automaton_file = $prob_name . "_unparse_r"; $left_pre_xml_file = new_file_name($counter, $files); write_to_file($left_pre_xml_file, $pre_xml_l); $right_pre_xml_file = new_file_name($counter, $files); write_to_file($right_pre_xml_file, $pre_xml_r); $left_pre_mtree_file = new_file_name($counter, $files); write_to_file($left_pre_mtree_file, $_SESSION[mtree_l]); $right_pre_mtree_file = new_file_name($counter, $files); write_to_file($right_pre_mtree_file, $_SESSION[mtree_r]); $left_binding_file = new_file_name($counter, $files); $right_binding_file = new_file_name($counter, $files); $left_cur_mtree_file = new_file_name($counter, $files); $right_cur_mtree_file = new_file_name($counter, $files); if(!ereg("Not Edited", $xml_l_modified)){ // xml_l is modified $left_cur_xml_file = $xml_l_file; $right_cur_xml_file = new_file_name($counter, $files); update($relation_file, true, $left_parse_automaton_file, $right_parse_automaton_file, $left_unparse_automaton_file, $right_unparse_automaton_file, $left_pre_xml_file, $right_pre_xml_file, $left_pre_mtree_file, $right_pre_mtree_file, $left_cur_xml_file, $right_cur_xml_file, $left_binding_file, $right_binding_file, $left_cur_mtree_file, $right_cur_mtree_file); }else{// $xml_r is modified $left_cur_xml_file = new_file_name($counter, $files); $right_cur_xml_file = $xml_r_file; update($relation_file, false, $left_parse_automaton_file, $right_parse_automaton_file, $left_unparse_automaton_file, $right_unparse_automaton_file, $left_pre_xml_file, $right_pre_xml_file, $left_pre_mtree_file, $right_pre_mtree_file, $left_cur_xml_file, $right_cur_xml_file, $left_binding_file, $right_binding_file, $left_cur_mtree_file, $right_cur_mtree_file); } $binding_l = join("", file($left_binding_file)); $binding_r = join("", file($right_binding_file)); $nmtree_l = join("", file($left_cur_mtree_file)); $nmtree_r = join("", file($right_cur_mtree_file)); if(!ereg("Not Edited", $xml_l_modified)){ // xml_l is modified $nxml_r = join("", file($right_cur_xml_file)); if($nxml_r != ""){ $_SESSION[remove] = true; $xml_r = $nxml_r; $_SESSION[mtree_l] = $nmtree_l; $_SESSION[mtree_r] = $nmtree_r; $log .= "Synchronized. Please remove tags.\n"; } }else{ $nxml_l = join("", file($left_cur_xml_file)); if($nxml_l != ""){ $_SESSION[remove] = true; $xml_l = $nxml_l; $_SESSION[mtree_l] = $nmtree_l; $_SESSION[mtree_r] = $nmtree_r; $log .= "Synchronized. Please remove tags.\n"; } } } } }else if($mode == "remove"){ $_SESSION[remove] = false; $xml_l = remove_tags($xml_l); $pre_xml_l = $xml_l; $xml_r = remove_tags($xml_r); $pre_xml_r = $xml_r; $pre_xml_l_file = new_file_name($counter, $files); write_to_file($pre_xml_l_file, $pre_xml_l); $pre_xml_r_file = new_file_name($counter, $files); write_to_file($pre_xml_r_file, $pre_xml_r); $binding_l_file = new_file_name($counter, $files); $binding_r_file = new_file_name($counter, $files); $mtree_l_file = new_file_name($counter, $files); $mtree_r_file = new_file_name($counter, $files); $mes = join("\n", binding_markedTree(($prob_name . ".bxd"), ($prob_name . "_parse_l"), ($prob_name . "_parse_r"), $pre_xml_l_file, $pre_xml_r_file, $binding_l_file, $binding_r_file, $mtree_l_file, $mtree_r_file)); $log .= "Removed tags\n"; $binding_l = join("", file($binding_l_file)); $binding_r = join("", file($binding_r_file)); $_SESSION[mtree_l] = join("", file($mtree_l_file)); $_SESSION[mtree_r] = join("", file($mtree_r_file)); } } $_SESSION[binding_l] = $binding_l; $_SESSION[binding_r] = $binding_r; $_SESSION[pre_xml_l] = $pre_xml_l; $_SESSION[pre_xml_r] = $pre_xml_r; $_SESSION[log] = $log; for ($i = 0; $i < $counter ; $i++){ unlink($files[$i]); } echo ""; ?>