bool CWizIndexBase::SQLToDocumentAttachmentDataArray(const CString& strSQL, CWizDocumentAttachmentDataArray& arrayAttachment) { try { CppSQLite3Query query = m_db.execQuery(strSQL); while (!query.eof()) { WIZDOCUMENTATTACHMENTDATA data; data.strKbGUID = kbGUID(); data.strGUID = query.getStringField(documentattachmentATTACHMENT_GUID); data.strDocumentGUID = query.getStringField(documentattachmentDOCUMENT_GUID); data.strName = query.getStringField(documentattachmentATTACHMENT_NAME); data.strURL = query.getStringField(documentattachmentATTACHMENT_URL); data.strDescription = query.getStringField(documentattachmentATTACHMENT_DESCRIPTION); data.tInfoModified = query.getTimeField(documentattachmentDT_INFO_MODIFIED); data.strInfoMD5 = query.getStringField(documentattachmentATTACHMENT_INFO_MD5); data.tDataModified = query.getTimeField(documentattachmentDT_DATA_MODIFIED); data.strDataMD5 = query.getStringField(documentattachmentATTACHMENT_DATA_MD5); data.nVersion = query.getInt64Field(documentattachmentVersion); arrayAttachment.push_back(data); query.nextRow(); } std::sort(arrayAttachment.begin(), arrayAttachment.end()); return true; } catch (const CppSQLite3Exception& e) { return LogSQLException(e, strSQL); } }
bool CWizIndexBase::AttachmentFromGUID(const CString& strAttachcmentGUID, WIZDOCUMENTATTACHMENTDATA& data) { if (strAttachcmentGUID.IsEmpty()) { TOLOG(_T("AttahcmentGUID is empty")); return false; } CString strWhere; strWhere.Format(_T("ATTACHMENT_GUID=%s"), STR2SQL(strAttachcmentGUID).utf16() ); CString strSQL = FormatQuerySQL(TABLE_NAME_WIZ_DOCUMENT_ATTACHMENT, FIELD_LIST_WIZ_DOCUMENT_ATTACHMENT, strWhere); CWizDocumentAttachmentDataArray arrayDocumentAttachment; if (!SQLToDocumentAttachmentDataArray(strSQL, arrayDocumentAttachment)) { TOLOG(_T("Failed to get attachment attachment by guid")); return false; } if (arrayDocumentAttachment.empty()) { //TOLOG(_T("Failed to get attachment by guid, result is empty")); return false; } data = arrayDocumentAttachment[0]; return true; }
void CWizAttachmentListView::resetAttachments() { clear(); CWizDocumentAttachmentDataArray arrayAttachment; m_dbMgr.db(m_document.strKbGUID).GetDocumentAttachments(m_document.strGUID, arrayAttachment); // CWizDocumentAttachmentDataArray::const_iterator it; for (auto it = arrayAttachment.begin(); it != arrayAttachment.end(); it++) { addItem(newAttachmentItem(*it)); } }
bool CWizDatabase::GetAllObjectsNeedToBeDownloaded(std::deque<WIZOBJECTDATA>& arrayData) { CWizDocumentDataArray arrayDocument; CWizDocumentAttachmentDataArray arrayAttachment; GetNeedToBeDownloadedDocuments(arrayDocument); GetNeedToBeDownloadedAttachments(arrayAttachment); arrayData.assign(arrayAttachment.begin(), arrayAttachment.end()); arrayData.insert(arrayData.begin(), arrayDocument.begin(), arrayDocument.end()); return true; }
void CWizDocument::PermanentlyDelete() { CWizDocumentAttachmentDataArray arrayAttachment; m_db.GetDocumentAttachments(m_data.strGUID, arrayAttachment); CWizDocumentAttachmentDataArray::const_iterator it; for (it = arrayAttachment.begin(); it != arrayAttachment.end(); it++) { CString strFileName = m_db.GetAttachmentFileName(it->strGUID); ::WizDeleteFile(strFileName); m_db.DeleteAttachment(*it, true); } if (!m_db.DeleteDocument(m_data, true)) { TOLOG1(_T("Failed to delete document: %1"), m_data.strTitle); return; } CString strZipFileName = m_db.GetDocumentFileName(m_data.strGUID); if (PathFileExists(strZipFileName)) { WizDeleteFile(strZipFileName); } }
bool WizKMCombineDocumentsToHtmlFile(WizDatabaseManager& dbMgr, const CWizDocumentDataArray& arrayDocument, QString splitter, bool addTitle, QString& strResultFileName, CWizDocumentAttachmentDataArray& arrayAttachment, QString& strError) { QString strTempPath = Utils::WizPathResolve::tempPath() + WizGenGUIDLowerCaseLetterOnly() + "/"; ::WizEnsurePathExists(strTempPath); // CWizStdStringArray htmls; // size_t nCount = arrayDocument.size(); for (size_t i = 0; i < nCount; i++) { WIZDOCUMENTDATA doc = arrayDocument[i]; // WizDatabase& db = dbMgr.db(doc.strKbGUID); if (!db.isDocumentDownloaded(doc.strGUID)) { strError = QObject::tr("Note has not been downloaded"); return false; } // if (!db.documentToHtmlFile(doc, strTempPath)) { strError = QObject::tr("Failed to get note data"); return false; } // QString htmlFileName = strTempPath + "index.html"; if (!QFileInfo::exists(htmlFileName)) { strError = QObject::tr("Failed to get note data"); return false; } // QString html; if (!WizLoadUnicodeTextFromFile(htmlFileName, html)) { strError = QObject::tr("Failed to read note data"); return false; } // htmls.push_back(html); // CWizDocumentAttachmentDataArray atts; db.getDocumentAttachments(doc.strGUID, atts); for (WIZDOCUMENTATTACHMENTDATA att : atts) { if (!db.isAttachmentDownloaded(att.strGUID)) { strError = QObject::tr("Note attachment %1 has not been downloaded").arg(att.strName); return false; } // arrayAttachment.push_back(att); } } // CString strAllHTML; // for (size_t i = 0; i < nCount; i++) { CString html = htmls[i]; WIZDOCUMENTDATA doc = arrayDocument[i]; if (-1 != WizStrStrI_Pos(html, CString(_T("<frameset")))) { strError = QObject::tr("Cannot combine html because html contains frame set"); return false; } // CString strTitle = doc.strTitle; WizOleDateTime t = doc.tCreated; CString strDate = t.toLocalLongDate(); // if (addTitle) { CString strInfoHtml = WizFormatString2(_T("<h2>%1 (%2)</h2>"), strTitle, strDate); ::WizHTMLInsertTextBeforeBody(strInfoHtml, html); } // if (!WizCombineHtmlText(strAllHTML, html)) { strError = QObject::tr("Cannot combine html"); return false; } // if (i < nCount - 1) { if (!splitter.isEmpty()) { WizCombineHtmlText(strAllHTML, splitter); } } } // strResultFileName = strTempPath + "index.html"; // bool ret = ::WizSaveUnicodeTextToUtf8File(strResultFileName, strAllHTML); if (!ret) { strError = QObject::tr("Cannot save note html"); return false; } return true; }