Example #1
0
<?php

require_once '../lib/header_ajax.php';
require_once '../lib/lib_books.php';
$id = (int) $_POST['id'];
$t = get_books_for_select($id);
$result['books'] = array();
foreach ($t as $id => $title) {
    $result['books'][] = array('id' => $id, 'title' => $title);
}
log_timing(true);
die(json_encode($result));
Example #2
0
function get_book_page($book_id, $full = false, $override_hidden = false)
{
    if (!$override_hidden) {
        check_book_hidden($book_id);
    }
    $res = sql_pe("SELECT * FROM `books` WHERE `book_id`=? LIMIT 1", array($book_id));
    if (!sizeof($res)) {
        throw new UnexpectedValueException();
    }
    $out = array('id' => $book_id, 'title' => $res[0]['book_name'], 'select' => get_books_for_select(), 'is_wikinews' => $res[0]['parent_id'] == 56, 'is_chaskor_news' => $res[0]['parent_id'] == 226);
    get_book_tags($book_id, $out);
    //sub-books
    foreach (sql_pe("SELECT book_id, book_name FROM books WHERE parent_id=? ORDER BY book_name", array($book_id)) as $r) {
        $out['children'][] = array('id' => $r['book_id'], 'title' => $r['book_name']);
    }
    //parents
    $out['parents'] = array_reverse(get_book_parents($book_id));
    //sentences
    if ($full) {
        $q = "SELECT p.`pos` ppos, par_id, s.sent_id, s.`pos` spos";
        if (user_has_permission(PERM_ADDER)) {
            $q .= ", ss.status";
        }
        $q .= "\nFROM paragraphs p\n            LEFT JOIN sentences s\n            USING (par_id)\n";
        if (user_has_permission(PERM_ADDER)) {
            $q .= "LEFT JOIN sentence_check ss ON (s.sent_id = ss.sent_id AND ss.status=1 AND ss.user_id=" . $_SESSION['user_id'] . ")\n";
        }
        $q .= "WHERE p.book_id = ?\n            ORDER BY p.`pos`, s.`pos`";
        $res = sql_pe($q, array($book_id));
        $res1 = sql_prepare("SELECT tf_id, tf_text FROM tokens WHERE sent_id=? ORDER BY pos");
        foreach ($res as $r) {
            sql_execute($res1, array($r['sent_id']));
            $tokens = array();
            while ($r1 = sql_fetch_array($res1)) {
                $tokens[] = array('text' => $r1['tf_text'], 'id' => $r1['tf_id']);
            }
            $new_a = array('id' => $r['sent_id'], 'pos' => $r['spos'], 'tokens' => $tokens);
            if (user_has_permission(PERM_ADDER)) {
                $new_a['checked'] = $r['status'];
            }
            $out['paragraphs'][$r['ppos']]['sentences'][] = $new_a;
            $out['paragraphs'][$r['ppos']]['id'] = $r['par_id'];
        }
    } else {
        $res = sql_pe("SELECT p.`pos` ppos, s.sent_id, s.`pos` spos FROM paragraphs p LEFT JOIN sentences s ON (p.par_id = s.par_id) WHERE p.book_id = ? ORDER BY p.`pos`, s.`pos`", array($book_id));
        foreach ($res as $r) {
            $r1 = sql_fetch_array(sql_query("SELECT source, SUBSTRING_INDEX(source, ' ', 6) AS `cnt` FROM sentences WHERE sent_id=" . $r['sent_id'] . " LIMIT 1"));
            if ($r1['source'] === $r1['cnt']) {
                $out['paragraphs'][$r['ppos']]['sentences'][] = array('pos' => $r['spos'], 'id' => $r['sent_id'], 'snippet' => $r1['source']);
                continue;
            }
            $snippet = '';
            $r1 = sql_fetch_array(sql_query("SELECT SUBSTRING_INDEX(source, ' ', 3) AS `start` FROM sentences WHERE sent_id=" . $r['sent_id'] . " LIMIT 1"));
            $snippet = $r1['start'];
            if ($snippet) {
                $snippet .= '... ';
            }
            $r1 = sql_fetch_array(sql_query("SELECT SUBSTRING_INDEX(source, ' ', -3) AS `end` FROM sentences WHERE sent_id=" . $r['sent_id'] . " LIMIT 1"));
            $snippet .= $r1['end'];
            $out['paragraphs'][$r['ppos']]['sentences'][] = array('pos' => $r['spos'], 'id' => $r['sent_id'], 'snippet' => $snippet);
        }
    }
    return $out;
}
Example #3
0
function addtext_check($array)
{
    global $config;
    check_permission(PERM_ADDER);
    //read file for tokenizer
    $tok_exc = array_map('mb_strtolower', file($config['project']['root'] . '/scripts/tokenizer/tokenizer_exceptions.txt', FILE_IGNORE_NEW_LINES));
    $tok_prefixes = file($config['project']['root'] . '/scripts/tokenizer/tokenizer_prefixes.txt', FILE_IGNORE_NEW_LINES);
    //removing bad symbols
    $clear_text = '';
    for ($i = 0; $i < mb_strlen($array['txt'], 'UTF-8'); ++$i) {
        $char = mb_substr($array['txt'], $i, 1, 'UTF-8');
        $code = uniord($char);
        if ($code != 769 && $code != 173 && ($code < 8192 || $code > 8203) && !in_array($code, array(8206, 8207)) && !in_array($code, array(160, 8237, 8239, 8288, 12288))) {
            $clear_text .= $char;
        }
    }
    $out = array('full' => $clear_text, 'select0' => get_books_for_select(0));
    $pars = split2paragraphs($clear_text);
    foreach ($pars as $par) {
        $par_array = array();
        $sents = split2sentences($par);
        foreach ($sents as $sent) {
            if (!preg_match('/\\S/', $sent)) {
                continue;
            }
            $sent_array = array('src' => $sent);
            $tokens = tokenize_ml($sent, $tok_exc, $tok_prefixes);
            foreach ($tokens as $token) {
                $sent_array['tokens'][] = array('text' => $token[0], 'class' => form_exists($token[0]), 'border' => $token[1], 'vector' => $token[2]);
            }
            $par_array['sentences'][] = $sent_array;
        }
        $out['paragraphs'][] = $par_array;
    }
    //book
    if (isset($array['book_id'])) {
        $book_id = (int) $array['book_id'];
        $r = sql_fetch_array(sql_query("SELECT parent_id FROM books WHERE book_id={$book_id} LIMIT 1"));
        if ($r['parent_id'] > 0) {
            $out['selected0'] = $r['parent_id'];
            $out['select1'] = get_books_for_select($r['parent_id']);
            $out['selected1'] = $book_id;
        } else {
            $out['selected0'] = $book_id;
        }
    }
    return $out;
}