From 2201074e1f1e4ec3c2f60cac74d8168738d83650 Mon Sep 17 00:00:00 2001 From: Michael Gapczynski <mtgap@owncloud.com> Date: Wed, 1 Aug 2012 17:17:28 -0400 Subject: [PATCH] Basic setup for sharing with contacts --- core/ajax/share.php | 2 +- lib/public/share.php | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/core/ajax/share.php b/core/ajax/share.php index 905c28a1c2..6f5b927c77 100644 --- a/core/ajax/share.php +++ b/core/ajax/share.php @@ -75,7 +75,7 @@ if (isset($_POST['action']) && isset($_POST['itemType']) && isset($_POST['item'] foreach ($vcards as $vcard) { $contact = $vcard['fullname']; if (stripos($contact, $_GET['search']) !== false && (!isset($_GET['itemShares'][OCP\Share::SHARE_TYPE_CONTACT]) || !in_array($contact, $_GET['itemShares'][OCP\Share::SHARE_TYPE_CONTACT]))) { - $shareWith[] = array('label' => $contact, 'value' => array('shareType' => 5, 'shareWith' => $contact)); + $shareWith[] = array('label' => $contact, 'value' => array('shareType' => 5, 'shareWith' => $vcard['id'])); } } } diff --git a/lib/public/share.php b/lib/public/share.php index 47181c8c1f..d9bcb8df81 100644 --- a/lib/public/share.php +++ b/lib/public/share.php @@ -187,6 +187,24 @@ class Share { case self::SHARE_TYPE_PRIVATE_LINK: $shareWith = md5(uniqid($item, true)); return self::put($itemType, $item, $shareType, $shareWith, $uidOwner, $permissions); + case self::SHARE_TYPE_CONTACT: + if (!\OC_App::isEnabled('contacts')) { + \OC_Log::write('OCP\Share', 'Sharing '.$item.' failed, because the contacts app is not enabled', \OC_Log::ERROR); + return false; + } + $vcard = \OC_Contacts_App::getContactVCard($shareWith); + if (!isset($vcard)) { + \OC_Log::write('OCP\Share', 'Sharing '.$item.' failed, because the contact does not exist', \OC_Log::ERROR); + return false; + } + $details = OC_Contacts_VCard::structureContact($vcard); + // TODO Add ownCloud user to contacts vcard + if (!isset($details['EMAIL'])) { + \OC_Log::write('OCP\Share', 'Sharing '.$item.' failed, because no email address is associated with the contact', \OC_Log::ERROR); + return false; + } + return self::share($itemType, $item, self::SHARE_TYPE_EMAIL, $permissions); + break; // Future share types need to include their own conditions default: \OC_Log::write('OCP\Share', 'Share type '.$shareType.' is not valid for '.$item, \OC_Log::ERROR); -- GitLab