diff options
author | László Németh <nemeth@numbertext.org> | 2021-06-14 20:46:17 +0200 |
---|---|---|
committer | Adolfo Jayme Barrientos <fitojb@ubuntu.com> | 2021-06-17 19:46:23 +0200 |
commit | 658e947b699ad1e08810f0fefd5c901e750ad919 (patch) | |
tree | 315162f52e43340cf06e1cd7d6cf5dc5d75ed370 /xmloff | |
parent | 585f89d031d4ffd19fca70a5c6152c10cc46bc4d (diff) |
tdf#90401 xmloff: remove personal info of comments and changes
If Options → LibreOffice → Security → Security Options
and Warnings → Options... → Security Options → Remove personal
information on saving" is enabled.
Use the same time (1970-01-01T00:00:00) for mandatory
time stamps, and replace authors and creator-initials with
"1", "2", "3" etc., also to avoid of joining adjacent
redline ranges.
Note: to see the work of the unit test in Linux command line:
(cd sw && make UITest_writer_tests7 UITEST_TEST_NAME="tdf90401.tdf90401.test_tdf90401_remove_personal_info" SAL_USE_VCLPLUGIN=gen)
Change-Id: I3b4d710dbeeee12177aff378597cd2b683ca6c25
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/117319
Tested-by: Jenkins
Reviewed-by: László Németh <nemeth@numbertext.org>
(cherry picked from commit 12da70f88517bf3c053afe1c504bb70bd27573f2)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/117301
Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
Diffstat (limited to 'xmloff')
-rw-r--r-- | xmloff/source/core/xmlexp.cxx | 3 | ||||
-rw-r--r-- | xmloff/source/draw/sdxmlexp.cxx | 16 | ||||
-rw-r--r-- | xmloff/source/text/XMLRedlineExport.cxx | 24 | ||||
-rw-r--r-- | xmloff/source/text/txtflde.cxx | 13 |
4 files changed, 46 insertions, 10 deletions
diff --git a/xmloff/source/core/xmlexp.cxx b/xmloff/source/core/xmlexp.cxx index 05d44229e321..d73783994271 100644 --- a/xmloff/source/core/xmlexp.cxx +++ b/xmloff/source/core/xmlexp.cxx @@ -459,6 +459,7 @@ SvXMLExport::SvXMLExport( m_xContext(xContext), m_implementationName(implementationName), mxAttrList( new SvXMLAttributeList ), mpNamespaceMap( new SvXMLNamespaceMap ), + mpAuthorIDs( new SvtSecurityMapPersonalInfo ), maUnitConv(xContext, util::MeasureUnit::MM_100TH, eDefaultMeasureUnit, getSaneDefaultVersion()), meClass( eClass ), mnExportFlags( nExportFlags ), @@ -484,6 +485,7 @@ SvXMLExport::SvXMLExport( mxAttrList( new SvXMLAttributeList ), msOrigFileName( rFileName ), mpNamespaceMap( new SvXMLNamespaceMap ), + mpAuthorIDs( new SvtSecurityMapPersonalInfo ), maUnitConv(xContext, util::MeasureUnit::MM_100TH, eDefaultMeasureUnit, getSaneDefaultVersion()), meClass( XML_TOKEN_INVALID ), mnExportFlags( SvXMLExportFlags::NONE ), @@ -517,6 +519,7 @@ SvXMLExport::SvXMLExport( mxAttrList( new SvXMLAttributeList ), msOrigFileName( rFileName ), mpNamespaceMap( new SvXMLNamespaceMap ), + mpAuthorIDs( new SvtSecurityMapPersonalInfo ), maUnitConv( xContext, util::MeasureUnit::MM_100TH, SvXMLUnitConverter::GetMeasureUnit(eDefaultFieldUnit), diff --git a/xmloff/source/draw/sdxmlexp.cxx b/xmloff/source/draw/sdxmlexp.cxx index 652bce79610d..db1542fc511f 100644 --- a/xmloff/source/draw/sdxmlexp.cxx +++ b/xmloff/source/draw/sdxmlexp.cxx @@ -2516,6 +2516,10 @@ void SdXMLExport::exportAnnotations( const Reference<XDrawPage>& xDrawPage ) Reference< XAnnotationEnumeration > xAnnotationEnumeration( xAnnotationAccess->createAnnotationEnumeration() ); if( xAnnotationEnumeration.is() && xAnnotationEnumeration->hasMoreElements() ) { + SvtSecurityOptions aSecOpt; + bool bRemovePersonalInfo = aSecOpt.IsOptionSet( + SvtSecurityOptions::EOption::DocWarnRemovePersonalInfo ); + OUStringBuffer sStringBuffer; do { @@ -2551,7 +2555,9 @@ void SdXMLExport::exportAnnotations( const Reference<XDrawPage>& xDrawPage ) if( !aAuthor.isEmpty() ) { SvXMLElementExport aCreatorElem( *this, XML_NAMESPACE_DC, XML_CREATOR, true, false ); - Characters(aAuthor); + Characters( bRemovePersonalInfo + ? "Author" + OUString::number( SvXMLExport::GetInfoID(aAuthor) ) + : aAuthor ); } // initials @@ -2567,7 +2573,9 @@ void SdXMLExport::exportAnnotations( const Reference<XDrawPage>& xDrawPage ) ? XML_CREATOR_INITIALS : XML_SENDER_INITIALS, true, false ); - Characters(aInitials); + Characters( bRemovePersonalInfo + ? OUString::number( SvXMLExport::GetInfoID(aInitials) ) + : aInitials ); } { @@ -2575,7 +2583,9 @@ void SdXMLExport::exportAnnotations( const Reference<XDrawPage>& xDrawPage ) css::util::DateTime aDate( xAnnotation->getDateTime() ); ::sax::Converter::convertDateTime(sStringBuffer, aDate, nullptr, true); SvXMLElementExport aDateElem( *this, XML_NAMESPACE_DC, XML_DATE, true, false ); - Characters(sStringBuffer.makeStringAndClear()); + Characters( bRemovePersonalInfo + ? "1970-01-01T00:00::00" + : sStringBuffer.makeStringAndClear() ); } css::uno::Reference < css::text::XText > xText( xAnnotation->getTextRange() ); diff --git a/xmloff/source/text/XMLRedlineExport.cxx b/xmloff/source/text/XMLRedlineExport.cxx index e309b1d86731..fad527a77b59 100644 --- a/xmloff/source/text/XMLRedlineExport.cxx +++ b/xmloff/source/text/XMLRedlineExport.cxx @@ -42,6 +42,7 @@ #include <xmloff/xmlnamespace.hxx> #include <xmloff/xmlexp.hxx> #include <xmloff/xmluconv.hxx> +#include <unotools/securityoptions.hxx> using namespace ::com::sun::star; @@ -433,6 +434,9 @@ OUString XMLRedlineExport::GetRedlineID( void XMLRedlineExport::ExportChangeInfo( const Reference<XPropertySet> & rPropSet) { + SvtSecurityOptions aSecOpt; + bool bRemovePersonalInfo = aSecOpt.IsOptionSet( + SvtSecurityOptions::EOption::DocWarnRemovePersonalInfo ); SvXMLElementExport aChangeInfo(rExport, XML_NAMESPACE_OFFICE, XML_CHANGE_INFO, true, true); @@ -445,7 +449,9 @@ void XMLRedlineExport::ExportChangeInfo( SvXMLElementExport aCreatorElem( rExport, XML_NAMESPACE_DC, XML_CREATOR, true, false ); - rExport.Characters(sTmp); + rExport.Characters(bRemovePersonalInfo + ? "Author" + OUString::number(rExport.GetInfoID(sTmp)) + : sTmp ); } aAny = rPropSet->getPropertyValue("RedlineDateTime"); @@ -457,7 +463,9 @@ void XMLRedlineExport::ExportChangeInfo( SvXMLElementExport aDateElem( rExport, XML_NAMESPACE_DC, XML_DATE, true, false ); - rExport.Characters(sBuf.makeStringAndClear()); + rExport.Characters(bRemovePersonalInfo + ? "1970-01-01T00:00:00" + : sBuf.makeStringAndClear()); } // comment as <text:p> sequence @@ -470,6 +478,9 @@ void XMLRedlineExport::ExportChangeInfo( const Sequence<PropertyValue> & rPropertyValues) { OUString sComment; + SvtSecurityOptions aSecOpt; + bool bRemovePersonalInfo = aSecOpt.IsOptionSet( + SvtSecurityOptions::EOption::DocWarnRemovePersonalInfo ); for(const PropertyValue& rVal : rPropertyValues) { @@ -479,7 +490,9 @@ void XMLRedlineExport::ExportChangeInfo( rVal.Value >>= sTmp; if (!sTmp.isEmpty()) { - rExport.AddAttribute(XML_NAMESPACE_OFFICE, XML_CHG_AUTHOR, sTmp); + rExport.AddAttribute(XML_NAMESPACE_OFFICE, XML_CHG_AUTHOR, bRemovePersonalInfo + ? "Author" + OUString::number(rExport.GetInfoID(sTmp)) + : sTmp); } } else if( rVal.Name == "RedlineComment" ) @@ -492,8 +505,9 @@ void XMLRedlineExport::ExportChangeInfo( rVal.Value >>= aDateTime; OUStringBuffer sBuf; ::sax::Converter::convertDateTime(sBuf, aDateTime, nullptr); - rExport.AddAttribute(XML_NAMESPACE_OFFICE, XML_CHG_DATE_TIME, - sBuf.makeStringAndClear()); + rExport.AddAttribute(XML_NAMESPACE_OFFICE, XML_CHG_DATE_TIME, bRemovePersonalInfo + ? "1970-01-01T00:00:00" + : sBuf.makeStringAndClear()); } else if( rVal.Name == "RedlineType" ) { diff --git a/xmloff/source/text/txtflde.cxx b/xmloff/source/text/txtflde.cxx index 962e30e995d4..93f43ee6c082 100644 --- a/xmloff/source/text/txtflde.cxx +++ b/xmloff/source/text/txtflde.cxx @@ -1746,6 +1746,10 @@ void XMLTextFieldExport::ExportFieldHelper( DBG_ASSERT(sPresentation.isEmpty(), "Unexpected presentation for annotation field"); + SvtSecurityOptions aSecOpt; + bool bRemovePersonalInfo = aSecOpt.IsOptionSet( + SvtSecurityOptions::EOption::DocWarnRemovePersonalInfo ); + // annotation element + content OUString aName; rPropSet->getPropertyValue(gsPropertyName) >>= aName; @@ -1774,11 +1778,14 @@ void XMLTextFieldExport::ExportFieldHelper( SvXMLElementExport aCreatorElem( GetExport(), XML_NAMESPACE_DC, XML_CREATOR, true, false ); - GetExport().Characters(aAuthor); + GetExport().Characters( bRemovePersonalInfo + ? "Author" + OUString::number( rExport.GetInfoID(aAuthor) ) + : aAuthor ); } // date time util::DateTime aDate( GetDateTimeProperty(gsPropertyDateTimeValue, rPropSet) ); + if ( !bRemovePersonalInfo ) { OUStringBuffer aBuffer; ::sax::Converter::convertDateTime(aBuffer, aDate, nullptr, true); @@ -1804,7 +1811,9 @@ void XMLTextFieldExport::ExportFieldHelper( ? XML_CREATOR_INITIALS : XML_SENDER_INITIALS, true, false ); - GetExport().Characters(aInitials); + GetExport().Characters( bRemovePersonalInfo + ? OUString::number( rExport.GetInfoID(aInitials) ) + : aInitials); } } |