<?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));
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; }
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; }