示例#1
0
    if (!$user_id) {
        throw new Exception('Incorrect token');
    }
}
try {
    switch ($action) {
        case 'search':
            if (isset($_GET['all_forms'])) {
                $all_forms = (bool) $_GET['all_forms'];
            } else {
                $all_forms = false;
            }
            $answer['answer'] = get_search_results($_GET['query'], !$all_forms);
            foreach ($answer['answer']['results'] as &$res) {
                $parts = array();
                foreach (get_book_parents($res['book_id'], true) as $p) {
                    $parts[] = $p['title'];
                }
                $res['text_fullname'] = join(': ', array_reverse($parts));
            }
            break;
        case 'login':
            $user_id = user_check_password($_POST['login'], $_POST['password']);
            if ($user_id) {
                $token = remember_user($user_id, false, false);
                $answer['answer'] = array('user_id' => $user_id, 'token' => $token);
            } else {
                $answer['error'] = 'Incorrect login or password';
            }
            break;
        case 'get_available_morph_tasks':
示例#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;
}