Exemple #1
0
<?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));
Exemple #2
0
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();
}