mirror of
https://github.com/inverse-inc/sogo.git
synced 2026-03-03 14:16:23 +00:00
Added missing files from OC changes
This commit is contained in:
35
OpenChange/MAPIStoreCalTaskFolder.h
Normal file
35
OpenChange/MAPIStoreCalTaskFolder.h
Normal file
@@ -0,0 +1,35 @@
|
||||
/* MAPIStoreCalTaskFolder.h - this file is part of SOGo
|
||||
*
|
||||
* Copyright (C) 2016 Enrique J. Hernandez
|
||||
*
|
||||
* Author: Enrique J. Hernandez <ejhernandez@zentyal.com>
|
||||
*
|
||||
* This file is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This file is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef MAPISTORECALTASKFOLDER_H
|
||||
#define MAPISTORECALTASKFOLDER_H
|
||||
|
||||
#import "MAPIStoreGCSFolder.h"
|
||||
|
||||
/* This class is intended to share code between Calendar and Tasks as
|
||||
of nowadays share the table */
|
||||
|
||||
@interface MAPIStoreCalTaskFolder : MAPIStoreGCSFolder
|
||||
|
||||
@end
|
||||
|
||||
#endif /* MAPISTORECALTASKFOLDER_H */
|
||||
101
OpenChange/MAPIStoreCalTaskFolder.m
Normal file
101
OpenChange/MAPIStoreCalTaskFolder.m
Normal file
@@ -0,0 +1,101 @@
|
||||
/* MAPIStoreCalTaskFolder.m - this file is part of SOGo
|
||||
*
|
||||
* Copyright (C) 2016 Enrique J. Hernandez
|
||||
*
|
||||
* Author: Enrique J. Hernandez <ejhernandez@zentyal.com>
|
||||
*
|
||||
* This file is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 3, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This file is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
#import <Foundation/NSArray.h>
|
||||
#import <Foundation/NSDictionary.h>
|
||||
#import <Foundation/NSSet.h>
|
||||
#import <Foundation/NSString.h>
|
||||
|
||||
#import <SOGo/SOGoPermissions.h>
|
||||
|
||||
#import "MAPIStoreCalTaskFolder.h"
|
||||
|
||||
@implementation MAPIStoreCalTaskFolder
|
||||
|
||||
- (NSArray *) expandRoles: (NSArray *) roles
|
||||
{
|
||||
static NSDictionary *rolesMap = nil;
|
||||
NSArray *subRoles;
|
||||
NSMutableSet *expandedRoles;
|
||||
NSString *role, *subRole;
|
||||
NSUInteger i, max, j;
|
||||
|
||||
if (!rolesMap)
|
||||
{
|
||||
/* Build the map of array permissions */
|
||||
rolesMap = [[NSDictionary alloc] initWithObjects: [NSArray arrayWithObjects:
|
||||
[NSArray arrayWithObjects: SOGoCalendarRole_PublicDAndTViewer,
|
||||
SOGoCalendarRole_PublicViewer,
|
||||
SOGoCalendarRole_PublicResponder,
|
||||
SOGoCalendarRole_PublicModifier, nil],
|
||||
[NSArray arrayWithObjects: SOGoCalendarRole_ConfidentialDAndTViewer,
|
||||
SOGoCalendarRole_ConfidentialViewer,
|
||||
SOGoCalendarRole_ConfidentialResponder,
|
||||
SOGoCalendarRole_ConfidentialModifier, nil],
|
||||
[NSArray arrayWithObjects: SOGoCalendarRole_PrivateDAndTViewer,
|
||||
SOGoCalendarRole_PrivateViewer,
|
||||
SOGoCalendarRole_PrivateResponder,
|
||||
SOGoCalendarRole_PrivateModifier, nil],
|
||||
[NSArray arrayWithObjects: SOGoCalendarRole_ComponentDAndTViewer,
|
||||
SOGoCalendarRole_ComponentViewer,
|
||||
SOGoCalendarRole_ComponentResponder,
|
||||
SOGoCalendarRole_ComponentModifier, nil],
|
||||
nil]
|
||||
forKeys: [NSArray arrayWithObjects: @"Public", @"Confidential", @"Private",
|
||||
@"Component", nil]];
|
||||
}
|
||||
|
||||
max = [roles count];
|
||||
expandedRoles = [NSMutableSet set];
|
||||
for (i = 0; i < max; i++)
|
||||
{
|
||||
role = [roles objectAtIndex: i];
|
||||
subRoles = nil;
|
||||
if ([role hasPrefix: @"Public"])
|
||||
subRoles = [rolesMap objectForKey: @"Public"];
|
||||
else if ([role hasPrefix: @"Confidential"])
|
||||
subRoles = [rolesMap objectForKey: @"Confidential"];
|
||||
else if ([role hasPrefix: @"Private"])
|
||||
subRoles = [rolesMap objectForKey: @"Private"];
|
||||
else if ([role hasPrefix: @"Component"])
|
||||
subRoles = [rolesMap objectForKey: @"Component"];
|
||||
|
||||
if (subRoles)
|
||||
{
|
||||
for (j = 0; j < [subRoles count]; j++)
|
||||
{
|
||||
subRole = [subRoles objectAtIndex: j];
|
||||
[expandedRoles addObject: subRole];
|
||||
|
||||
if ([subRole isEqualToString: role])
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
[expandedRoles addObject: role];
|
||||
}
|
||||
}
|
||||
|
||||
return [expandedRoles allObjects];
|
||||
}
|
||||
|
||||
@end
|
||||
40
OpenChange/MAPIStoreCalTaskMessage.h
Normal file
40
OpenChange/MAPIStoreCalTaskMessage.h
Normal file
@@ -0,0 +1,40 @@
|
||||
/* MAPIStoreCalTaskMessage.h - this file is part of SOGo
|
||||
*
|
||||
* Copyright (C) 2016 Enrique J. Hernandez
|
||||
*
|
||||
* Author: Enrique J. Hernandez <ejhernandez@zentyal.com>
|
||||
*
|
||||
* This file is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This file is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#ifndef MAPISTORECALTASKMESSAGE_H
|
||||
#define MAPISTORECALTASKMESSAGE_H
|
||||
|
||||
#import "MAPIStoreGCSMessage.h"
|
||||
|
||||
/* This class is intended to share common logic for Calendar and Tasks
|
||||
as of today they are stored in the same table. This is relevant for
|
||||
permissions */
|
||||
@interface MAPIStoreCalTaskMessage : MAPIStoreGCSMessage
|
||||
{
|
||||
}
|
||||
|
||||
/* Get the sensitivity (access class) from a message */
|
||||
- (NSUInteger) sensitivity;
|
||||
|
||||
@end
|
||||
|
||||
#endif /* MAPISTORECALTASKMESSAGE_H */
|
||||
107
OpenChange/MAPIStoreCalTaskMessage.m
Normal file
107
OpenChange/MAPIStoreCalTaskMessage.m
Normal file
@@ -0,0 +1,107 @@
|
||||
/* MAPIStoreCalTaskMessage.h - this file is part of SOGo
|
||||
*
|
||||
* Copyright (C) 2016 Enrique J. Hernandez
|
||||
*
|
||||
* Author: Enrique J. Hernandez <ejhernandez@zentyal.com>
|
||||
*
|
||||
* This file is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This file is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
#import <Foundation/NSArray.h>
|
||||
#import <Foundation/NSString.h>
|
||||
|
||||
#import <NGObjWeb/WOContext+SoObjects.h>
|
||||
|
||||
#import <SOGo/SOGoPermissions.h>
|
||||
|
||||
#import "MAPIStoreFolder.h"
|
||||
#import "MAPIStoreCalTaskMessage.h"
|
||||
|
||||
@implementation MAPIStoreCalTaskMessage
|
||||
|
||||
/* It must be implemented by subclasses */
|
||||
- (NSUInteger) sensitivity
|
||||
{
|
||||
[self subclassResponsibility: _cmd];
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
- (NSArray *) expandRoles: (NSArray *) roles
|
||||
{
|
||||
return [container expandRoles: roles];
|
||||
}
|
||||
|
||||
- (BOOL) subscriberCanModifyMessage
|
||||
{
|
||||
BOOL rc;
|
||||
NSArray *roles;
|
||||
|
||||
roles = [self activeUserRoles];
|
||||
|
||||
if (isNew)
|
||||
rc = [roles containsObject: SOGoRole_ObjectCreator];
|
||||
else
|
||||
rc = ([roles containsObject: SOGoCalendarRole_ComponentModifier]
|
||||
|| [roles containsObject: SOGoCalendarRole_ComponentResponder]);
|
||||
|
||||
/* Check if the message is owned and it has permission to edit it */
|
||||
if (!rc && [roles containsObject: MAPIStoreRightEditOwn])
|
||||
{
|
||||
NSString *currentUser;
|
||||
|
||||
currentUser = [[container context] activeUser];
|
||||
rc = [currentUser isEqual: [self ownerUser]];
|
||||
}
|
||||
|
||||
if (!rc)
|
||||
{
|
||||
NSUInteger sensitivity;
|
||||
|
||||
/* Get sensitivity of the message to check if the user can
|
||||
modify the message */
|
||||
sensitivity = [self sensitivity];
|
||||
/* FIXME: Use OpenChange constant names */
|
||||
switch (sensitivity)
|
||||
{
|
||||
case 0: /* PUBLIC */
|
||||
rc = [roles containsObject: SOGoCalendarRole_PublicModifier]
|
||||
|| [roles containsObject: SOGoCalendarRole_PublicResponder];
|
||||
break;
|
||||
case 1: /* PERSONAL */
|
||||
case 2: /* PRIVATE */
|
||||
rc = [roles containsObject: SOGoCalendarRole_PrivateModifier]
|
||||
|| [roles containsObject: SOGoCalendarRole_PrivateResponder];
|
||||
break;
|
||||
case 3: /* CONFIDENTIAL */
|
||||
rc = [roles containsObject: SOGoCalendarRole_ConfidentialModifier]
|
||||
|| [roles containsObject: SOGoCalendarRole_ConfidentialResponder];
|
||||
}
|
||||
}
|
||||
return rc;
|
||||
}
|
||||
|
||||
- (BOOL) subscriberCanReadMessage
|
||||
{
|
||||
NSArray *roles;
|
||||
|
||||
roles = [self activeUserRoles];
|
||||
|
||||
return ([roles containsObject: SOGoCalendarRole_ComponentViewer]
|
||||
|| [roles containsObject: SOGoCalendarRole_ComponentDAndTViewer]
|
||||
|| [self subscriberCanModifyMessage]);
|
||||
}
|
||||
|
||||
@end
|
||||
1
Tests/Unit/Fixtures/bad_hex_and_cr.rtf
Normal file
1
Tests/Unit/Fixtures/bad_hex_and_cr.rtf
Normal file
File diff suppressed because one or more lines are too long
1
Tests/Unit/Fixtures/cyr_event_ru_editor.rtf
Normal file
1
Tests/Unit/Fixtures/cyr_event_ru_editor.rtf
Normal file
File diff suppressed because one or more lines are too long
6
Tests/Unit/Fixtures/escapes.rtf
Normal file
6
Tests/Unit/Fixtures/escapes.rtf
Normal file
File diff suppressed because one or more lines are too long
1
Tests/Unit/Fixtures/mini_russian.rtf
Normal file
1
Tests/Unit/Fixtures/mini_russian.rtf
Normal file
File diff suppressed because one or more lines are too long
1
Tests/Unit/Fixtures/spanish_accents.rtf
Normal file
1
Tests/Unit/Fixtures/spanish_accents.rtf
Normal file
File diff suppressed because one or more lines are too long
21
Tests/Unit/Fixtures/zentyal_crash_2058.rtf
Normal file
21
Tests/Unit/Fixtures/zentyal_crash_2058.rtf
Normal file
@@ -0,0 +1,21 @@
|
||||
{\rtf1\ansi\deff3\adeflang1025
|
||||
{\fonttbl{\f0\froman\fprq2\fcharset0 Times New Roman;}{\f1\froman\fprq2\fcharset2 Symbol;}{\f2\fswiss\fprq2\fcharset0 Arial;}{\f3\froman\fprq2\fcharset0 Times New Roman;}{\f4\fs
|
||||
wiss\fprq2\fcharset0 Arial;}{\f5\fnil\fprq2\fcharset1 Ubuntu;}{\f6\fnil\fprq2\fcharset0 DejaVu Sans;}{\f7\fnil\fprq2\fcharset0 Lohit Hindi;}{\f8\fnil\fprq0\fcharset1 Lohit Hindi
|
||||
;}}
|
||||
{\colortbl;\red0\green0\blue0;\red128\green128\blue128;}
|
||||
{\stylesheet{\s0\snext0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\dbch\af6\langfe2052\dbch\af7\afs24\alang1081\loch\f3\fs24\lang1033 Normal;}
|
||||
{\s15\sbasedon0\snext16\sb240\sa120\keepn\dbch\af6\dbch\af7\afs28\loch\f4\fs28 Heading;}
|
||||
{\s16\sbasedon0\snext16\sb0\sa120 Text Body;}
|
||||
{\s17\sbasedon16\snext17\sb0\sa120\dbch\af8 List;}
|
||||
{\s18\sbasedon0\snext18\sb120\sa120\noline\i\dbch\af8\afs24\ai\fs24 Caption;}
|
||||
{\s19\sbasedon0\snext19\noline\dbch\af8 Index;}
|
||||
}{\info{\creatim\yr2014\mo8\dy4\hr16\min16}{\revtim\yr0\mo0\dy0\hr0\min0}{\printim\yr0\mo0\dy0\hr0\min0}{\comment LibreOffice}{\vern67175170}}\deftab709
|
||||
\viewscale100
|
||||
{\*\pgdsctbl
|
||||
{\pgdsc0\pgdscuse451\pgwsxn11906\pghsxn16838\marglsxn1134\margrsxn1134\margtsxn1134\margbsxn1134\pgdscnxt0 Default Style;}}
|
||||
\formshade\paperh16838\paperw11906\margl1134\margr1134\margt1134\margb1134\sectd\sbknone\sectunlocked1\pgndec\pgwsxn11906\pghsxn16838\marglsxn1134\margrsxn1134\margtsxn1134\marg
|
||||
bsxn1134\ftnbj\ftnstart1\ftnrstcont\ftnnar\aenddoc\aftnrstcont\aftnstart1\aftnnrlc
|
||||
\pgndec\pard\plain \s0\nowidctlpar{\*\hyphen2\hyphlead2\hyphtrail2\hyphmax0}\cf0\kerning1\dbch\af6\langfe2052\dbch\af7\afs24\alang1081\loch\f3\fs24\lang1033{\rtlch \ltrch\loch\l
|
||||
och\f5000
|
||||
foobar}
|
||||
\par }
|
||||
1
Tests/Unit/Fixtures/zentyal_crash_2089.rtf
Normal file
1
Tests/Unit/Fixtures/zentyal_crash_2089.rtf
Normal file
File diff suppressed because one or more lines are too long
33
Tests/Unit/Fixtures/zentyal_crash_6330.rtf
Normal file
33
Tests/Unit/Fixtures/zentyal_crash_6330.rtf
Normal file
File diff suppressed because one or more lines are too long
378
Tests/Unit/Fixtures/zentyal_crash_8346.rtf
Normal file
378
Tests/Unit/Fixtures/zentyal_crash_8346.rtf
Normal file
File diff suppressed because one or more lines are too long
101
Tests/Unit/TestNGMimeType.m
Normal file
101
Tests/Unit/TestNGMimeType.m
Normal file
@@ -0,0 +1,101 @@
|
||||
/* TestNGMimeAddressHeaderFieldGenerator.m - this file is part of SOGo
|
||||
*
|
||||
* Copyright (C) 2016
|
||||
*
|
||||
*
|
||||
* This file is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2, or (at your option)
|
||||
* any later version.
|
||||
*
|
||||
* This file is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; see the file COPYING. If not, write to
|
||||
* the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
|
||||
* Boston, MA 02111-1307, USA.
|
||||
*/
|
||||
|
||||
#import <NGMime/NGMimeType.h>
|
||||
#import <NGExtensions/NSString+Encoding.h>
|
||||
#import "SOGoTest.h"
|
||||
#include <stdio.h>
|
||||
|
||||
@interface TestNGMimeType : SOGoTest
|
||||
@end
|
||||
|
||||
@implementation TestNGMimeType
|
||||
|
||||
- (void) test_EncodingForCharset
|
||||
{
|
||||
int i;
|
||||
NSArray *cases = [NSArray arrayWithObjects:
|
||||
@"utf8",
|
||||
[NSNumber numberWithInt: NSUTF8StringEncoding],
|
||||
[NSNumber numberWithInt: NSUTF8StringEncoding],
|
||||
|
||||
@"utf-8",
|
||||
[NSNumber numberWithInt: NSUTF8StringEncoding],
|
||||
[NSNumber numberWithInt: NSUTF8StringEncoding],
|
||||
|
||||
@"ascii",
|
||||
[NSNumber numberWithInt: NSASCIIStringEncoding],
|
||||
[NSNumber numberWithInt: NSASCIIStringEncoding],
|
||||
|
||||
@"us-ascii",
|
||||
[NSNumber numberWithInt: NSASCIIStringEncoding],
|
||||
[NSNumber numberWithInt: NSASCIIStringEncoding],
|
||||
|
||||
@"iso-8859-5",
|
||||
[NSNumber numberWithInt: NSISOCyrillicStringEncoding],
|
||||
[NSNumber numberWithInt: NSISOCyrillicStringEncoding],
|
||||
|
||||
@"windows-1251",
|
||||
[NSNumber numberWithInt: NSWindowsCP1251StringEncoding],
|
||||
[NSNumber numberWithInt: NSWindowsCP1251StringEncoding],
|
||||
|
||||
@"inexistent_encoding",
|
||||
[NSNumber numberWithInt: NSISOLatin1StringEncoding],
|
||||
[NSNumber numberWithInt: 0],
|
||||
|
||||
@"nil",
|
||||
[NSNumber numberWithInt: [NSString defaultCStringEncoding]],
|
||||
[NSNumber numberWithInt: 0],
|
||||
|
||||
@"",
|
||||
[NSNumber numberWithInt: [NSString defaultCStringEncoding]],
|
||||
[NSNumber numberWithInt: 0],
|
||||
|
||||
nil];
|
||||
|
||||
for (i=0; i < [cases count]; i+=3)
|
||||
{
|
||||
NSStringEncoding fromNGMimeType, fromNSString;
|
||||
NSString *charset = [cases objectAtIndex: i];
|
||||
NSStringEncoding fromNGMimeTypeExpected = [[cases objectAtIndex: i+1] intValue];
|
||||
NSStringEncoding fromNSStringExpected = [[cases objectAtIndex: i+2] intValue];
|
||||
NSString *error;
|
||||
|
||||
if ([charset isEqualToString: @"nil"])
|
||||
charset = nil;
|
||||
|
||||
fromNGMimeType = [NGMimeType stringEncodingForCharset: charset];
|
||||
error = [NSString
|
||||
stringWithFormat:
|
||||
@"[NGMimeType stringEncodingForCharset: %@]=%i expected: %i",
|
||||
charset, fromNGMimeType, fromNGMimeTypeExpected];
|
||||
testWithMessage(fromNGMimeType == fromNGMimeTypeExpected, error);
|
||||
|
||||
fromNSString = [NSString stringEncodingForEncodingNamed: charset];
|
||||
error = [NSString
|
||||
stringWithFormat:
|
||||
@"[NSString stringEncodingForEncodingNamed: %@]=%i expected: %i",
|
||||
charset, fromNSString, fromNSStringExpected];
|
||||
testWithMessage(fromNSString == fromNSStringExpected, error);
|
||||
}
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user