~bibledit/bibledit/ubuntu-cloud-beta

« back to all changes in this revision

Viewing changes to edit/update.cpp

  • Committer: Teus Benschop
  • Date: 2022-10-14 16:03:26 UTC
  • Revision ID: teusjannette@gmail.com-20221014160326-42ybrpft4bblpruk
new upstream version

Show diffs side-by-side

added added

removed removed

Lines of Context:
53
53
bool edit_update_acl (void * webserver_request)
54
54
{
55
55
  if (Filter_Roles::access_control (webserver_request, Filter_Roles::translator ())) return true;
56
 
  auto [ read, write ] = AccessBible::Any (webserver_request);
 
56
  auto [ read, write ] = access_bible::any (webserver_request);
57
57
  return read;
58
58
}
59
59
 
109
109
 
110
110
  // Checksums of the loaded and edited html.
111
111
  if (good2go) {
112
 
    if (Checksum_Logic::get (loaded_html) != checksum1) {
 
112
    if (checksum_logic::get (loaded_html) != checksum1) {
113
113
      request->response_code = 409;
114
114
      messages.push_back (translate ("Checksum error"));
115
115
      good2go = false;
116
116
    }
117
117
  }
118
118
  if (good2go) {
119
 
    if (Checksum_Logic::get (edited_html) != checksum2) {
 
119
    if (checksum_logic::get (edited_html) != checksum2) {
120
120
      request->response_code = 409;
121
121
      messages.push_back (translate ("Checksum error"));
122
122
      good2go = false;
142
142
 
143
143
  bool bible_write_access = false;
144
144
  if (good2go) {
145
 
    bible_write_access = AccessBible::BookWrite (request, string(), bible, book);
 
145
    bible_write_access = access_bible::book_write (request, string(), bible, book);
146
146
  }
147
147
 
148
148
 
226
226
      // Do a merge while giving priority to the USFM already in the chapter.
227
227
      string merged_chapter_usfm = filter_merge_run (loaded_chapter_usfm, edited_chapter_usfm, existing_chapter_usfm, true, conflicts);
228
228
      // Mail the user if there is a merge anomaly.
229
 
      bible_logic_optional_merge_irregularity_email (bible, book, chapter, username, loaded_chapter_usfm, edited_chapter_usfm, merged_chapter_usfm);
 
229
      bible_logic::optional_merge_irregularity_email (bible, book, chapter, username, loaded_chapter_usfm, edited_chapter_usfm, merged_chapter_usfm);
230
230
      filter_merge_add_book_chapter (conflicts, book, chapter);
231
 
      bible_logic_merge_irregularity_mail ({username}, conflicts);
 
231
      bible_logic::merge_irregularity_mail ({username}, conflicts);
232
232
      // Let the merged data now become the edited data (so it gets saved properly).
233
233
      edited_chapter_usfm = merged_chapter_usfm;
234
234
    }
249
249
  // It might cause confusion more than it clarifies.
250
250
  //if (good2go && bible_write_access && text_was_edited) {
251
251
    //if (loaded_chapter_usfm != existing_chapter_usfm) {
252
 
      //bible_logic_recent_save_email (bible, book, chapter, username, loaded_chapter_usfm, existing_chapter_usfm);
 
252
      //bible_logic::recent_save_email (bible, book, chapter, username, loaded_chapter_usfm, existing_chapter_usfm);
253
253
    //}
254
254
  //}
255
255
 
267
267
  string message;
268
268
  if (good2go && bible_write_access && text_was_edited) {
269
269
    message = filter::usfm::safely_store_chapter (request, bible, book, chapter, edited_chapter_usfm, explanation);
270
 
    bible_logic_unsafe_save_mail (message, explanation, username, edited_chapter_usfm, book, chapter);
 
270
    bible_logic::unsafe_save_mail (message, explanation, username, edited_chapter_usfm, book, chapter);
271
271
    if (!message.empty ()) messages.push_back (message);
272
272
  }
273
273
 
341
341
    vector <int> sizes;
342
342
    vector <string> operators;
343
343
    vector <string> content;
344
 
    bible_logic_html_to_editor_updates (editor_html, server_html, positions, sizes, operators, content);
 
344
    bible_logic::html_to_editor_updates (editor_html, server_html, positions, sizes, operators, content);
345
345
    // Encode the condensed differences for the response to the Javascript editor.
346
346
    for (size_t i = 0; i < positions.size(); i++) {
347
347
      response.append ("#_be_#");
349
349
      response.append ("#_be_#");
350
350
      string operation = operators[i];
351
351
      response.append (operation);
352
 
      if (operation == bible_logic_insert_operator ()) {
 
352
      if (operation == bible_logic::insert_operator ()) {
353
353
        string text = content[i];
354
354
        string character = unicode_string_substr (text, 0, 1);
355
355
        response.append ("#_be_#");
362
362
        response.append ("#_be_#");
363
363
        response.append (convert_to_string (sizes[i]));
364
364
      }
365
 
      else if (operation == bible_logic_delete_operator ()) {
 
365
      else if (operation == bible_logic::delete_operator ()) {
366
366
        // When deleting a UTF-16 character encoded in 4 bytes,
367
367
        // then the size in Quilljs is 2 instead of 1.
368
368
        // So always give the size when deleting a character.
369
369
        response.append ("#_be_#");
370
370
        response.append (convert_to_string (sizes[i]));
371
371
      }
372
 
      else if (operation == bible_logic_format_paragraph_operator ()) {
 
372
      else if (operation == bible_logic::format_paragraph_operator ()) {
373
373
        response.append ("#_be_#");
374
374
        response.append (content[i]);
375
375
      }
376
 
      else if (operation == bible_logic_format_character_operator ()) {
 
376
      else if (operation == bible_logic::format_character_operator ()) {
377
377
        response.append ("#_be_#");
378
378
        response.append (content[i]);
379
379
      }
401
401
 
402
402
  // Test using the Cloud together with client devices with send and receive.
403
403
  
404
 
  bool write = AccessBible::BookWrite (webserver_request, username, bible, book);
405
 
  response = Checksum_Logic::send (response, write);
 
404
  bool write = access_bible::book_write (webserver_request, username, bible, book);
 
405
  response = checksum_logic::send (response, write);
406
406
 
407
407
  // Ready.
408
408
  //this_thread::sleep_for(chrono::seconds(5));