1
0
mirror of https://github.com/owncloudarchive/contacts.git synced 2025-01-31 20:52:17 +01:00
Simon McVittie 16fa2cf807 Fix X-EVOLUTION-FILE-AS escape
Evolution defaults to the form "X-EVOLUTION-FILE-AS:Bloggs\, Joe", and
since Evolution uses this field as the contacts' displayed name, it's
highly visible when ownCloud turns it into
"X-EVOLUTION-FILE-AS:Bloggs\\, Joe".

https://github.com/owncloud/contacts/issues/42#issuecomment-28776546

When interacting with Evolution-Data-Server (which I think MeeGo might
use), the same incorrect escaping applies to X-EVOLUTION-FILE-AS. This
is a non-standard field, but it's highly visible for Evolution users,
since it's used as the default displayed name for contacts there.

https://github.com/owncloud/core/issues/2335#issuecomment-32130820

Bug-Debian: http://bugs.debian.org/735112
2014-01-12 19:06:11 -04:00

62 lines
3.2 KiB
PHP

<?php
namespace OCA\Contacts;
use \OC\AppFramework\Core\API;
//require_once __DIR__ . '/../lib/controller/pagecontroller.php';
\Sabre\VObject\Component::$classMap['VCARD'] = '\OCA\Contacts\VObject\VCard';
\Sabre\VObject\Property::$classMap['CATEGORIES'] = 'OCA\Contacts\VObject\GroupProperty';
\Sabre\VObject\Property::$classMap['FN'] = '\OC\VObject\StringProperty';
\Sabre\VObject\Property::$classMap['TITLE'] = '\OC\VObject\StringProperty';
\Sabre\VObject\Property::$classMap['ROLE'] = '\OC\VObject\StringProperty';
\Sabre\VObject\Property::$classMap['NOTE'] = '\OC\VObject\StringProperty';
\Sabre\VObject\Property::$classMap['NICKNAME'] = '\OC\VObject\StringProperty';
\Sabre\VObject\Property::$classMap['EMAIL'] = '\OC\VObject\StringProperty';
\Sabre\VObject\Property::$classMap['TEL'] = '\OC\VObject\StringProperty';
\Sabre\VObject\Property::$classMap['IMPP'] = '\OC\VObject\StringProperty';
\Sabre\VObject\Property::$classMap['URL'] = '\OC\VObject\StringProperty';
\Sabre\VObject\Property::$classMap['X-EVOLUTION-FILE-AS'] = '\OC\VObject\StringProperty';
\Sabre\VObject\Property::$classMap['N'] = '\OC\VObject\CompoundProperty';
\Sabre\VObject\Property::$classMap['ADR'] = '\OC\VObject\CompoundProperty';
\Sabre\VObject\Property::$classMap['GEO'] = '\OC\VObject\CompoundProperty';
\Sabre\VObject\Property::$classMap['ORG'] = '\OC\VObject\CompoundProperty';
\OC::$server->getNavigationManager()->add(array(
'id' => 'contacts',
'order' => 10,
'href' => \OCP\Util::linkToRoute('contacts_index'),
'icon' => \OCP\Util::imagePath( 'contacts', 'contacts.svg' ),
'name' => \OCP\Util::getL10N('contacts')->t('Contacts')
)
);
$api = new API('contacts');
$api->connectHook('OC_User', 'post_createUser', '\OCA\Contacts\Hooks', 'userCreated');
$api->connectHook('OC_User', 'post_deleteUser', '\OCA\Contacts\Hooks', 'userDeleted');
$api->connectHook('OCA\Contacts', 'pre_deleteAddressBook', '\OCA\Contacts\Hooks', 'addressBookDeletion');
$api->connectHook('OCA\Contacts', 'pre_deleteContact', '\OCA\Contacts\Hooks', 'contactDeletion');
$api->connectHook('OCA\Contacts', 'post_createContact', 'OCA\Contacts\Hooks', 'contactAdded');
$api->connectHook('OCA\Contacts', 'post_updateContact', '\OCA\Contacts\Hooks', 'contactUpdated');
$api->connectHook('OCA\Contacts', 'scanCategories', '\OCA\Contacts\Hooks', 'scanCategories');
$api->connectHook('OCA\Contacts', 'indexProperties', '\OCA\Contacts\Hooks', 'indexProperties');
$api->connectHook('OC_Calendar', 'getEvents', 'OCA\Contacts\Hooks', 'getBirthdayEvents');
$api->connectHook('OC_Calendar', 'getSources', 'OCA\Contacts\Hooks', 'getCalenderSources');
\OCP\Util::addscript('contacts', 'loader');
\OC_Search::registerProvider('OCA\Contacts\SearchProvider');
//\OCP\Share::registerBackend('contact', 'OCA\Contacts\Share_Backend_Contact');
\OCP\Share::registerBackend('addressbook', 'OCA\Contacts\Share\Addressbook', 'contact');
//\OCP\App::registerPersonal('contacts','personalsettings');
if(\OCP\User::isLoggedIn()) {
$app = new App($api->getUserId());
$addressBooks = $app->getAddressBooksForUser();
foreach($addressBooks as $addressBook) {
if($addressBook->getBackend()->name === 'local') {
\OCP\Contacts::registerAddressBook(new AddressbookProvider($addressBook));
}
}
}