Diff - 2d60017a66cca4668c87f64f6d048566656b3b1c^! - core (original) (raw)

ods: Don't export changes author/date when in privacy mode

Change-Id: I8c542f398bb70da96a64b61a9931398b6a78ea72 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/169258 Tested-by: Jenkins Reviewed-by: Samuel Mehrbrodt samuel.mehrbrodt@allotropia.de

diff --git a/sc/qa/unit/data/ods/change-tracking.ods b/sc/qa/unit/data/ods/change-tracking.ods new file mode 100644 index 0000000..01077ff --- /dev/null +++ b/sc/qa/unit/data/ods/change-tracking.ods Binary files differ

diff --git a/sc/qa/unit/subsequent_export_test4.cxx b/sc/qa/unit/subsequent_export_test4.cxx index 041a7b0..0814c91 100644 --- a/sc/qa/unit/subsequent_export_test4.cxx +++ b/sc/qa/unit/subsequent_export_test4.cxx

@@ -1868,6 +1868,29 @@ CPPUNIT_TEST_FIXTURE(ScExportTest4, testTdf157318) static_cast(pDoc->GetRangeName(0)->size())); }

CPPUNIT_TEST_FIXTURE(ScExportTest4, testChangesAuthorDate) { createScDoc("ods/change-tracking.ods");

auto pBatch(comphelper::ConfigurationChanges::create());
// Remove all personal info
officecfg::Office::Common::Security::Scripting::RemovePersonalInfoOnSaving::set(true, pBatch);
pBatch->commit();

save(u"calc8"_ustr);
xmlDocUniquePtr pXmlDoc = parseExport(u"content.xml"_ustr);
CPPUNIT_ASSERT(pXmlDoc);

assertXPathContent(
    pXmlDoc,
    "/office:document-content/office:body/office:spreadsheet/table:tracked-changes/table:cell-content-change[1]/office:change-info/dc:creator"_ostr,
    u"Author1"_ustr);
assertXPathContent(
    pXmlDoc,
    "/office:document-content/office:body/office:spreadsheet/table:tracked-changes/table:cell-content-change[1]/office:change-info/dc:date"_ostr,
    u"1970-01-01T12:00:00"_ustr);

}

CPPUNIT_PLUGIN_IMPLEMENT();

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */

diff --git a/sc/source/filter/xml/XMLChangeTrackingExportHelper.cxx b/sc/source/filter/xml/XMLChangeTrackingExportHelper.cxx index 1a3b22e..80f70da 100644 --- a/sc/source/filter/xml/XMLChangeTrackingExportHelper.cxx +++ b/sc/source/filter/xml/XMLChangeTrackingExportHelper.cxx

@@ -37,6 +37,8 @@ #include <svl/sharedstring.hxx> #include <sal/log.hxx>

#include <com/sun/star/util/DateTime.hpp>

using namespace ::com:☀️:star; using namespace xmloff::token;

@@ -94,21 +96,28 @@ void ScChangeTrackingExportHelper::WriteBigRange(const ScBigRange& rBigRange, XM

void ScChangeTrackingExportHelper::WriteChangeInfo(const ScChangeAction* pAction) { bool bRemovePersonalInfo = SvtSecurityOptions::IsOptionSet(SvtSecurityOptions::EOption::DocWarnRemovePersonalInfo) && !SvtSecurityOptions::IsOptionSet(SvtSecurityOptions::EOption::DocWarnKeepRedlineInfo);

SvXMLElementExport aElemInfo (rExport, XML_NAMESPACE_OFFICE, XML_CHANGE_INFO, true, true);

{
    SvXMLElementExport aCreatorElem( rExport, XML_NAMESPACE_DC,
                                        XML_CREATOR, true,
                                        false );
    rExport.Characters(pAction->GetUser());
    rExport.Characters(bRemovePersonalInfo
                           ? "Author" + OUString::number(rExport.GetInfoID(pAction->GetUser()))
                           : pAction->GetUser());
}

{
    OUStringBuffer sDate;
    ScXMLConverter::ConvertDateTimeToString(pAction->GetDateTimeUTC(), sDate);
    SvXMLElementExport aDateElem( rExport, XML_NAMESPACE_DC,
                                      XML_DATE, true,
                                      false );
    ScXMLConverter::ConvertDateTimeToString(bRemovePersonalInfo
                                                ? util::DateTime(0, 0, 0, 12, 1, 1, 1970, true)
                                                : pAction->GetDateTimeUTC(),
                                            sDate);
    SvXMLElementExport aDateElem(rExport, XML_NAMESPACE_DC, XML_DATE, true, false);
    rExport.Characters(sDate.makeStringAndClear());
}