public function recover_post() { if (!fse_try_to_login()) { header("location:/fse_login"); return; } $project_id = $this->post('projectID'); $domain_handle = $this->post('domainHandle'); $volume_handle = $this->post('volumeHandle'); $part_handle = $this->post('partHandle'); $chapter_handle = $this->post('chapterHandle'); $section_id = $this->post('sectionID'); $curr_ver_code = (int) $this->post('currentVerCode'); $form_token = $this->post('formToken'); $page_path = ProjectInfo::assemblePath($project_id, $domain_handle, $volume_handle, $part_handle, $chapter_handle); $page = Page::getByPath($page_path); $page_id = $page->getCollectionID(); if ($_SESSION['formToken4RecoverPost'] != $form_token) { set_page_action_status($page_id, t('Recover Post'), 'error', t('Bad request or session expired.')); header("Location: {$page_path}"); return; } unset($_SESSION['formToken4RecoverPost']); if ($curr_ver_code <= 0) { set_page_action_status($page_id, t('Recover Post'), 'error', t('Already be the original edition.')); header("Location: {$page_path}"); return; } $db = Loader::db(); $doc_lang = substr($project_id, -2); $db->Execute("UPDATE fsen_document_sections_{$doc_lang} SET status=0 WHERE id=?", array($section_id)); $section_manager = new DocSectionManager(); $res = $section_manager->setSectionVersion($project_id, $domain_handle, $section_id, $curr_ver_code - 1); if ($res != DocSectionManager::EC_OK) { set_page_action_status($page_id, t('Recover Post'), 'error', $section_manager->getErrorMessage($res)); header("Location: {$page_path}"); return; } set_page_action_status($page_id, t('Recover Post'), 'success', t('Succeed to recover the post.')); header("Location: {$page_path}"); }