} } } $smarty->assign('anaphora', get_anaphora_by_book($book_id)); $smarty->assign('book', $book); $smarty->assign('token_groups', $groups); $smarty->display('syntax/book.tpl'); } else { throw new UnexpectedValueException(); } } elseif ($action == 'ner') { //check_permission(PERM_SYNTAX); check_logged(); if (isset($_GET['book_id']) && ($book_id = $_GET['book_id'])) { $tagset_id = get_current_tagset(); $is_book_moderator = is_user_book_moderator($book_id, $tagset_id); $book = get_book_page($book_id, TRUE, TRUE); // список из статусов => список id параграфов $paragraphs_status = get_ne_paragraph_status($book_id, $_SESSION['user_id'], $tagset_id); foreach ($book['paragraphs'] as &$paragraph) { // и для модератора, и для простого юзера забираем "свою" разметку $ne = get_ne_by_paragraph($paragraph['id'], $_SESSION['user_id'], $tagset_id); $mentions = get_ne_by_paragraph($paragraph['id'], $_SESSION['user_id'], $tagset_id, TRUE); $paragraph['named_entities'] = isset($ne['entities']) ? $ne['entities'] : array(); $paragraph['mentions'] = isset($mentions['entities']) ? $mentions['entities'] : array(); $paragraph['annotation_id'] = isset($ne['annot_id']) ? $ne['annot_id'] : 0; $paragraph['ne_by_token'] = get_ne_tokens_by_paragraph($paragraph['id'], $_SESSION['user_id'], $tagset_id); $paragraph['comments'] = get_comments_by_paragraph($paragraph['id'], $_SESSION['user_id'], $tagset_id); $paragraph['mine'] = false; if (in_array($paragraph['id'], $paragraphs_status['unavailable']) or in_array($paragraph['id'], $paragraphs_status['done_by_user'])) { $paragraph['disabled'] = true;
function set_ne_book_status($book_id, $tagset_id, $status) { if (!is_user_book_moderator($book_id, $tagset_id)) { throw new Exception("Permission missing for this book"); } if (!in_array($status, array(NE_STATUS_IN_PROGRESS, NE_STATUS_FINISHED))) { throw new UnexpectedValueException(); } sql_pe("\n UPDATE ne_paragraphs\n LEFT JOIN paragraphs USING (par_id)\n SET status = ?\n WHERE book_id = ? AND tagset_id = ?", array($status, $book_id, $tagset_id)); }