<?php require_once '../lib/header_ajax.php'; require_once '../lib/lib_dict.php'; try { switch ($_POST['act']) { case 'forget': forget_pending_token($_POST['token_id'], $_POST['rev_id']); break; case 'update': update_pending_token($_POST['token_id'], $_POST['rev_id'], 0, (bool) $_POST['smart']); break; default: $result['error'] = 1; } } catch (Exception $e) { $result['error'] = 1; } log_timing(true); die(json_encode($result));
function update_pending_token($token_id, $rev_id, $revset_id = 0, $smart = false) { check_permission(PERM_DICT); if (!check_safe_token_update($token_id, $rev_id)) { throw new Exception("Update forbidden"); } // ok, now we can safely update $res = sql_pe("SELECT tf_text FROM tokens WHERE tf_id=? LIMIT 1", array($token_id)); $token_text = $res[0]['tf_text']; $res = sql_pe("SELECT rev_text FROM tf_revisions WHERE tf_id=? AND is_last=1 LIMIT 1", array($token_id)); $previous_rev = $res[0]['rev_text']; if ($smart) { $parse = new MorphParseSet($previous_rev); smart_update_pending_token($parse, $rev_id); } else { $parse = new MorphParseSet(false, $token_text); } $new_rev = $parse->to_xml(); // do nothing if nothing changed if ($previous_rev == $new_rev) { forget_pending_token($token_id, $rev_id); return true; } sql_begin(); if (!$revset_id) { $revset_id = create_revset("Update tokens from dictionary"); } create_tf_revision($revset_id, $token_id, $new_rev); forget_pending_token($token_id, $rev_id); delete_samples_by_token_id($token_id); sql_commit(); }