Ejemplo n.º 1
0
 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}");
 }