Remote Synchronization (CardDAV) improvements:
now it supports address book url auto detection (and works with Google contacts, icloud and etc.)
|
|
@ -53,7 +53,7 @@
|
|||
|
||||
this.contactsIsAllowed = ko.observable(false);
|
||||
|
||||
this.attahcmentsActions = ko.observableArray([]);
|
||||
this.attachmentsActions = ko.observableArray([]);
|
||||
|
||||
this.devEmail = '';
|
||||
this.devPassword = '';
|
||||
|
|
@ -70,8 +70,8 @@
|
|||
|
||||
this.contactsIsAllowed(!!Settings.settingsGet('ContactsIsAllowed'));
|
||||
|
||||
var mAttahcmentsActions = Settings.settingsGet('AttahcmentsActions');
|
||||
this.attahcmentsActions(Utils.isNonEmptyArray(mAttahcmentsActions) ? mAttahcmentsActions : []);
|
||||
var mAttachmentsActions = Settings.settingsGet('AttachmentsActions');
|
||||
this.attachmentsActions(Utils.isNonEmptyArray(mAttachmentsActions) ? mAttachmentsActions : []);
|
||||
|
||||
this.devEmail = Settings.settingsGet('DevEmail');
|
||||
this.devPassword = Settings.settingsGet('DevPassword');
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@
|
|||
|
||||
this.pswp = null;
|
||||
|
||||
this.attahcmentsActions = AppStore.attahcmentsActions;
|
||||
this.attachmentsActions = AppStore.attachmentsActions;
|
||||
|
||||
this.message = MessageStore.message;
|
||||
this.messageListChecked = MessageStore.messageListChecked;
|
||||
|
|
@ -90,18 +90,18 @@
|
|||
this.showAttachmnetControls = ko.observable(false);
|
||||
|
||||
this.allowAttachmnetControls = ko.computed(function () {
|
||||
return 0 < this.attahcmentsActions().length;
|
||||
return 0 < this.attachmentsActions().length;
|
||||
}, this);
|
||||
|
||||
this.downloadAsZipAllowed = ko.computed(function () {
|
||||
return -1 < Utils.inArray('zip', this.attahcmentsActions());
|
||||
return -1 < Utils.inArray('zip', this.attachmentsActions());
|
||||
}, this);
|
||||
|
||||
this.downloadAsZipLoading = ko.observable(false);
|
||||
this.downloadAsZipError = ko.observable(false).extend({'falseTimeout': 7000});
|
||||
|
||||
this.saveToOwnCloudAllowed = ko.computed(function () {
|
||||
return -1 < Utils.inArray('owncloud', this.attahcmentsActions());
|
||||
return -1 < Utils.inArray('owncloud', this.attachmentsActions());
|
||||
}, this);
|
||||
|
||||
this.saveToOwnCloudLoading = ko.observable(false);
|
||||
|
|
@ -123,7 +123,7 @@
|
|||
}, this);
|
||||
|
||||
this.saveToDropboxAllowed = ko.computed(function () {
|
||||
return -1 < Utils.inArray('dropbox', this.attahcmentsActions());
|
||||
return -1 < Utils.inArray('dropbox', this.attachmentsActions());
|
||||
}, this);
|
||||
|
||||
this.saveToDropboxLoading = ko.observable(false);
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
"name": "RainLoop",
|
||||
"title": "RainLoop Webmail",
|
||||
"version": "1.9.0",
|
||||
"release": "323",
|
||||
"release": "324",
|
||||
"description": "Simple, modern & fast web-based email client",
|
||||
"homepage": "http://rainloop.net",
|
||||
"main": "gulpfile.js",
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ if (!\defined('RAINLOOP_APP_LIBRARIES_PATH'))
|
|||
function rainLoopSplAutoloadNamespaces()
|
||||
{
|
||||
return RAINLOOP_INCLUDE_AS_API_DEF ? array('RainLoop') :
|
||||
array('RainLoop', 'Facebook', 'GuzzleHttp', 'Symfony', 'PHPThumb', 'Sabre');
|
||||
array('RainLoop', 'Facebook', 'GuzzleHttp', 'PHPThumb', 'SabreForRainLoop');
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -41,7 +41,7 @@ if (!\defined('RAINLOOP_APP_LIBRARIES_PATH'))
|
|||
{
|
||||
if (0 === \strpos($sClassName, $sNamespaceName.'\\'))
|
||||
{
|
||||
if ('Sabre' === $sNamespaceName && !RAINLOOP_MB_SUPPORTED && !defined('RL_MB_FIXED'))
|
||||
if ('SabreForRainLoop' === $sNamespaceName && !RAINLOOP_MB_SUPPORTED && !defined('RL_MB_FIXED'))
|
||||
{
|
||||
\define('RL_MB_FIXED', true);
|
||||
include_once RAINLOOP_APP_LIBRARIES_PATH.'RainLoop/Common/MbStringFix.php';
|
||||
|
|
|
|||
|
|
@ -86,4 +86,21 @@ class DateTimeHelper
|
|||
$oDateTime = \DateTime::createFromFormat('Y-m-d H:i:s O', \trim($sDateTime), \MailSo\Base\DateTimeHelper::GetUtcTimeZoneObject());
|
||||
return $oDateTime ? $oDateTime->getTimestamp() : 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Parse date string formated as "2015-05-08T14:32:18.483-07:00"
|
||||
*
|
||||
* @param string $sDateTime
|
||||
*
|
||||
* @return int
|
||||
*/
|
||||
public static function TryToParseSpecEtagFormat($sDateTime)
|
||||
{
|
||||
$sDateTime = \trim(\preg_replace('/ \([a-zA-Z0-9]+\)$/', '', \trim($sDateTime)));
|
||||
$sDateTime = \trim(\preg_replace('/(:[\d]{2})\.[\d]{3}/', '$1', \trim($sDateTime)));
|
||||
$sDateTime = \trim(\preg_replace('/(-[\d]{2})T([\d]{2}:)/', '$1 $2', \trim($sDateTime)));
|
||||
$sDateTime = \trim(\preg_replace('/([\-+][\d]{2}):([\d]{2})$/', ' $1$2', \trim($sDateTime)));
|
||||
|
||||
return \MailSo\Base\DateTimeHelper::ParseDateStringType1($sDateTime);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -165,7 +165,7 @@ class Logger extends \MailSo\Base\Collection
|
|||
*/
|
||||
public function AddSecret($sWord)
|
||||
{
|
||||
if (0 < \strlen(\trim($sWord)))
|
||||
if (\is_string($sWord) && 0 < \strlen(\trim($sWord)))
|
||||
{
|
||||
$this->aSecretWords[] = $sWord;
|
||||
$this->aSecretWords = \array_unique($this->aSecretWords);
|
||||
|
|
|
|||
|
|
@ -27,11 +27,6 @@ abstract class PHPThumb
|
|||
*/
|
||||
protected $fileName;
|
||||
|
||||
/**
|
||||
* @var \Symfony\Component\Filesystem\Filesystem
|
||||
*/
|
||||
protected $filesystem;
|
||||
|
||||
/**
|
||||
* What the file format is (mime-type)
|
||||
*
|
||||
|
|
@ -59,7 +54,6 @@ abstract class PHPThumb
|
|||
*/
|
||||
public function __construct($fileName, array $options = array(), array $plugins = array())
|
||||
{
|
||||
$this->filesystem = new \Symfony\Component\Filesystem\Filesystem();
|
||||
$this->fileName = $fileName;
|
||||
$this->remoteImage = false;
|
||||
|
||||
|
|
@ -89,9 +83,9 @@ abstract class PHPThumb
|
|||
return true;
|
||||
}
|
||||
|
||||
if($this->filesystem->exists($filename)) {
|
||||
return true;
|
||||
}
|
||||
if (file_exists($filename)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1276,6 +1276,14 @@ class Actions
|
|||
return $this->GetAccountFromCustomToken($this->getAuthToken(), $bThrowExceptionOnFalse);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function IsOpen()
|
||||
{
|
||||
return !$this->PremProvider();
|
||||
}
|
||||
|
||||
/**
|
||||
* @param bool $bAdmin
|
||||
* @param string $sAuthAccountHash = ''
|
||||
|
|
@ -1349,7 +1357,7 @@ class Actions
|
|||
'PremType' => false,
|
||||
'Admin' => array(),
|
||||
'Capa' => array(),
|
||||
'AttahcmentsActions' => array(),
|
||||
'AttachmentsActions' => array(),
|
||||
'Plugins' => array()
|
||||
);
|
||||
|
||||
|
|
@ -1357,17 +1365,17 @@ class Actions
|
|||
{
|
||||
if (!!\class_exists('ZipArchive'))
|
||||
{
|
||||
$aResult['AttahcmentsActions'][] = 'zip';
|
||||
$aResult['AttachmentsActions'][] = 'zip';
|
||||
}
|
||||
|
||||
if (\RainLoop\Utils::IsOwnCloudLoggedIn() && \class_exists('\\OCP\\Files'))
|
||||
{
|
||||
$aResult['AttahcmentsActions'][] = 'owncloud';
|
||||
$aResult['AttachmentsActions'][] = 'owncloud';
|
||||
}
|
||||
|
||||
if ($oConfig->Get('social', 'dropbox_enable', false) && 0 < \strlen(\trim($oConfig->Get('social', 'dropbox_api_key', ''))))
|
||||
{
|
||||
$aResult['AttahcmentsActions'][] = 'dropbox';
|
||||
$aResult['AttachmentsActions'][] = 'dropbox';
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -2833,7 +2841,7 @@ class Actions
|
|||
if (\RainLoop\Utils::IsOwnCloudLoggedIn() && \class_exists('\\OCP\\Files'))
|
||||
{
|
||||
$sSaveFolder = $this->Config()->Get('labs', 'owncloud_save_folder', '');
|
||||
if (!empty($sSaveFolder))
|
||||
if (empty($sSaveFolder))
|
||||
{
|
||||
$sSaveFolder = 'Attachments';
|
||||
}
|
||||
|
|
@ -6776,6 +6784,8 @@ class Actions
|
|||
$oContact->Etag = \md5($oContact->ToVCard());
|
||||
}
|
||||
|
||||
$oContact->PopulateDisplayAndFullNameValue(true);
|
||||
|
||||
$bResult = $oAddressBookProvider->ContactSave($oAccount->ParentEmailHelper(), $oContact);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -318,7 +318,7 @@ class AddressBook extends \RainLoop\Providers\AbstractProvider
|
|||
{
|
||||
$iCount = 0;
|
||||
|
||||
if (\class_exists('Sabre\DAV\Client') && $this->IsActive() && \is_string($sVcfData))
|
||||
if (\class_exists('SabreForRainLoop\DAV\Client') && $this->IsActive() && \is_string($sVcfData))
|
||||
{
|
||||
$sVcfData = \trim($sVcfData);
|
||||
if ("\xef\xbb\xbf" === \substr($sVcfData, 0, 3))
|
||||
|
|
@ -329,7 +329,7 @@ class AddressBook extends \RainLoop\Providers\AbstractProvider
|
|||
$oVCardSplitter = null;
|
||||
try
|
||||
{
|
||||
$oVCardSplitter = new \Sabre\VObject\Splitter\VCard($sVcfData);
|
||||
$oVCardSplitter = new \SabreForRainLoop\VObject\Splitter\VCard($sVcfData);
|
||||
}
|
||||
catch (\Exception $oExc)
|
||||
{
|
||||
|
|
@ -344,13 +344,13 @@ class AddressBook extends \RainLoop\Providers\AbstractProvider
|
|||
|
||||
while ($oVCard = $oVCardSplitter->getNext())
|
||||
{
|
||||
if ($oVCard instanceof \Sabre\VObject\Component\VCard)
|
||||
if ($oVCard instanceof \SabreForRainLoop\VObject\Component\VCard)
|
||||
{
|
||||
\MailSo\Base\Utils::ResetTimeLimit();
|
||||
|
||||
if (empty($oVCard->UID))
|
||||
{
|
||||
$oVCard->UID = \Sabre\DAV\UUIDUtil::getUUID();
|
||||
$oVCard->UID = \SabreForRainLoop\DAV\UUIDUtil::getUUID();
|
||||
}
|
||||
|
||||
$oContact->PopulateByVCard($oVCard->UID, $oVCard->serialize());
|
||||
|
|
|
|||
|
|
@ -66,8 +66,9 @@ class Contact
|
|||
$this->Etag = '';
|
||||
}
|
||||
|
||||
public function UpdateDependentValues()
|
||||
public function PopulateDisplayAndFullNameValue($bForceFullNameReplace = false)
|
||||
{
|
||||
$sFullName = '';
|
||||
$sLastName = '';
|
||||
$sFirstName = '';
|
||||
$sEmail = '';
|
||||
|
|
@ -100,8 +101,12 @@ class Contact
|
|||
{
|
||||
$sFirstName = $oProperty->Value;
|
||||
}
|
||||
else if (\in_array($oProperty->Type, array(
|
||||
PropertyType::FULLNAME, PropertyType::PHONE
|
||||
else if ('' === $sFullName && PropertyType::FULLNAME === $oProperty->Type)
|
||||
{
|
||||
$sFullName = $oProperty->Value;
|
||||
}
|
||||
else if ('' === $sOther && \in_array($oProperty->Type, array(
|
||||
PropertyType::PHONE
|
||||
)))
|
||||
{
|
||||
$sOther = $oProperty->Value;
|
||||
|
|
@ -110,25 +115,26 @@ class Contact
|
|||
}
|
||||
}
|
||||
|
||||
if (empty($this->IdContactStr))
|
||||
{
|
||||
$this->RegenerateContactStr();
|
||||
}
|
||||
$sDisplay = $bForceFullNameReplace ? '' : \trim($sFullName);
|
||||
|
||||
$sDisplay = '';
|
||||
if (0 < \strlen($sLastName) || 0 < \strlen($sFirstName))
|
||||
if ('' === $sDisplay && (0 < \strlen($sLastName) || 0 < \strlen($sFirstName)))
|
||||
{
|
||||
$sDisplay = \trim($sFirstName.' '.$sLastName);
|
||||
}
|
||||
|
||||
if ('' === $sDisplay && 0 < \strlen($sEmail))
|
||||
if ('' === $sDisplay)
|
||||
{
|
||||
$sDisplay = \trim($sFullName);
|
||||
}
|
||||
|
||||
if ('' === $sDisplay)
|
||||
{
|
||||
$sDisplay = \trim($sEmail);
|
||||
}
|
||||
|
||||
if ('' === $sDisplay)
|
||||
{
|
||||
$sDisplay = $sOther;
|
||||
$sDisplay = \trim($sOther);
|
||||
}
|
||||
|
||||
$this->Display = \trim($sDisplay);
|
||||
|
|
@ -145,13 +151,23 @@ class Contact
|
|||
}
|
||||
}
|
||||
|
||||
public function UpdateDependentValues()
|
||||
{
|
||||
if (empty($this->IdContactStr))
|
||||
{
|
||||
$this->RegenerateContactStr();
|
||||
}
|
||||
|
||||
$this->PopulateDisplayAndFullNameValue();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function RegenerateContactStr()
|
||||
{
|
||||
$this->IdContactStr = \class_exists('Sabre\DAV\Client') ?
|
||||
\Sabre\DAV\UUIDUtil::getUUID() : \MailSo\Base\Utils::Md5Rand();
|
||||
$this->IdContactStr = \class_exists('SabreForRainLoop\DAV\Client') ?
|
||||
\SabreForRainLoop\DAV\UUIDUtil::getUUID() : \MailSo\Base\Utils::Md5Rand();
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -186,7 +202,7 @@ class Contact
|
|||
{
|
||||
$this->UpdateDependentValues();
|
||||
|
||||
if (!\class_exists('Sabre\DAV\Client'))
|
||||
if (!\class_exists('SabreForRainLoop\DAV\Client'))
|
||||
{
|
||||
return '';
|
||||
}
|
||||
|
|
@ -201,7 +217,7 @@ class Contact
|
|||
{
|
||||
try
|
||||
{
|
||||
$oVCard = \Sabre\VObject\Reader::read($sPreVCard);
|
||||
$oVCard = \SabreForRainLoop\VObject\Reader::read($sPreVCard);
|
||||
}
|
||||
catch (\Exception $oExc)
|
||||
{
|
||||
|
|
@ -213,9 +229,14 @@ class Contact
|
|||
}
|
||||
}
|
||||
|
||||
// if ($oLogger)
|
||||
// {
|
||||
// $oLogger->WriteDump($sPreVCard);
|
||||
// }
|
||||
|
||||
if (!$oVCard)
|
||||
{
|
||||
$oVCard = new \Sabre\VObject\Component\VCard();
|
||||
$oVCard = new \SabreForRainLoop\VObject\Component\VCard();
|
||||
}
|
||||
|
||||
$oVCard->VERSION = '3.0';
|
||||
|
|
@ -223,7 +244,7 @@ class Contact
|
|||
|
||||
unset($oVCard->FN, $oVCard->EMAIL, $oVCard->TEL, $oVCard->URL, $oVCard->NICKNAME);
|
||||
|
||||
$sFirstName = $sLastName = $sMiddleName = $sSuffix = $sPrefix = '';
|
||||
$sUid = $sFirstName = $sLastName = $sMiddleName = $sSuffix = $sPrefix = '';
|
||||
foreach ($this->Properties as /* @var $oProperty \RainLoop\Providers\AddressBook\Classes\Property */ &$oProperty)
|
||||
{
|
||||
if ($oProperty)
|
||||
|
|
@ -240,6 +261,9 @@ class Contact
|
|||
case PropertyType::NOTE:
|
||||
$oVCard->NOTE = $oProperty->Value;
|
||||
break;
|
||||
case PropertyType::UID:
|
||||
$sUid = $oProperty->Value;
|
||||
break;
|
||||
case PropertyType::FIRST_NAME:
|
||||
$sFirstName = $oProperty->Value;
|
||||
break;
|
||||
|
|
@ -278,7 +302,7 @@ class Contact
|
|||
}
|
||||
}
|
||||
|
||||
$oVCard->UID = $this->IdContactStr;
|
||||
$oVCard->UID = empty($sUid) ? $this->IdContactStr : $sUid;
|
||||
$oVCard->N = array($sLastName, $sFirstName, $sMiddleName, $sPrefix, $sSuffix);
|
||||
$oVCard->REV = \gmdate('Ymd', $this->Changed).'T'.\gmdate('His', $this->Changed).'Z';
|
||||
|
||||
|
|
@ -505,7 +529,7 @@ class Contact
|
|||
|
||||
$this->Properties = array();
|
||||
|
||||
if (!\class_exists('Sabre\DAV\Client'))
|
||||
if (!\class_exists('SabreForRainLoop\DAV\Client'))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
|
@ -515,9 +539,11 @@ class Contact
|
|||
$this->Etag = $sEtag;
|
||||
}
|
||||
|
||||
$this->IdContactStr = $sUid;
|
||||
|
||||
try
|
||||
{
|
||||
$oVCard = \Sabre\VObject\Reader::read($sVCard);
|
||||
$oVCard = \SabreForRainLoop\VObject\Reader::read($sVCard);
|
||||
}
|
||||
catch (\Exception $oExc)
|
||||
{
|
||||
|
|
@ -526,18 +552,24 @@ class Contact
|
|||
$oLogger->WriteException($oExc);
|
||||
$oLogger->WriteDump($sVCard);
|
||||
}
|
||||
|
||||
$this->IdContactStr = $sUid;
|
||||
}
|
||||
|
||||
// if ($oLogger)
|
||||
// {
|
||||
// $oLogger->WriteDump($sVCard);
|
||||
// }
|
||||
|
||||
$bOwnCloud = false;
|
||||
$aProperties = array();
|
||||
|
||||
if ($oVCard)
|
||||
{
|
||||
$bOwnCloud = empty($oVCard->PRODID) ? false :
|
||||
false !== \strpos(\strtolower($oVCard->PRODID), 'owncloud');
|
||||
|
||||
$bOldVersion = empty($oVCard->VERSION) ? false :
|
||||
\in_array((string) $oVCard->VERSION, array('2.1', '2.0', '1.0'));
|
||||
|
||||
$this->IdContactStr = $oVCard->UID ? (string) $oVCard->UID : \Sabre\DAV\UUIDUtil::getUUID();
|
||||
|
||||
if (isset($oVCard->FN) && '' !== \trim($oVCard->FN))
|
||||
{
|
||||
$sValue = $this->getPropertyValueHelper($oVCard->FN, $bOldVersion);
|
||||
|
|
@ -612,6 +644,14 @@ class Contact
|
|||
$this->addArrayPropertyHelper($aProperties, $oVCard->TEL, PropertyType::PHONE);
|
||||
}
|
||||
|
||||
$sUidValue = $oVCard->UID ? (string) $oVCard->UID : \SabreForRainLoop\DAV\UUIDUtil::getUUID();
|
||||
$aProperties[] = new Property(PropertyType::UID, $sUidValue);
|
||||
|
||||
if (empty($this->IdContactStr))
|
||||
{
|
||||
$this->IdContactStr = $sUidValue;
|
||||
}
|
||||
|
||||
$this->Properties = $aProperties;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -10,7 +10,7 @@ class Property
|
|||
* @var int
|
||||
*/
|
||||
public $IdProperty;
|
||||
|
||||
|
||||
/**
|
||||
* @var int
|
||||
*/
|
||||
|
|
@ -49,7 +49,7 @@ class Property
|
|||
public function Clear()
|
||||
{
|
||||
$this->IdProperty = 0;
|
||||
|
||||
|
||||
$this->Type = PropertyType::UNKNOWN;
|
||||
$this->TypeStr = '';
|
||||
|
||||
|
|
@ -59,6 +59,15 @@ class Property
|
|||
$this->Frec = 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
public function IsName()
|
||||
{
|
||||
return \in_array($this->Type, array(PropertyType::FULLNAME, PropertyType::FIRST_NAME,
|
||||
PropertyType::LAST_NAME, PropertyType::MIDDLE_NAME, PropertyType::NICK_NAME));
|
||||
}
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
|
|
@ -66,7 +75,7 @@ class Property
|
|||
{
|
||||
return PropertyType::EMAIl === $this->Type;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @return bool
|
||||
*/
|
||||
|
|
@ -111,7 +120,7 @@ class Property
|
|||
$this->Value = \trim($this->Value);
|
||||
$this->ValueCustom = \trim($this->ValueCustom);
|
||||
$this->TypeStr = \trim($this->TypeStr);
|
||||
|
||||
|
||||
if (0 < \strlen($this->Value))
|
||||
{
|
||||
// lower
|
||||
|
|
@ -120,6 +129,11 @@ class Property
|
|||
$this->Value = \MailSo\Base\Utils::StrToLowerIfAscii($this->Value);
|
||||
}
|
||||
|
||||
if ($this->IsName())
|
||||
{
|
||||
$this->Value = \preg_replace('/[\s]+/u', ' ', $this->Value);
|
||||
}
|
||||
|
||||
// phones clear value for searching
|
||||
if ($this->IsPhone())
|
||||
{
|
||||
|
|
|
|||
|
|
@ -6,8 +6,9 @@ class PropertyType
|
|||
{
|
||||
const UNKNOWN = 0;
|
||||
|
||||
const UID = 9;
|
||||
const FULLNAME = 10;
|
||||
|
||||
|
||||
const FIRST_NAME = 15;
|
||||
const LAST_NAME = 16;
|
||||
const MIDDLE_NAME = 17;
|
||||
|
|
@ -21,7 +22,7 @@ class PropertyType
|
|||
// const MOBILE = 32;
|
||||
// const FAX = 33;
|
||||
const WEB_PAGE = 32;
|
||||
|
||||
|
||||
const BIRTHDAY = 40;
|
||||
|
||||
const FACEBOOK = 90;
|
||||
|
|
|
|||
|
|
@ -117,11 +117,14 @@ class PdoAddressBook
|
|||
try
|
||||
{
|
||||
$this->oLogger->Write('PROPFIND '.$sPath, \MailSo\Log\Enumerations\Type::INFO, 'DAV');
|
||||
|
||||
$aResponse = $oClient->propFind($sPath, array(
|
||||
'{DAV:}getlastmodified',
|
||||
'{DAV:}resourcetype',
|
||||
'{DAV:}getetag'
|
||||
), 1);
|
||||
|
||||
// $this->oLogger->WriteDump($aResponse);
|
||||
}
|
||||
catch (\Exception $oException)
|
||||
{
|
||||
|
|
@ -137,10 +140,11 @@ class PdoAddressBook
|
|||
if (!empty($sKey) && is_array($aItem))
|
||||
{
|
||||
$aItem = \array_change_key_case($aItem, \CASE_LOWER);
|
||||
if (isset($aItem['{dav:}getetag'], $aItem['{dav:}getlastmodified']))
|
||||
if (isset($aItem['{dav:}getetag']))
|
||||
{
|
||||
$aMatch = array();
|
||||
if (\preg_match('/\/([^\/?]+)$/', $sKey, $aMatch) && !empty($aMatch[1]))
|
||||
if (\preg_match('/\/([^\/?]+)$/', $sKey, $aMatch) && !empty($aMatch[1]) &&
|
||||
(!$aItem['{dav:}resourcetype'] || !$aItem['{dav:}resourcetype']->is('{DAV:}collection')))
|
||||
{
|
||||
$sVcfFileName = \urldecode(\urldecode($aMatch[1]));
|
||||
$sKeyID = \preg_replace('/\.vcf$/i', '', $sVcfFileName);
|
||||
|
|
@ -150,10 +154,23 @@ class PdoAddressBook
|
|||
'uid' => $sKeyID,
|
||||
'vcf' => $sVcfFileName,
|
||||
'etag' => \trim(\trim($aItem['{dav:}getetag']), '"\''),
|
||||
'lastmodified' => $aItem['{dav:}getlastmodified'],
|
||||
'changed' => \MailSo\Base\DateTimeHelper::ParseRFC2822DateString($aItem['{dav:}getlastmodified'])
|
||||
'lastmodified' => '',
|
||||
'changed' => 0
|
||||
);
|
||||
|
||||
if (isset($aItem['{dav:}getlastmodified']))
|
||||
{
|
||||
$mResult[$sKeyID]['lastmodified'] = $aItem['{dav:}getlastmodified'];
|
||||
$mResult[$sKeyID]['changed'] = \MailSo\Base\DateTimeHelper::ParseRFC2822DateString(
|
||||
$aItem['{dav:}getlastmodified']);
|
||||
}
|
||||
else
|
||||
{
|
||||
$mResult[$sKeyID]['changed'] = \MailSo\Base\DateTimeHelper::TryToParseSpecEtagFormat($mResult[$sKeyID]['etag']);
|
||||
$mResult[$sKeyID]['lastmodified'] = 0 < $mResult[$sKeyID]['changed'] ?
|
||||
\gmdate('c', $mResult[$sKeyID]['changed']) : '';
|
||||
}
|
||||
|
||||
$mResult[$sKeyID]['changed_'] = \gmdate('c', $mResult[$sKeyID]['changed']);
|
||||
}
|
||||
}
|
||||
|
|
@ -168,10 +185,10 @@ class PdoAddressBook
|
|||
{
|
||||
\MailSo\Base\Utils::ResetTimeLimit();
|
||||
|
||||
$this->oLogger->Write($sCmd.' '.$sUrl.('PUT' === $sCmd && null !== $mData ? ' ('.\strlen($mData).')' : ''),
|
||||
$this->oLogger->Write($sCmd.' '.$sUrl.(('PUT' === $sCmd || 'POST' === $sCmd) && null !== $mData ? ' ('.\strlen($mData).')' : ''),
|
||||
\MailSo\Log\Enumerations\Type::INFO, 'DAV');
|
||||
|
||||
if ('PUT' === $sCmd)
|
||||
if ('PUT' === $sCmd || 'POST' === $sCmd)
|
||||
{
|
||||
$this->oLogger->Write($mData, \MailSo\Log\Enumerations\Type::INFO, 'DAV');
|
||||
}
|
||||
|
|
@ -179,13 +196,21 @@ class PdoAddressBook
|
|||
$oResponse = false;
|
||||
try
|
||||
{
|
||||
$oResponse = 'PUT' === $sCmd && null !== $mData ?
|
||||
$oClient->request($sCmd, $sUrl, $mData) : $oClient->request($sCmd, $sUrl);
|
||||
|
||||
if ('GET' === $sCmd && false)
|
||||
if (('PUT' === $sCmd || 'POST' === $sCmd) && null !== $mData)
|
||||
{
|
||||
$this->oLogger->WriteDump($oResponse, \MailSo\Log\Enumerations\Type::INFO, 'DAV');
|
||||
$oResponse = $oClient->request($sCmd, $sUrl, $mData, array(
|
||||
'Content-Type' => 'text/vcard; charset=utf-8'
|
||||
));
|
||||
}
|
||||
else
|
||||
{
|
||||
$oResponse = $oClient->request($sCmd, $sUrl);
|
||||
}
|
||||
|
||||
// if ('GET' === $sCmd)
|
||||
// {
|
||||
// $this->oLogger->WriteDump($oResponse, \MailSo\Log\Enumerations\Type::INFO, 'DAV');
|
||||
// }
|
||||
}
|
||||
catch (\Exception $oException)
|
||||
{
|
||||
|
|
@ -196,24 +221,297 @@ class PdoAddressBook
|
|||
}
|
||||
|
||||
/**
|
||||
* @param string $sEmail
|
||||
* @param string $sUrl
|
||||
* @param \SabreForRainLoop\DAV\Client $oClient
|
||||
* @param string $sPath
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
private function detectionPropFind($oClient, $sPath)
|
||||
{
|
||||
$aResponse = null;
|
||||
|
||||
try
|
||||
{
|
||||
$this->oLogger->Write('PROPFIND '.$sPath, \MailSo\Log\Enumerations\Type::INFO, 'DAV');
|
||||
|
||||
$aResponse = $oClient->propFind($sPath, array(
|
||||
'{DAV:}current-user-principal',
|
||||
'{DAV:}resourcetype',
|
||||
'{DAV:}displayname',
|
||||
'{urn:ietf:params:xml:ns:carddav}addressbook-home-set'
|
||||
), 1);
|
||||
|
||||
// $this->oLogger->WriteDump($aResponse);
|
||||
}
|
||||
catch (\Exception $oException)
|
||||
{
|
||||
$this->oLogger->WriteException($oException);
|
||||
}
|
||||
|
||||
return $aResponse;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \SabreForRainLoop\DAV\Client $oClient
|
||||
* @param string $sUser
|
||||
* @param string $sPassword
|
||||
* @param string $sProxy = ''
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
private function getContactsPaths(&$oClient, $sUser, $sPassword, $sProxy = '')
|
||||
{
|
||||
$aContactsPaths = array();
|
||||
|
||||
$sCurrentUserPrincipal = '';
|
||||
$sAddressbookHomeSet = '';
|
||||
|
||||
// [{DAV:}current-user-principal] => /cloud/remote.php/carddav/principals/admin/
|
||||
// [{urn:ietf:params:xml:ns:carddav}addressbook-home-set] => /cloud/remote.php/carddav/addressbooks/admin/
|
||||
|
||||
if (!$oClient)
|
||||
{
|
||||
return $aContactsPaths;
|
||||
}
|
||||
|
||||
$aResponse = $this->detectionPropFind($oClient, '/.well-known/carddav');
|
||||
|
||||
$sNextPath = '';
|
||||
$sFirstNextPath = '';
|
||||
if (\is_array($aResponse))
|
||||
{
|
||||
foreach ($aResponse as $sKey => $aItem)
|
||||
{
|
||||
if (empty($sAddressbookHomeSet) && !empty($aItem['{urn:ietf:params:xml:ns:carddav}addressbook-home-set']) &&
|
||||
false === \strpos($aItem['{urn:ietf:params:xml:ns:carddav}addressbook-home-set'], '/calendar-proxy'))
|
||||
{
|
||||
$sAddressbookHomeSet = $aItem['{urn:ietf:params:xml:ns:carddav}addressbook-home-set'];
|
||||
continue;
|
||||
}
|
||||
|
||||
if (empty($sCurrentUserPrincipal) && !empty($aItem['{DAV:}current-user-principal']))
|
||||
{
|
||||
$sCurrentUserPrincipal = $aItem['{DAV:}current-user-principal'];
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!empty($sKey))
|
||||
{
|
||||
$sFirstNextPath = $sKey;
|
||||
|
||||
$oResourceType = isset($aItem['{DAV:}resourcetype']) ? $aItem['{DAV:}resourcetype'] : null;
|
||||
/* @var $oResourceType \SabreForRainLoop\DAV\Property\ResourceType */
|
||||
if ($oResourceType && $oResourceType->is('{DAV:}collection'))
|
||||
{
|
||||
$sNextPath = $sKey;
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($sNextPath) && empty($sCurrentUserPrincipal) && empty($sAddressbookHomeSet) && !empty($sFirstNextPath))
|
||||
{
|
||||
$sNextPath = $sFirstNextPath;
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($sCurrentUserPrincipal) && empty($sAddressbookHomeSet))
|
||||
{
|
||||
if (empty($sNextPath))
|
||||
{
|
||||
return $aContactsPaths;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (\preg_match('/^http[s]?:\/\//i', $sNextPath))
|
||||
{
|
||||
$oClient = $this->getDavClientFromUrl($sNextPath, $sUser, $sPassword, $sProxy);
|
||||
if ($oClient)
|
||||
{
|
||||
$sNextPath = $oClient->__UrlPath__;
|
||||
}
|
||||
else
|
||||
{
|
||||
return $aContactsPaths;
|
||||
}
|
||||
}
|
||||
|
||||
$aResponse = $this->detectionPropFind($oClient, $sNextPath);
|
||||
if (\is_array($aResponse))
|
||||
{
|
||||
foreach ($aResponse as $sKey => $aItem)
|
||||
{
|
||||
if (empty($sAddressbookHomeSet) && !empty($aItem['{urn:ietf:params:xml:ns:carddav}addressbook-home-set']) &&
|
||||
false === \strpos($aItem['{urn:ietf:params:xml:ns:carddav}addressbook-home-set'], '/calendar-proxy'))
|
||||
{
|
||||
$sAddressbookHomeSet = $aItem['{urn:ietf:params:xml:ns:carddav}addressbook-home-set'];
|
||||
continue;
|
||||
}
|
||||
|
||||
if (empty($sCurrentUserPrincipal) && !empty($aItem['{DAV:}current-user-principal']))
|
||||
{
|
||||
$sCurrentUserPrincipal = $aItem['{DAV:}current-user-principal'];
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($sAddressbookHomeSet))
|
||||
{
|
||||
if (empty($sCurrentUserPrincipal))
|
||||
{
|
||||
return $aContactsPaths;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (\preg_match('/^http[s]?:\/\//i', $sCurrentUserPrincipal))
|
||||
{
|
||||
$oClient = $this->getDavClientFromUrl($sCurrentUserPrincipal, $sUser, $sPassword, $sProxy);
|
||||
if ($oClient)
|
||||
{
|
||||
$sCurrentUserPrincipal = $oClient->__UrlPath__;
|
||||
}
|
||||
else
|
||||
{
|
||||
return $aContactsPaths;
|
||||
}
|
||||
}
|
||||
|
||||
$aResponse = $this->detectionPropFind($oClient, $sCurrentUserPrincipal);
|
||||
if (\is_array($aResponse))
|
||||
{
|
||||
foreach ($aResponse as $sKey => $aItem)
|
||||
{
|
||||
if (empty($sAddressbookHomeSet) && !empty($aItem['{urn:ietf:params:xml:ns:carddav}addressbook-home-set']) &&
|
||||
false === \strpos($aItem['{urn:ietf:params:xml:ns:carddav}addressbook-home-set'], '/calendar-proxy'))
|
||||
{
|
||||
$sAddressbookHomeSet = $aItem['{urn:ietf:params:xml:ns:carddav}addressbook-home-set'];
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($sAddressbookHomeSet))
|
||||
{
|
||||
return $aContactsPaths;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (\preg_match('/^http[s]?:\/\//i', $sAddressbookHomeSet))
|
||||
{
|
||||
$oClient = $this->getDavClientFromUrl($sAddressbookHomeSet, $sUser, $sPassword, $sProxy);
|
||||
if ($oClient)
|
||||
{
|
||||
$sAddressbookHomeSet = $oClient->__UrlPath__;
|
||||
}
|
||||
else
|
||||
{
|
||||
return $aContactsPaths;
|
||||
}
|
||||
}
|
||||
|
||||
$aResponse = $this->detectionPropFind($oClient, $sAddressbookHomeSet);
|
||||
if (\is_array($aResponse))
|
||||
{
|
||||
foreach ($aResponse as $sKey => $aItem)
|
||||
{
|
||||
if (!empty($sKey) && $aItem && isset($aItem['{DAV:}resourcetype']))
|
||||
{
|
||||
$oResourceType = $aItem['{DAV:}resourcetype'];
|
||||
/* @var $oResourceType \SabreForRainLoop\DAV\Property\ResourceType */
|
||||
|
||||
if ($oResourceType && $oResourceType->is('{DAV:}collection'))
|
||||
{
|
||||
if ($oResourceType->is('{urn:ietf:params:xml:ns:carddav}addressbook'))
|
||||
{
|
||||
$aContactsPaths[$sKey] = isset($aItem['{DAV:}displayname']) ? \trim($aItem['{DAV:}displayname']) : '';
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $aContactsPaths;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param \SabreForRainLoop\DAV\Client $oClient
|
||||
* @param string $sPath
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function Sync($sEmail, $sUrl, $sUser, $sPassword, $sProxy = '')
|
||||
private function checkContactsPath(&$oClient, $sPath)
|
||||
{
|
||||
$this->SyncDatabase();
|
||||
|
||||
$iUserID = $this->getUserId($sEmail);
|
||||
if (0 >= $iUserID)
|
||||
if (!$oClient)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
$this->oLogger->Write('PROPFIND '.$sPath, \MailSo\Log\Enumerations\Type::INFO, 'DAV');
|
||||
|
||||
try
|
||||
{
|
||||
$aResponse = $oClient->propFind($sPath, array(
|
||||
'{DAV:}resourcetype'
|
||||
), 1);
|
||||
|
||||
// $this->oLogger->WriteDump($aResponse);
|
||||
}
|
||||
catch (\Exception $oException)
|
||||
{
|
||||
$this->oLogger->WriteException($oException);
|
||||
}
|
||||
|
||||
$bGood = false;
|
||||
if (\is_array($aResponse))
|
||||
{
|
||||
foreach ($aResponse as $sKey => $aItem)
|
||||
{
|
||||
if (!empty($sKey) && isset($aItem['{DAV:}resourcetype']))
|
||||
{
|
||||
$oResourceType = $aItem['{DAV:}resourcetype'];
|
||||
/* @var $oResourceType \SabreForRainLoop\DAV\Property\ResourceType */
|
||||
|
||||
if ($oResourceType && $oResourceType->is('{DAV:}collection') &&
|
||||
$oResourceType->is('{urn:ietf:params:xml:ns:carddav}addressbook'))
|
||||
{
|
||||
$bGood = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ($bGood)
|
||||
{
|
||||
$oClient->__UrlPath__ = $sPath;
|
||||
}
|
||||
|
||||
return $bGood;
|
||||
}
|
||||
|
||||
public function getDavClientFromUrl($sUrl, $sUser, $sPassword, $sProxy = '')
|
||||
{
|
||||
if (!\preg_match('/^http[s]?:\/\//i', $sUrl))
|
||||
{
|
||||
$sUrl = \preg_replace('/^fruux\.com/i', 'dav.fruux.com', $sUrl);
|
||||
$sUrl = \preg_replace('/^icloud\.com/i', 'contacts.icloud.com', $sUrl);
|
||||
$sUrl = \preg_replace('/^gmail\.com/i', 'google.com', $sUrl);
|
||||
|
||||
if (\preg_match('/^(google\.|dav\.fruux\.com|contacts\.icloud\.com)/i', $sUrl))
|
||||
{
|
||||
$sUrl = 'https://'.$sUrl;
|
||||
}
|
||||
else
|
||||
{
|
||||
$sUrl = 'http://'.$sUrl;
|
||||
}
|
||||
}
|
||||
|
||||
$aUrl = \parse_url($sUrl);
|
||||
if (!\is_array($aUrl))
|
||||
{
|
||||
|
|
@ -238,17 +536,117 @@ class PdoAddressBook
|
|||
$aSettings['proxy'] = $sProxy;
|
||||
}
|
||||
|
||||
$sPath = $aUrl['path'];
|
||||
$oClient = new \SabreForRainLoop\DAV\Client($aSettings);
|
||||
$oClient->setVerifyPeer(false);
|
||||
|
||||
if (!\class_exists('Sabre\DAV\Client'))
|
||||
$oClient->__UrlPath__ = $aUrl['path'];
|
||||
|
||||
$this->oLogger->Write('DavClient: User: '.$aSettings['userName'].', Url: '.$sUrl, \MailSo\Log\Enumerations\Type::INFO, 'DAV');
|
||||
|
||||
return $oClient;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $sEmail
|
||||
* @param string $sUrl
|
||||
* @param string $sUser
|
||||
* @param string $sPassword
|
||||
* @param string $sProxy = ''
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function getDavClient($sUrl, $sUser, $sPassword, $sProxy = '')
|
||||
{
|
||||
if (!\class_exists('SabreForRainLoop\DAV\Client'))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
$oClient = new \Sabre\DAV\Client($aSettings);
|
||||
$oClient->setVerifyPeer(false);
|
||||
$oClient = $this->getDavClientFromUrl($sUrl, $sUser, $sPassword, $sProxy);
|
||||
if (!$oClient)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
$this->oLogger->Write('User: '.$aSettings['userName'].', Url: '.$sUrl, \MailSo\Log\Enumerations\Type::INFO, 'DAV');
|
||||
$bGood = false;
|
||||
$sPath = $oClient->__UrlPath__;
|
||||
|
||||
$bGood = false;
|
||||
if ('' === $sPath || '/' === $sPath || !$this->checkContactsPath($oClient, $sPath))
|
||||
{
|
||||
$sNewPath = '';
|
||||
|
||||
$aPaths = $this->getContactsPaths($oClient, $sUser, $sPassword, $sProxy);
|
||||
$this->oLogger->WriteDump($aPaths);
|
||||
|
||||
if (\is_array($aPaths))
|
||||
{
|
||||
if (1 < \count($aPaths))
|
||||
{
|
||||
foreach ($aPaths as $sKey => $sValue)
|
||||
{
|
||||
if (\in_array(\strtolower($sValue), array('contacts', 'default', 'addressbook', 'address book')))
|
||||
{
|
||||
$sNewPath = $sKey;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (empty($sNewPath))
|
||||
{
|
||||
foreach ($aPaths as $sKey => $sValue)
|
||||
{
|
||||
$sNewPath = $sKey;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$sPath = $sNewPath;
|
||||
|
||||
$bGood = $this->checkContactsPath($oClient, $sPath);
|
||||
}
|
||||
else
|
||||
{
|
||||
$bGood = true;
|
||||
}
|
||||
|
||||
if (!$bGood)
|
||||
{
|
||||
$oClient = false;
|
||||
}
|
||||
|
||||
return $oClient;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param string $sEmail
|
||||
* @param string $sUrl
|
||||
* @param string $sUser
|
||||
* @param string $sPassword
|
||||
* @param string $sProxy = ''
|
||||
*
|
||||
* @return bool
|
||||
*/
|
||||
public function Sync($sEmail, $sUrl, $sUser, $sPassword, $sProxy = '')
|
||||
{
|
||||
$this->SyncDatabase();
|
||||
|
||||
$iUserID = $this->getUserId($sEmail);
|
||||
if (0 >= $iUserID)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
$oClient = $this->getDavClient($sUrl, $sUser, $sPassword, $sProxy);
|
||||
if (!$oClient)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
$sPath = $oClient->__UrlPath__;
|
||||
|
||||
$aRemoteSyncData = $this->prepearRemoteSyncData($oClient, $sPath);
|
||||
if (false === $aRemoteSyncData)
|
||||
|
|
@ -258,8 +656,8 @@ class PdoAddressBook
|
|||
|
||||
$aDatabaseSyncData = $this->prepearDatabaseSyncData($iUserID);
|
||||
|
||||
// $this->oLogger->WriteDump($aDatabaseSyncData);
|
||||
// $this->oLogger->WriteDump($aRemoteSyncData);
|
||||
// $this->oLogger->WriteDump($aDatabaseSyncData);
|
||||
|
||||
//+++del (from carddav)
|
||||
foreach ($aDatabaseSyncData as $sKey => $aData)
|
||||
|
|
@ -315,10 +713,13 @@ class PdoAddressBook
|
|||
{
|
||||
$sExsistensBody = \trim($oResponse['body']);
|
||||
}
|
||||
|
||||
// $this->oLogger->WriteDump($sExsistensBody);
|
||||
}
|
||||
|
||||
$oResponse = $this->davClientRequest($oClient, 'PUT',
|
||||
$sPath.$oContact->CardDavNameUri(), $oContact->ToVCard($sExsistensBody, $this->oLogger)."\r\n\r\n");
|
||||
$sPath.(0 < \strlen($mExsistenRemoteID) ? $mExsistenRemoteID : $oContact->CardDavNameUri()),
|
||||
$oContact->ToVCard($sExsistensBody, $this->oLogger)."\r\n\r\n");
|
||||
|
||||
if ($oResponse && isset($oResponse['headers'], $oResponse['headers']['etag']))
|
||||
{
|
||||
|
|
|
|||
|
|
@ -193,6 +193,7 @@ class Service
|
|||
|
||||
$sResult .= '<!--';
|
||||
$sResult .= ' [version:'.APP_VERSION;
|
||||
$sResult .= '][lic:'.($this->oActions->IsOpen() ? 'agpl' : 'cc');
|
||||
$sResult .= '][time:'.\substr(\microtime(true) - APP_START, 0, 6);
|
||||
$sResult .= '][cached:'.($bCached ? 'true' : 'false');
|
||||
$sResult .= '][hash:'.$aTemplateParameters['{{BaseHash}}'];
|
||||
|
|
|
|||
|
|
@ -1,9 +1,9 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV\Backend;
|
||||
namespace SabreForRainLoop\CalDAV\Backend;
|
||||
|
||||
use Sabre\VObject;
|
||||
use Sabre\CalDAV;
|
||||
use SabreForRainLoop\VObject;
|
||||
use SabreForRainLoop\CalDAV;
|
||||
|
||||
/**
|
||||
* Abstract Calendaring backend. Extend this class to create your own backends.
|
||||
|
|
@ -70,7 +70,7 @@ abstract class AbstractBackend implements BackendInterface {
|
|||
* query.
|
||||
*
|
||||
* The list of filters are specified as an array. The exact array is
|
||||
* documented by \Sabre\CalDAV\CalendarQueryParser.
|
||||
* documented by \SabreForRainLoop\CalDAV\CalendarQueryParser.
|
||||
*
|
||||
* Note that it is extremely likely that getCalendarObject for every path
|
||||
* returned from this method will be called almost immediately after. You
|
||||
|
|
@ -99,7 +99,7 @@ abstract class AbstractBackend implements BackendInterface {
|
|||
* time-range filter specified on a VEVENT must for instance also handle
|
||||
* recurrence rules correctly.
|
||||
* A good example of how to interprete all these filters can also simply
|
||||
* be found in \Sabre\CalDAV\CalendarQueryFilter. This class is as correct
|
||||
* be found in \SabreForRainLoop\CalDAV\CalendarQueryFilter. This class is as correct
|
||||
* as possible, so it gives you a good idea on what type of stuff you need
|
||||
* to think of.
|
||||
*
|
||||
|
|
@ -112,7 +112,7 @@ abstract class AbstractBackend implements BackendInterface {
|
|||
$result = array();
|
||||
$objects = $this->getCalendarObjects($calendarId);
|
||||
|
||||
$validator = new \Sabre\CalDAV\CalendarQueryValidator();
|
||||
$validator = new \SabreForRainLoop\CalDAV\CalendarQueryValidator();
|
||||
|
||||
foreach($objects as $object) {
|
||||
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV\Backend;
|
||||
namespace SabreForRainLoop\CalDAV\Backend;
|
||||
|
||||
/**
|
||||
* Every CalDAV backend must at least implement this interface.
|
||||
|
|
@ -191,7 +191,7 @@ interface BackendInterface {
|
|||
* query.
|
||||
*
|
||||
* The list of filters are specified as an array. The exact array is
|
||||
* documented by Sabre\CalDAV\CalendarQueryParser.
|
||||
* documented by SabreForRainLoop\CalDAV\CalendarQueryParser.
|
||||
*
|
||||
* Note that it is extremely likely that getCalendarObject for every path
|
||||
* returned from this method will be called almost immediately after. You
|
||||
|
|
@ -220,7 +220,7 @@ interface BackendInterface {
|
|||
* time-range filter specified on a VEVENT must for instance also handle
|
||||
* recurrence rules correctly.
|
||||
* A good example of how to interprete all these filters can also simply
|
||||
* be found in Sabre\CalDAV\CalendarQueryFilter. This class is as correct
|
||||
* be found in SabreForRainLoop\CalDAV\CalendarQueryFilter. This class is as correct
|
||||
* as possible, so it gives you a good idea on what type of stuff you need
|
||||
* to think of.
|
||||
*
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV\Backend;
|
||||
namespace SabreForRainLoop\CalDAV\Backend;
|
||||
|
||||
/**
|
||||
* Adds caldav notification support to a backend.
|
||||
|
|
@ -26,7 +26,7 @@ interface NotificationSupport extends BackendInterface {
|
|||
* Returns a list of notifications for a given principal url.
|
||||
*
|
||||
* The returned array should only consist of implementations of
|
||||
* \Sabre\CalDAV\Notifications\INotificationType.
|
||||
* \SabreForRainLoop\CalDAV\Notifications\INotificationType.
|
||||
*
|
||||
* @param string $principalUri
|
||||
* @return array
|
||||
|
|
@ -39,9 +39,9 @@ interface NotificationSupport extends BackendInterface {
|
|||
* This may be called by a client once it deems a notification handled.
|
||||
*
|
||||
* @param string $principalUri
|
||||
* @param \Sabre\CalDAV\Notifications\INotificationType $notification
|
||||
* @param \SabreForRainLoop\CalDAV\Notifications\INotificationType $notification
|
||||
* @return void
|
||||
*/
|
||||
public function deleteNotification($principalUri, \Sabre\CalDAV\Notifications\INotificationType $notification);
|
||||
public function deleteNotification($principalUri, \SabreForRainLoop\CalDAV\Notifications\INotificationType $notification);
|
||||
|
||||
}
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV\Backend;
|
||||
namespace SabreForRainLoop\CalDAV\Backend;
|
||||
|
||||
use Sabre\VObject;
|
||||
use Sabre\CalDAV;
|
||||
use Sabre\DAV;
|
||||
use SabreForRainLoop\VObject;
|
||||
use SabreForRainLoop\CalDAV;
|
||||
use SabreForRainLoop\DAV;
|
||||
|
||||
/**
|
||||
* PDO CalDAV backend
|
||||
|
|
@ -175,7 +175,7 @@ class PDO extends AbstractBackend {
|
|||
$values[':components'] = 'VEVENT,VTODO';
|
||||
} else {
|
||||
if (!($properties[$sccs] instanceof CalDAV\Property\SupportedCalendarComponentSet)) {
|
||||
throw new DAV\Exception('The ' . $sccs . ' property must be of type: \Sabre\CalDAV\Property\SupportedCalendarComponentSet');
|
||||
throw new DAV\Exception('The ' . $sccs . ' property must be of type: \SabreForRainLoop\CalDAV\Property\SupportedCalendarComponentSet');
|
||||
}
|
||||
$values[':components'] = implode(',',$properties[$sccs]->getValue());
|
||||
}
|
||||
|
|
@ -497,7 +497,7 @@ class PDO extends AbstractBackend {
|
|||
}
|
||||
}
|
||||
if (!$componentType) {
|
||||
throw new \Sabre\DAV\Exception\BadRequest('Calendar objects must have a VJOURNAL, VEVENT or VTODO component');
|
||||
throw new \SabreForRainLoop\DAV\Exception\BadRequest('Calendar objects must have a VJOURNAL, VEVENT or VTODO component');
|
||||
}
|
||||
if ($componentType === 'VEVENT') {
|
||||
$firstOccurence = $component->DTSTART->getDateTime()->getTimeStamp();
|
||||
|
|
@ -572,7 +572,7 @@ class PDO extends AbstractBackend {
|
|||
* query.
|
||||
*
|
||||
* The list of filters are specified as an array. The exact array is
|
||||
* documented by \Sabre\CalDAV\CalendarQueryParser.
|
||||
* documented by \SabreForRainLoop\CalDAV\CalendarQueryParser.
|
||||
*
|
||||
* Note that it is extremely likely that getCalendarObject for every path
|
||||
* returned from this method will be called almost immediately after. You
|
||||
|
|
@ -601,7 +601,7 @@ class PDO extends AbstractBackend {
|
|||
* time-range filter specified on a VEVENT must for instance also handle
|
||||
* recurrence rules correctly.
|
||||
* A good example of how to interprete all these filters can also simply
|
||||
* be found in \Sabre\CalDAV\CalendarQueryFilter. This class is as correct
|
||||
* be found in \SabreForRainLoop\CalDAV\CalendarQueryFilter. This class is as correct
|
||||
* as possible, so it gives you a good idea on what type of stuff you need
|
||||
* to think of.
|
||||
*
|
||||
|
|
@ -615,7 +615,7 @@ class PDO extends AbstractBackend {
|
|||
public function calendarQuery($calendarId, array $filters) {
|
||||
|
||||
$result = array();
|
||||
$validator = new \Sabre\CalDAV\CalendarQueryValidator();
|
||||
$validator = new \SabreForRainLoop\CalDAV\CalendarQueryValidator();
|
||||
|
||||
$componentType = null;
|
||||
$requirePostFilter = true;
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV\Backend;
|
||||
namespace SabreForRainLoop\CalDAV\Backend;
|
||||
|
||||
/**
|
||||
* Adds support for sharing features to a CalDAV server.
|
||||
|
|
@ -65,12 +65,12 @@ namespace Sabre\CalDAV\Backend;
|
|||
* change.
|
||||
* This notification is always represented by:
|
||||
*
|
||||
* Sabre\CalDAV\Notifications\Notification\Invite
|
||||
* SabreForRainLoop\CalDAV\Notifications\Notification\Invite
|
||||
*
|
||||
* In the case of an invite, the sharee may reply with an 'accept' or
|
||||
* 'decline'. These are always represented by:
|
||||
*
|
||||
* Sabre\CalDAV\Notifications\Notification\Invite
|
||||
* SabreForRainLoop\CalDAV\Notifications\Notification\Invite
|
||||
*
|
||||
*
|
||||
* Calendar access by sharees
|
||||
|
|
@ -156,7 +156,7 @@ namespace Sabre\CalDAV\Backend;
|
|||
* Selectively disabling publish or share feature
|
||||
* ==============================================
|
||||
*
|
||||
* If Sabre\CalDAV\Property\AllowedSharingModes is returned from
|
||||
* If SabreForRainLoop\CalDAV\Property\AllowedSharingModes is returned from
|
||||
* getCalendarsByUser, this allows the server to specify whether either sharing,
|
||||
* or publishing is supported.
|
||||
*
|
||||
|
|
@ -202,7 +202,7 @@ interface SharingSupport extends NotificationSupport {
|
|||
* Every element in this array should have the following properties:
|
||||
* * href - Often a mailto: address
|
||||
* * commonName - Optional, for example a first + last name
|
||||
* * status - See the Sabre\CalDAV\SharingPlugin::STATUS_ constants.
|
||||
* * status - See the SabreForRainLoop\CalDAV\SharingPlugin::STATUS_ constants.
|
||||
* * readOnly - boolean
|
||||
* * summary - Optional, a description for the share
|
||||
*
|
||||
|
|
@ -1,15 +1,15 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV;
|
||||
namespace SabreForRainLoop\CalDAV;
|
||||
|
||||
use Sabre\DAV;
|
||||
use Sabre\DAVACL;
|
||||
use SabreForRainLoop\DAV;
|
||||
use SabreForRainLoop\DAVACL;
|
||||
|
||||
/**
|
||||
* This object represents a CalDAV calendar.
|
||||
*
|
||||
* A calendar can contain multiple TODO and or Events. These are represented
|
||||
* as \Sabre\CalDAV\CalendarObject objects.
|
||||
* as \SabreForRainLoop\CalDAV\CalendarObject objects.
|
||||
*
|
||||
* @copyright Copyright (C) 2007-2013 fruux GmbH (https://fruux.com/).
|
||||
* @author Evert Pot (http://evertpot.com/)
|
||||
|
|
@ -103,7 +103,7 @@ class Calendar implements ICalendar, DAV\IProperties, DAVACL\IACL {
|
|||
* The contained calendar objects are for example Events or Todo's.
|
||||
*
|
||||
* @param string $name
|
||||
* @return \Sabre\CalDAV\ICalendarObject
|
||||
* @return \SabreForRainLoop\CalDAV\ICalendarObject
|
||||
*/
|
||||
public function getChild($name) {
|
||||
|
||||
|
|
@ -323,7 +323,7 @@ class Calendar implements ICalendar, DAV\IProperties, DAVACL\IACL {
|
|||
* Returns the list of supported privileges for this node.
|
||||
*
|
||||
* The returned data structure is a list of nested privileges.
|
||||
* See \Sabre\DAVACL\Plugin::getDefaultSupportedPrivilegeSet for a simple
|
||||
* See \SabreForRainLoop\DAVACL\Plugin::getDefaultSupportedPrivilegeSet for a simple
|
||||
* standard structure.
|
||||
*
|
||||
* If null is returned from this method, the default privilege set is used,
|
||||
|
|
@ -362,7 +362,7 @@ class Calendar implements ICalendar, DAV\IProperties, DAVACL\IACL {
|
|||
* query.
|
||||
*
|
||||
* The list of filters are specified as an array. The exact array is
|
||||
* documented by Sabre\CalDAV\CalendarQueryParser.
|
||||
* documented by SabreForRainLoop\CalDAV\CalendarQueryParser.
|
||||
*
|
||||
* @param array $filters
|
||||
* @return array
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV;
|
||||
namespace SabreForRainLoop\CalDAV;
|
||||
|
||||
/**
|
||||
* The CalendarObject represents a single VEVENT or VTODO within a Calendar.
|
||||
|
|
@ -9,12 +9,12 @@ namespace Sabre\CalDAV;
|
|||
* @author Evert Pot (http://evertpot.com/)
|
||||
* @license http://code.google.com/p/sabredav/wiki/License Modified BSD License
|
||||
*/
|
||||
class CalendarObject extends \Sabre\DAV\File implements ICalendarObject, \Sabre\DAVACL\IACL {
|
||||
class CalendarObject extends \SabreForRainLoop\DAV\File implements ICalendarObject, \SabreForRainLoop\DAVACL\IACL {
|
||||
|
||||
/**
|
||||
* Sabre\CalDAV\Backend\BackendInterface
|
||||
* SabreForRainLoop\CalDAV\Backend\BackendInterface
|
||||
*
|
||||
* @var Sabre\CalDAV\Backend\AbstractBackend
|
||||
* @var SabreForRainLoop\CalDAV\Backend\AbstractBackend
|
||||
*/
|
||||
protected $caldavBackend;
|
||||
|
||||
|
|
@ -253,7 +253,7 @@ class CalendarObject extends \Sabre\DAV\File implements ICalendarObject, \Sabre\
|
|||
*/
|
||||
public function setACL(array $acl) {
|
||||
|
||||
throw new \Sabre\DAV\Exception\MethodNotAllowed('Changing ACL is not yet supported');
|
||||
throw new \SabreForRainLoop\DAV\Exception\MethodNotAllowed('Changing ACL is not yet supported');
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -261,7 +261,7 @@ class CalendarObject extends \Sabre\DAV\File implements ICalendarObject, \Sabre\
|
|||
* Returns the list of supported privileges for this node.
|
||||
*
|
||||
* The returned data structure is a list of nested privileges.
|
||||
* See \Sabre\DAVACL\Plugin::getDefaultSupportedPrivilegeSet for a simple
|
||||
* See \SabreForRainLoop\DAVACL\Plugin::getDefaultSupportedPrivilegeSet for a simple
|
||||
* standard structure.
|
||||
*
|
||||
* If null is returned from this method, the default privilege set is used,
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV;
|
||||
namespace SabreForRainLoop\CalDAV;
|
||||
|
||||
use Sabre\VObject;
|
||||
use SabreForRainLoop\VObject;
|
||||
|
||||
/**
|
||||
* Parses the calendar-query report request body.
|
||||
|
|
@ -84,16 +84,16 @@ class CalendarQueryParser {
|
|||
|
||||
$filter = $this->xpath->query('/cal:calendar-query/cal:filter');
|
||||
if ($filter->length !== 1) {
|
||||
throw new \Sabre\DAV\Exception\BadRequest('Only one filter element is allowed');
|
||||
throw new \SabreForRainLoop\DAV\Exception\BadRequest('Only one filter element is allowed');
|
||||
}
|
||||
|
||||
$compFilters = $this->parseCompFilters($filter->item(0));
|
||||
if (count($compFilters)!==1) {
|
||||
throw new \Sabre\DAV\Exception\BadRequest('There must be exactly 1 top-level comp-filter.');
|
||||
throw new \SabreForRainLoop\DAV\Exception\BadRequest('There must be exactly 1 top-level comp-filter.');
|
||||
}
|
||||
|
||||
$this->filters = $compFilters[0];
|
||||
$this->requestedProperties = array_keys(\Sabre\DAV\XMLUtil::parseProperties($this->dom->firstChild));
|
||||
$this->requestedProperties = array_keys(\SabreForRainLoop\DAV\XMLUtil::parseProperties($this->dom->firstChild));
|
||||
|
||||
$expand = $this->xpath->query('/cal:calendar-query/dav:prop/cal:calendar-data/cal:expand');
|
||||
if ($expand->length>0) {
|
||||
|
|
@ -132,7 +132,7 @@ class CalendarQueryParser {
|
|||
'VFREEBUSY',
|
||||
'VALARM',
|
||||
))) {
|
||||
throw new \Sabre\DAV\Exception\BadRequest('The time-range filter is not defined for the ' . $compFilter['name'] . ' component');
|
||||
throw new \SabreForRainLoop\DAV\Exception\BadRequest('The time-range filter is not defined for the ' . $compFilter['name'] . ' component');
|
||||
};
|
||||
|
||||
$result[] = $compFilter;
|
||||
|
|
@ -253,7 +253,7 @@ class CalendarQueryParser {
|
|||
}
|
||||
|
||||
if (!is_null($start) && !is_null($end) && $end <= $start) {
|
||||
throw new \Sabre\DAV\Exception\BadRequest('The end-date must be larger than the start-date in the time-range filter');
|
||||
throw new \SabreForRainLoop\DAV\Exception\BadRequest('The end-date must be larger than the start-date in the time-range filter');
|
||||
}
|
||||
|
||||
return array(
|
||||
|
|
@ -273,19 +273,19 @@ class CalendarQueryParser {
|
|||
|
||||
$start = $parentNode->getAttribute('start');
|
||||
if(!$start) {
|
||||
throw new \Sabre\DAV\Exception\BadRequest('The "start" attribute is required for the CALDAV:expand element');
|
||||
throw new \SabreForRainLoop\DAV\Exception\BadRequest('The "start" attribute is required for the CALDAV:expand element');
|
||||
}
|
||||
$start = VObject\DateTimeParser::parseDateTime($start);
|
||||
|
||||
$end = $parentNode->getAttribute('end');
|
||||
if(!$end) {
|
||||
throw new \Sabre\DAV\Exception\BadRequest('The "end" attribute is required for the CALDAV:expand element');
|
||||
throw new \SabreForRainLoop\DAV\Exception\BadRequest('The "end" attribute is required for the CALDAV:expand element');
|
||||
}
|
||||
|
||||
$end = VObject\DateTimeParser::parseDateTime($end);
|
||||
|
||||
if ($end <= $start) {
|
||||
throw new \Sabre\DAV\Exception\BadRequest('The end-date must be larger than the start-date in the expand element.');
|
||||
throw new \SabreForRainLoop\DAV\Exception\BadRequest('The end-date must be larger than the start-date in the expand element.');
|
||||
}
|
||||
|
||||
return array(
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV;
|
||||
namespace SabreForRainLoop\CalDAV;
|
||||
|
||||
use Sabre\VObject;
|
||||
use SabreForRainLoop\VObject;
|
||||
use DateTime;
|
||||
|
||||
/**
|
||||
|
|
@ -23,7 +23,7 @@ class CalendarQueryValidator {
|
|||
/**
|
||||
* Verify if a list of filters applies to the calendar data object
|
||||
*
|
||||
* The list of filters must be formatted as parsed by \Sabre\CalDAV\CalendarQueryParser
|
||||
* The list of filters must be formatted as parsed by \SabreForRainLoop\CalDAV\CalendarQueryParser
|
||||
*
|
||||
* @param VObject\Component $vObject
|
||||
* @param array $filters
|
||||
|
|
@ -273,7 +273,7 @@ class CalendarQueryValidator {
|
|||
$check = (string)$check;
|
||||
}
|
||||
|
||||
$isMatching = \Sabre\DAV\StringUtil::textMatch($check, $textMatch['value'], $textMatch['collation']);
|
||||
$isMatching = \SabreForRainLoop\DAV\StringUtil::textMatch($check, $textMatch['value'], $textMatch['collation']);
|
||||
|
||||
return ($textMatch['negate-condition'] xor $isMatching);
|
||||
|
||||
|
|
@ -369,7 +369,7 @@ class CalendarQueryValidator {
|
|||
}
|
||||
|
||||
case 'VFREEBUSY' :
|
||||
throw new \Sabre\DAV\Exception\NotImplemented('time-range filters are currently not supported on ' . $component->name . ' components');
|
||||
throw new \SabreForRainLoop\DAV\Exception\NotImplemented('time-range filters are currently not supported on ' . $component->name . ' components');
|
||||
|
||||
case 'COMPLETED' :
|
||||
case 'CREATED' :
|
||||
|
|
@ -383,7 +383,7 @@ class CalendarQueryValidator {
|
|||
|
||||
|
||||
default :
|
||||
throw new \Sabre\DAV\Exception\BadRequest('You cannot create a time-range filter on a ' . $component->name . ' component');
|
||||
throw new \SabreForRainLoop\DAV\Exception\BadRequest('You cannot create a time-range filter on a ' . $component->name . ' component');
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV;
|
||||
namespace SabreForRainLoop\CalDAV;
|
||||
|
||||
use Sabre\DAVACL\PrincipalBackend;
|
||||
use SabreForRainLoop\DAVACL\PrincipalBackend;
|
||||
|
||||
/**
|
||||
* Calendars collection
|
||||
|
|
@ -14,12 +14,12 @@ use Sabre\DAVACL\PrincipalBackend;
|
|||
* @author Evert Pot (http://evertpot.com/)
|
||||
* @license http://code.google.com/p/sabredav/wiki/License Modified BSD License
|
||||
*/
|
||||
class CalendarRootNode extends \Sabre\DAVACL\AbstractPrincipalCollection {
|
||||
class CalendarRootNode extends \SabreForRainLoop\DAVACL\AbstractPrincipalCollection {
|
||||
|
||||
/**
|
||||
* CalDAV backend
|
||||
*
|
||||
* @var Sabre\CalDAV\Backend\BackendInterface
|
||||
* @var SabreForRainLoop\CalDAV\Backend\BackendInterface
|
||||
*/
|
||||
protected $caldavBackend;
|
||||
|
||||
|
|
@ -48,7 +48,7 @@ class CalendarRootNode extends \Sabre\DAVACL\AbstractPrincipalCollection {
|
|||
* Returns the nodename
|
||||
*
|
||||
* We're overriding this, because the default will be the 'principalPrefix',
|
||||
* and we want it to be Sabre\CalDAV\Plugin::CALENDAR_ROOT
|
||||
* and we want it to be SabreForRainLoop\CalDAV\Plugin::CALENDAR_ROOT
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
|
|
@ -66,7 +66,7 @@ class CalendarRootNode extends \Sabre\DAVACL\AbstractPrincipalCollection {
|
|||
* supplied by the authentication backend.
|
||||
*
|
||||
* @param array $principal
|
||||
* @return \Sabre\DAV\INode
|
||||
* @return \SabreForRainLoop\DAV\INode
|
||||
*/
|
||||
public function getChildForPrincipal(array $principal) {
|
||||
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV\Exception;
|
||||
namespace SabreForRainLoop\CalDAV\Exception;
|
||||
|
||||
use Sabre\DAV;
|
||||
use Sabre\CalDAV;
|
||||
use SabreForRainLoop\DAV;
|
||||
use SabreForRainLoop\CalDAV;
|
||||
|
||||
/**
|
||||
* InvalidComponentType
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV;
|
||||
namespace SabreForRainLoop\CalDAV;
|
||||
|
||||
use Sabre\DAV;
|
||||
use Sabre\VObject;
|
||||
use SabreForRainLoop\DAV;
|
||||
use SabreForRainLoop\VObject;
|
||||
|
||||
/**
|
||||
* ICS Exporter
|
||||
|
|
@ -21,14 +21,14 @@ class ICSExportPlugin extends DAV\ServerPlugin {
|
|||
/**
|
||||
* Reference to Server class
|
||||
*
|
||||
* @var \Sabre\DAV\Server
|
||||
* @var \SabreForRainLoop\DAV\Server
|
||||
*/
|
||||
protected $server;
|
||||
|
||||
/**
|
||||
* Initializes the plugin and registers event handlers
|
||||
*
|
||||
* @param \Sabre\DAV\Server $server
|
||||
* @param \SabreForRainLoop\DAV\Server $server
|
||||
* @return void
|
||||
*/
|
||||
public function initialize(DAV\Server $server) {
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV;
|
||||
use Sabre\DAV;
|
||||
namespace SabreForRainLoop\CalDAV;
|
||||
use SabreForRainLoop\DAV;
|
||||
|
||||
/**
|
||||
* Calendar interface
|
||||
|
|
@ -26,7 +26,7 @@ interface ICalendar extends DAV\ICollection {
|
|||
* query.
|
||||
*
|
||||
* The list of filters are specified as an array. The exact array is
|
||||
* documented by \Sabre\CalDAV\CalendarQueryParser.
|
||||
* documented by \SabreForRainLoop\CalDAV\CalendarQueryParser.
|
||||
*
|
||||
* @param array $filters
|
||||
* @return array
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV;
|
||||
use Sabre\DAV;
|
||||
namespace SabreForRainLoop\CalDAV;
|
||||
use SabreForRainLoop\DAV;
|
||||
|
||||
/**
|
||||
* CalendarObject interface
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV;
|
||||
namespace SabreForRainLoop\CalDAV;
|
||||
|
||||
/**
|
||||
* This interface represents a Calendar that can be shared with other users.
|
||||
|
|
@ -37,7 +37,7 @@ interface IShareableCalendar extends ICalendar {
|
|||
* Every element in this array should have the following properties:
|
||||
* * href - Often a mailto: address
|
||||
* * commonName - Optional, for example a first + last name
|
||||
* * status - See the Sabre\CalDAV\SharingPlugin::STATUS_ constants.
|
||||
* * status - See the SabreForRainLoop\CalDAV\SharingPlugin::STATUS_ constants.
|
||||
* * readOnly - boolean
|
||||
* * summary - Optional, a description for the share
|
||||
*
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV;
|
||||
namespace SabreForRainLoop\CalDAV;
|
||||
|
||||
/**
|
||||
* This interface represents a Calendar that is shared by a different user.
|
||||
|
|
@ -25,7 +25,7 @@ interface ISharedCalendar extends ICalendar {
|
|||
* Every element in this array should have the following properties:
|
||||
* * href - Often a mailto: address
|
||||
* * commonName - Optional, for example a first + last name
|
||||
* * status - See the Sabre\CalDAV\SharingPlugin::STATUS_ constants.
|
||||
* * status - See the SabreForRainLoop\CalDAV\SharingPlugin::STATUS_ constants.
|
||||
* * readOnly - boolean
|
||||
* * summary - Optional, a description for the share
|
||||
*
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV\Notifications;
|
||||
namespace SabreForRainLoop\CalDAV\Notifications;
|
||||
|
||||
use Sabre\DAV;
|
||||
use Sabre\CalDAV;
|
||||
use Sabre\DAVACL;
|
||||
use SabreForRainLoop\DAV;
|
||||
use SabreForRainLoop\CalDAV;
|
||||
use SabreForRainLoop\DAVACL;
|
||||
|
||||
/**
|
||||
* This node represents a list of notifications.
|
||||
|
|
@ -13,7 +13,7 @@ use Sabre\DAVACL;
|
|||
* interface to allow the Notifications plugin to mark the collection
|
||||
* as a notifications collection.
|
||||
*
|
||||
* This collection should only return Sabre\CalDAV\Notifications\INode nodes as
|
||||
* This collection should only return SabreForRainLoop\CalDAV\Notifications\INode nodes as
|
||||
* its children.
|
||||
*
|
||||
* @copyright Copyright (C) 2007-2013 fruux GmbH (https://fruux.com/).
|
||||
|
|
@ -25,7 +25,7 @@ class Collection extends DAV\Collection implements ICollection, DAVACL\IACL {
|
|||
/**
|
||||
* The notification backend
|
||||
*
|
||||
* @var Sabre\CalDAV\Backend\NotificationSupport
|
||||
* @var SabreForRainLoop\CalDAV\Backend\NotificationSupport
|
||||
*/
|
||||
protected $caldavBackend;
|
||||
|
||||
|
|
@ -156,7 +156,7 @@ class Collection extends DAV\Collection implements ICollection, DAVACL\IACL {
|
|||
* Returns the list of supported privileges for this node.
|
||||
*
|
||||
* The returned data structure is a list of nested privileges.
|
||||
* See Sabre\DAVACL\Plugin::getDefaultSupportedPrivilegeSet for a simple
|
||||
* See SabreForRainLoop\DAVACL\Plugin::getDefaultSupportedPrivilegeSet for a simple
|
||||
* standard structure.
|
||||
*
|
||||
* If null is returned from this method, the default privilege set is used,
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV\Notifications;
|
||||
namespace SabreForRainLoop\CalDAV\Notifications;
|
||||
|
||||
use Sabre\DAV;
|
||||
use SabreForRainLoop\DAV;
|
||||
|
||||
/**
|
||||
* This node represents a list of notifications.
|
||||
|
|
@ -11,7 +11,7 @@ use Sabre\DAV;
|
|||
* interface to allow the Notifications plugin to mark the collection
|
||||
* as a notifications collection.
|
||||
*
|
||||
* This collection should only return Sabre\CalDAV\Notifications\INode nodes as
|
||||
* This collection should only return SabreForRainLoop\CalDAV\Notifications\INode nodes as
|
||||
* its children.
|
||||
*
|
||||
* @copyright Copyright (C) 2007-2013 fruux GmbH (https://fruux.com/).
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV\Notifications;
|
||||
namespace SabreForRainLoop\CalDAV\Notifications;
|
||||
|
||||
/**
|
||||
* This node represents a single notification.
|
||||
*
|
||||
* The signature is mostly identical to that of Sabre\DAV\IFile, but the get() method
|
||||
* The signature is mostly identical to that of SabreForRainLoop\DAV\IFile, but the get() method
|
||||
* MUST return an xml document that matches the requirements of the
|
||||
* 'caldav-notifications.txt' spec.
|
||||
*
|
||||
|
|
@ -20,7 +20,7 @@ interface INode {
|
|||
|
||||
/**
|
||||
* This method must return an xml element, using the
|
||||
* Sabre\CalDAV\Notifications\INotificationType classes.
|
||||
* SabreForRainLoop\CalDAV\Notifications\INotificationType classes.
|
||||
*
|
||||
* @return INotificationType
|
||||
*/
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV\Notifications;
|
||||
use Sabre\DAV;
|
||||
namespace SabreForRainLoop\CalDAV\Notifications;
|
||||
use SabreForRainLoop\DAV;
|
||||
|
||||
/**
|
||||
* This interface reflects a single notification type.
|
||||
|
|
@ -1,15 +1,15 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV\Notifications;
|
||||
namespace SabreForRainLoop\CalDAV\Notifications;
|
||||
|
||||
use Sabre\DAV;
|
||||
use Sabre\CalDAV;
|
||||
use Sabre\DAVACL;
|
||||
use SabreForRainLoop\DAV;
|
||||
use SabreForRainLoop\CalDAV;
|
||||
use SabreForRainLoop\DAVACL;
|
||||
|
||||
/**
|
||||
* This node represents a single notification.
|
||||
*
|
||||
* The signature is mostly identical to that of Sabre\DAV\IFile, but the get() method
|
||||
* The signature is mostly identical to that of SabreForRainLoop\DAV\IFile, but the get() method
|
||||
* MUST return an xml document that matches the requirements of the
|
||||
* 'caldav-notifications.txt' spec.
|
||||
|
||||
|
|
@ -22,14 +22,14 @@ class Node extends DAV\File implements INode, DAVACL\IACL {
|
|||
/**
|
||||
* The notification backend
|
||||
*
|
||||
* @var Sabre\CalDAV\Backend\NotificationSupport
|
||||
* @var SabreForRainLoop\CalDAV\Backend\NotificationSupport
|
||||
*/
|
||||
protected $caldavBackend;
|
||||
|
||||
/**
|
||||
* The actual notification
|
||||
*
|
||||
* @var Sabre\CalDAV\Notifications\INotificationType
|
||||
* @var SabreForRainLoop\CalDAV\Notifications\INotificationType
|
||||
*/
|
||||
protected $notification;
|
||||
|
||||
|
|
@ -81,7 +81,7 @@ class Node extends DAV\File implements INode, DAVACL\IACL {
|
|||
|
||||
/**
|
||||
* This method must return an xml element, using the
|
||||
* Sabre\CalDAV\Notifications\INotificationType classes.
|
||||
* SabreForRainLoop\CalDAV\Notifications\INotificationType classes.
|
||||
*
|
||||
* @return INotificationType
|
||||
*/
|
||||
|
|
@ -175,7 +175,7 @@ class Node extends DAV\File implements INode, DAVACL\IACL {
|
|||
* Returns the list of supported privileges for this node.
|
||||
*
|
||||
* The returned data structure is a list of nested privileges.
|
||||
* See Sabre\DAVACL\Plugin::getDefaultSupportedPrivilegeSet for a simple
|
||||
* See SabreForRainLoop\DAVACL\Plugin::getDefaultSupportedPrivilegeSet for a simple
|
||||
* standard structure.
|
||||
*
|
||||
* If null is returned from this method, the default privilege set is used,
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV\Notifications\Notification;
|
||||
namespace SabreForRainLoop\CalDAV\Notifications\Notification;
|
||||
|
||||
use Sabre\CalDAV\SharingPlugin as SharingPlugin;
|
||||
use Sabre\DAV;
|
||||
use Sabre\CalDAV;
|
||||
use SabreForRainLoop\CalDAV\SharingPlugin as SharingPlugin;
|
||||
use SabreForRainLoop\DAV;
|
||||
use SabreForRainLoop\CalDAV;
|
||||
|
||||
/**
|
||||
* This class represents the cs:invite-notification notification element.
|
||||
|
|
@ -103,7 +103,7 @@ class Invite extends DAV\Property implements CalDAV\Notifications\INotificationT
|
|||
/**
|
||||
* The list of supported components
|
||||
*
|
||||
* @var Sabre\CalDAV\Property\SupportedCalendarComponentSet
|
||||
* @var SabreForRainLoop\CalDAV\Property\SupportedCalendarComponentSet
|
||||
*/
|
||||
protected $supportedComponents;
|
||||
|
||||
|
|
@ -127,7 +127,7 @@ class Invite extends DAV\Property implements CalDAV\Notifications\INotificationT
|
|||
* * summary - Description of the share, can be the same as the
|
||||
* calendar, but may also be modified (optional).
|
||||
* * supportedComponents - An instance of
|
||||
* Sabre\CalDAV\Property\SupportedCalendarComponentSet.
|
||||
* SabreForRainLoop\CalDAV\Property\SupportedCalendarComponentSet.
|
||||
* This allows the client to determine which components
|
||||
* will be supported in the shared calendar. This is
|
||||
* also optional.
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV\Notifications\Notification;
|
||||
namespace SabreForRainLoop\CalDAV\Notifications\Notification;
|
||||
|
||||
use Sabre\CalDAV\SharingPlugin as SharingPlugin;
|
||||
use Sabre\DAV;
|
||||
use Sabre\CalDAV;
|
||||
use SabreForRainLoop\CalDAV\SharingPlugin as SharingPlugin;
|
||||
use SabreForRainLoop\DAV;
|
||||
use SabreForRainLoop\CalDAV;
|
||||
|
||||
/**
|
||||
* This class represents the cs:invite-reply notification element.
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV\Notifications\Notification;
|
||||
namespace SabreForRainLoop\CalDAV\Notifications\Notification;
|
||||
|
||||
use Sabre\DAV;
|
||||
use Sabre\CalDAV;
|
||||
use SabreForRainLoop\DAV;
|
||||
use SabreForRainLoop\CalDAV;
|
||||
|
||||
/**
|
||||
* SystemStatus notification
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV;
|
||||
namespace SabreForRainLoop\CalDAV;
|
||||
|
||||
use Sabre\DAV;
|
||||
use Sabre\DAVACL;
|
||||
use Sabre\VObject;
|
||||
use SabreForRainLoop\DAV;
|
||||
use SabreForRainLoop\DAVACL;
|
||||
use SabreForRainLoop\VObject;
|
||||
|
||||
/**
|
||||
* CalDAV plugin
|
||||
|
|
@ -171,14 +171,14 @@ class Plugin extends DAV\ServerPlugin {
|
|||
$server->xmlNamespaces[self::NS_CALDAV] = 'cal';
|
||||
$server->xmlNamespaces[self::NS_CALENDARSERVER] = 'cs';
|
||||
|
||||
$server->propertyMap['{' . self::NS_CALDAV . '}supported-calendar-component-set'] = 'Sabre\\CalDAV\\Property\\SupportedCalendarComponentSet';
|
||||
$server->propertyMap['{' . self::NS_CALDAV . '}schedule-calendar-transp'] = 'Sabre\\CalDAV\\Property\\ScheduleCalendarTransp';
|
||||
$server->propertyMap['{' . self::NS_CALDAV . '}supported-calendar-component-set'] = 'SabreForRainLoop\\CalDAV\\Property\\SupportedCalendarComponentSet';
|
||||
$server->propertyMap['{' . self::NS_CALDAV . '}schedule-calendar-transp'] = 'SabreForRainLoop\\CalDAV\\Property\\ScheduleCalendarTransp';
|
||||
|
||||
$server->resourceTypeMapping['\\Sabre\\CalDAV\\ICalendar'] = '{urn:ietf:params:xml:ns:caldav}calendar';
|
||||
$server->resourceTypeMapping['\\Sabre\\CalDAV\\Schedule\\IOutbox'] = '{urn:ietf:params:xml:ns:caldav}schedule-outbox';
|
||||
$server->resourceTypeMapping['\\Sabre\\CalDAV\\Principal\\IProxyRead'] = '{http://calendarserver.org/ns/}calendar-proxy-read';
|
||||
$server->resourceTypeMapping['\\Sabre\\CalDAV\\Principal\\IProxyWrite'] = '{http://calendarserver.org/ns/}calendar-proxy-write';
|
||||
$server->resourceTypeMapping['\\Sabre\\CalDAV\\Notifications\\ICollection'] = '{' . self::NS_CALENDARSERVER . '}notification';
|
||||
$server->resourceTypeMapping['\\SabreForRainLoop\\CalDAV\\ICalendar'] = '{urn:ietf:params:xml:ns:caldav}calendar';
|
||||
$server->resourceTypeMapping['\\SabreForRainLoop\\CalDAV\\Schedule\\IOutbox'] = '{urn:ietf:params:xml:ns:caldav}schedule-outbox';
|
||||
$server->resourceTypeMapping['\\SabreForRainLoop\\CalDAV\\Principal\\IProxyRead'] = '{http://calendarserver.org/ns/}calendar-proxy-read';
|
||||
$server->resourceTypeMapping['\\SabreForRainLoop\\CalDAV\\Principal\\IProxyWrite'] = '{http://calendarserver.org/ns/}calendar-proxy-write';
|
||||
$server->resourceTypeMapping['\\SabreForRainLoop\\CalDAV\\Notifications\\ICollection'] = '{' . self::NS_CALENDARSERVER . '}notification';
|
||||
|
||||
array_push($server->protectedProperties,
|
||||
|
||||
|
|
@ -286,7 +286,7 @@ class Plugin extends DAV\ServerPlugin {
|
|||
// for clients matching iCal in the user agent
|
||||
//$ua = $this->server->httpRequest->getHeader('User-Agent');
|
||||
//if (strpos($ua,'iCal/')!==false) {
|
||||
// throw new \Sabre\DAV\Exception\Forbidden('iCal has major bugs in it\'s RFC3744 support. Therefore we are left with no other choice but disabling this feature.');
|
||||
// throw new \SabreForRainLoop\DAV\Exception\Forbidden('iCal has major bugs in it\'s RFC3744 support. Therefore we are left with no other choice but disabling this feature.');
|
||||
//}
|
||||
|
||||
$body = $this->server->httpRequest->getBody(true);
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV\Principal;
|
||||
use Sabre\DAVACL;
|
||||
namespace SabreForRainLoop\CalDAV\Principal;
|
||||
use SabreForRainLoop\DAVACL;
|
||||
|
||||
/**
|
||||
* Principal collection
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV\Principal;
|
||||
namespace SabreForRainLoop\CalDAV\Principal;
|
||||
|
||||
use Sabre\DAVACL;
|
||||
use SabreForRainLoop\DAVACL;
|
||||
|
||||
/**
|
||||
* ProxyRead principal interface
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV\Principal;
|
||||
namespace SabreForRainLoop\CalDAV\Principal;
|
||||
|
||||
use Sabre\DAVACL;
|
||||
use SabreForRainLoop\DAVACL;
|
||||
|
||||
/**
|
||||
* ProxyWrite principal interface
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV\Principal;
|
||||
use Sabre\DAVACL;
|
||||
use Sabre\DAV;
|
||||
namespace SabreForRainLoop\CalDAV\Principal;
|
||||
use SabreForRainLoop\DAVACL;
|
||||
use SabreForRainLoop\DAV;
|
||||
|
||||
/**
|
||||
* ProxyRead principal
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV\Principal;
|
||||
use Sabre\DAVACL;
|
||||
use Sabre\DAV;
|
||||
namespace SabreForRainLoop\CalDAV\Principal;
|
||||
use SabreForRainLoop\DAVACL;
|
||||
use SabreForRainLoop\DAV;
|
||||
|
||||
/**
|
||||
* ProxyWrite principal
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV\Principal;
|
||||
use Sabre\DAV;
|
||||
use Sabre\DAVACL;
|
||||
namespace SabreForRainLoop\CalDAV\Principal;
|
||||
use SabreForRainLoop\DAV;
|
||||
use SabreForRainLoop\DAVACL;
|
||||
|
||||
/**
|
||||
* CalDAV principal
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV\Property;
|
||||
namespace SabreForRainLoop\CalDAV\Property;
|
||||
|
||||
use Sabre\DAV;
|
||||
use SabreForRainLoop\DAV;
|
||||
|
||||
/**
|
||||
* AllowedSharingModes
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV\Property;
|
||||
namespace SabreForRainLoop\CalDAV\Property;
|
||||
|
||||
use Sabre\CalDAV\SharingPlugin as SharingPlugin;
|
||||
use Sabre\DAV;
|
||||
use Sabre\CalDAV;
|
||||
use SabreForRainLoop\CalDAV\SharingPlugin as SharingPlugin;
|
||||
use SabreForRainLoop\DAV;
|
||||
use SabreForRainLoop\CalDAV;
|
||||
|
||||
/**
|
||||
* Invite property
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV\Property;
|
||||
namespace SabreForRainLoop\CalDAV\Property;
|
||||
|
||||
use Sabre\DAV;
|
||||
use Sabre\CalDAV;
|
||||
use SabreForRainLoop\DAV;
|
||||
use SabreForRainLoop\CalDAV;
|
||||
|
||||
/**
|
||||
* schedule-calendar-transp property.
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV\Property;
|
||||
namespace SabreForRainLoop\CalDAV\Property;
|
||||
|
||||
use Sabre\DAV;
|
||||
use Sabre\CalDAV;
|
||||
use SabreForRainLoop\DAV;
|
||||
use SabreForRainLoop\CalDAV;
|
||||
|
||||
/**
|
||||
* Supported component set property
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV\Property;
|
||||
use Sabre\DAV;
|
||||
use Sabre\CalDAV\Plugin;
|
||||
namespace SabreForRainLoop\CalDAV\Property;
|
||||
use SabreForRainLoop\DAV;
|
||||
use SabreForRainLoop\CalDAV\Plugin;
|
||||
|
||||
/**
|
||||
* Supported-calendar-data property
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV\Property;
|
||||
use Sabre\DAV;
|
||||
namespace SabreForRainLoop\CalDAV\Property;
|
||||
use SabreForRainLoop\DAV;
|
||||
|
||||
/**
|
||||
* supported-collation-set property
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV\Schedule;
|
||||
namespace SabreForRainLoop\CalDAV\Schedule;
|
||||
|
||||
use Sabre\VObject;
|
||||
use Sabre\DAV;
|
||||
use SabreForRainLoop\VObject;
|
||||
use SabreForRainLoop\DAV;
|
||||
|
||||
/**
|
||||
* iMIP handler.
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV\Schedule;
|
||||
namespace SabreForRainLoop\CalDAV\Schedule;
|
||||
|
||||
/**
|
||||
* Implement this interface to have a node be recognized as a CalDAV scheduling
|
||||
|
|
@ -10,7 +10,7 @@ namespace Sabre\CalDAV\Schedule;
|
|||
* @author Evert Pot (http://evertpot.com/)
|
||||
* @license http://code.google.com/p/sabredav/wiki/License Modified BSD License
|
||||
*/
|
||||
interface IOutbox extends \Sabre\DAV\ICollection, \Sabre\DAVACL\IACL {
|
||||
interface IOutbox extends \SabreForRainLoop\DAV\ICollection, \SabreForRainLoop\DAVACL\IACL {
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV\Schedule;
|
||||
use Sabre\DAV;
|
||||
use Sabre\CalDAV;
|
||||
use Sabre\DAVACL;
|
||||
namespace SabreForRainLoop\CalDAV\Schedule;
|
||||
use SabreForRainLoop\DAV;
|
||||
use SabreForRainLoop\CalDAV;
|
||||
use SabreForRainLoop\DAVACL;
|
||||
|
||||
/**
|
||||
* The CalDAV scheduling outbox
|
||||
|
|
@ -52,7 +52,7 @@ class Outbox extends DAV\Collection implements IOutbox {
|
|||
/**
|
||||
* Returns an array with all the child nodes
|
||||
*
|
||||
* @return \Sabre\DAV\INode[]
|
||||
* @return \SabreForRainLoop\DAV\INode[]
|
||||
*/
|
||||
public function getChildren() {
|
||||
|
||||
|
|
@ -138,7 +138,7 @@ class Outbox extends DAV\Collection implements IOutbox {
|
|||
* Returns the list of supported privileges for this node.
|
||||
*
|
||||
* The returned data structure is a list of nested privileges.
|
||||
* See Sabre\DAVACL\Plugin::getDefaultSupportedPrivilegeSet for a simple
|
||||
* See SabreForRainLoop\DAVACL\Plugin::getDefaultSupportedPrivilegeSet for a simple
|
||||
* standard structure.
|
||||
*
|
||||
* If null is returned from this method, the default privilege set is used,
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV;
|
||||
namespace SabreForRainLoop\CalDAV;
|
||||
|
||||
/**
|
||||
* This object represents a CalDAV calendar that can be shared with other
|
||||
|
|
@ -42,7 +42,7 @@ class ShareableCalendar extends Calendar implements IShareableCalendar {
|
|||
* Every element in this array should have the following properties:
|
||||
* * href - Often a mailto: address
|
||||
* * commonName - Optional, for example a first + last name
|
||||
* * status - See the Sabre\CalDAV\SharingPlugin::STATUS_ constants.
|
||||
* * status - See the SabreForRainLoop\CalDAV\SharingPlugin::STATUS_ constants.
|
||||
* * readOnly - boolean
|
||||
* * summary - Optional, a description for the share
|
||||
*
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV;
|
||||
namespace SabreForRainLoop\CalDAV;
|
||||
|
||||
use Sabre\DAVACL;
|
||||
use SabreForRainLoop\DAVACL;
|
||||
|
||||
/**
|
||||
* This object represents a CalDAV calendar that is shared by a different user.
|
||||
|
|
@ -101,7 +101,7 @@ class SharedCalendar extends Calendar implements ISharedCalendar {
|
|||
* Every element in this array should have the following properties:
|
||||
* * href - Often a mailto: address
|
||||
* * commonName - Optional, for example a first + last name
|
||||
* * status - See the Sabre\CalDAV\SharingPlugin::STATUS_ constants.
|
||||
* * status - See the SabreForRainLoop\CalDAV\SharingPlugin::STATUS_ constants.
|
||||
* * readOnly - boolean
|
||||
* * summary - Optional, a description for the share
|
||||
*
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV;
|
||||
namespace SabreForRainLoop\CalDAV;
|
||||
|
||||
use Sabre\DAV;
|
||||
use SabreForRainLoop\DAV;
|
||||
|
||||
/**
|
||||
* This plugin implements support for caldav sharing.
|
||||
|
|
@ -11,7 +11,7 @@ use Sabre\DAV;
|
|||
* http://svn.calendarserver.org/repository/calendarserver/CalendarServer/trunk/doc/Extensions/caldav-sharing.txt
|
||||
*
|
||||
* See:
|
||||
* Sabre\CalDAV\Backend\SharingSupport for all the documentation.
|
||||
* SabreForRainLoop\CalDAV\Backend\SharingSupport for all the documentation.
|
||||
*
|
||||
* Note: This feature is experimental, and may change in between different
|
||||
* SabreDAV versions.
|
||||
|
|
@ -34,7 +34,7 @@ class SharingPlugin extends DAV\ServerPlugin {
|
|||
/**
|
||||
* Reference to SabreDAV server object.
|
||||
*
|
||||
* @var Sabre\DAV\Server
|
||||
* @var SabreForRainLoop\DAV\Server
|
||||
*/
|
||||
protected $server;
|
||||
|
||||
|
|
@ -56,7 +56,7 @@ class SharingPlugin extends DAV\ServerPlugin {
|
|||
* Returns a plugin name.
|
||||
*
|
||||
* Using this name other plugins will be able to access other plugins
|
||||
* using Sabre\DAV\Server::getPlugin
|
||||
* using SabreForRainLoop\DAV\Server::getPlugin
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
|
|
@ -69,7 +69,7 @@ class SharingPlugin extends DAV\ServerPlugin {
|
|||
/**
|
||||
* This initializes the plugin.
|
||||
*
|
||||
* This function is called by Sabre\DAV\Server, after
|
||||
* This function is called by SabreForRainLoop\DAV\Server, after
|
||||
* addPlugin is called.
|
||||
*
|
||||
* This method should set up the required event subscriptions.
|
||||
|
|
@ -80,7 +80,7 @@ class SharingPlugin extends DAV\ServerPlugin {
|
|||
public function initialize(DAV\Server $server) {
|
||||
|
||||
$this->server = $server;
|
||||
$server->resourceTypeMapping['Sabre\\CalDAV\\ISharedCalendar'] = '{' . Plugin::NS_CALENDARSERVER . '}shared';
|
||||
$server->resourceTypeMapping['SabreForRainLoop\\CalDAV\\ISharedCalendar'] = '{' . Plugin::NS_CALENDARSERVER . '}shared';
|
||||
|
||||
array_push(
|
||||
$this->server->protectedProperties,
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV;
|
||||
namespace SabreForRainLoop\CalDAV;
|
||||
|
||||
use Sabre\DAV;
|
||||
use Sabre\DAVACL;
|
||||
use SabreForRainLoop\DAV;
|
||||
use SabreForRainLoop\DAVACL;
|
||||
|
||||
/**
|
||||
* The UserCalenders class contains all calendars associated to one user
|
||||
|
|
@ -17,7 +17,7 @@ class UserCalendars implements DAV\IExtendedCollection, DAVACL\IACL {
|
|||
/**
|
||||
* CalDAV backend
|
||||
*
|
||||
* @var Sabre\CalDAV\Backend\BackendInterface
|
||||
* @var SabreForRainLoop\CalDAV\Backend\BackendInterface
|
||||
*/
|
||||
protected $caldavBackend;
|
||||
|
||||
|
|
@ -302,7 +302,7 @@ class UserCalendars implements DAV\IExtendedCollection, DAVACL\IACL {
|
|||
* Returns the list of supported privileges for this node.
|
||||
*
|
||||
* The returned data structure is a list of nested privileges.
|
||||
* See Sabre\DAVACL\Plugin::getDefaultSupportedPrivilegeSet for a simple
|
||||
* See SabreForRainLoop\DAVACL\Plugin::getDefaultSupportedPrivilegeSet for a simple
|
||||
* standard structure.
|
||||
*
|
||||
* If null is returned from this method, the default privilege set is used,
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CalDAV;
|
||||
namespace SabreForRainLoop\CalDAV;
|
||||
|
||||
/**
|
||||
* This class contains the Sabre\CalDAV version constants.
|
||||
* This class contains the SabreForRainLoop\CalDAV version constants.
|
||||
*
|
||||
* @copyright Copyright (C) 2007-2013 fruux GmbH (https://fruux.com/).
|
||||
* @author Evert Pot (http://evertpot.com/)
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CardDAV;
|
||||
namespace SabreForRainLoop\CardDAV;
|
||||
|
||||
use Sabre\DAV;
|
||||
use Sabre\DAVACL;
|
||||
use SabreForRainLoop\DAV;
|
||||
use SabreForRainLoop\DAVACL;
|
||||
|
||||
/**
|
||||
* The AddressBook class represents a CardDAV addressbook, owned by a specific user
|
||||
|
|
@ -298,7 +298,7 @@ class AddressBook extends DAV\Collection implements IAddressBook, DAV\IPropertie
|
|||
* Returns the list of supported privileges for this node.
|
||||
*
|
||||
* The returned data structure is a list of nested privileges.
|
||||
* See Sabre\DAVACL\Plugin::getDefaultSupportedPrivilegeSet for a simple
|
||||
* See SabreForRainLoop\DAVACL\Plugin::getDefaultSupportedPrivilegeSet for a simple
|
||||
* standard structure.
|
||||
*
|
||||
* If null is returned from this method, the default privilege set is used,
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CardDAV;
|
||||
namespace SabreForRainLoop\CardDAV;
|
||||
|
||||
use Sabre\DAV;
|
||||
use SabreForRainLoop\DAV;
|
||||
|
||||
/**
|
||||
* Parses the addressbook-query report request body.
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CardDAV;
|
||||
namespace SabreForRainLoop\CardDAV;
|
||||
|
||||
use Sabre\DAVACL;
|
||||
use SabreForRainLoop\DAVACL;
|
||||
|
||||
/**
|
||||
* AddressBook rootnode
|
||||
|
|
@ -18,7 +18,7 @@ class AddressBookRoot extends DAVACL\AbstractPrincipalCollection {
|
|||
/**
|
||||
* Principal Backend
|
||||
*
|
||||
* @var Sabre\DAVACL\PrincipalBackend\BackendInteface
|
||||
* @var SabreForRainLoop\DAVACL\PrincipalBackend\BackendInteface
|
||||
*/
|
||||
protected $principalBackend;
|
||||
|
||||
|
|
@ -69,7 +69,7 @@ class AddressBookRoot extends DAVACL\AbstractPrincipalCollection {
|
|||
* supplied by the authentication backend.
|
||||
*
|
||||
* @param array $principal
|
||||
* @return \Sabre\DAV\INode
|
||||
* @return \SabreForRainLoop\DAV\INode
|
||||
*/
|
||||
public function getChildForPrincipal(array $principal) {
|
||||
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CardDAV\Backend;
|
||||
namespace SabreForRainLoop\CardDAV\Backend;
|
||||
|
||||
/**
|
||||
* CardDAV abstract Backend
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CardDAV\Backend;
|
||||
namespace SabreForRainLoop\CardDAV\Backend;
|
||||
|
||||
/**
|
||||
* CardDAV Backend Interface
|
||||
|
|
@ -39,12 +39,12 @@ interface BackendInterface {
|
|||
/**
|
||||
* Updates an addressbook's properties
|
||||
*
|
||||
* See Sabre\DAV\IProperties for a description of the mutations array, as
|
||||
* See SabreForRainLoop\DAV\IProperties for a description of the mutations array, as
|
||||
* well as the return value.
|
||||
*
|
||||
* @param mixed $addressBookId
|
||||
* @param array $mutations
|
||||
* @see Sabre\DAV\IProperties::updateProperties
|
||||
* @see SabreForRainLoop\DAV\IProperties::updateProperties
|
||||
* @return bool|array
|
||||
*/
|
||||
public function updateAddressBook($addressBookId, array $mutations);
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CardDAV\Backend;
|
||||
namespace SabreForRainLoop\CardDAV\Backend;
|
||||
|
||||
use Sabre\CardDAV;
|
||||
use Sabre\DAV;
|
||||
use SabreForRainLoop\CardDAV;
|
||||
use SabreForRainLoop\DAV;
|
||||
|
||||
/**
|
||||
* PDO CardDAV backend
|
||||
|
|
@ -84,12 +84,12 @@ class PDO extends AbstractBackend {
|
|||
/**
|
||||
* Updates an addressbook's properties
|
||||
*
|
||||
* See Sabre\DAV\IProperties for a description of the mutations array, as
|
||||
* See SabreForRainLoop\DAV\IProperties for a description of the mutations array, as
|
||||
* well as the return value.
|
||||
*
|
||||
* @param mixed $addressBookId
|
||||
* @param array $mutations
|
||||
* @see Sabre\DAV\IProperties::updateProperties
|
||||
* @see SabreForRainLoop\DAV\IProperties::updateProperties
|
||||
* @return bool|array
|
||||
*/
|
||||
public function updateAddressBook($addressBookId, array $mutations) {
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CardDAV;
|
||||
namespace SabreForRainLoop\CardDAV;
|
||||
|
||||
use Sabre\DAVACL;
|
||||
use Sabre\DAV;
|
||||
use SabreForRainLoop\DAVACL;
|
||||
use SabreForRainLoop\DAV;
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -242,7 +242,7 @@ class Card extends DAV\File implements ICard, DAVACL\IACL {
|
|||
* Returns the list of supported privileges for this node.
|
||||
*
|
||||
* The returned data structure is a list of nested privileges.
|
||||
* See Sabre\DAVACL\Plugin::getDefaultSupportedPrivilegeSet for a simple
|
||||
* See SabreForRainLoop\DAVACL\Plugin::getDefaultSupportedPrivilegeSet for a simple
|
||||
* standard structure.
|
||||
*
|
||||
* If null is returned from this method, the default privilege set is used,
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CardDAV;
|
||||
namespace SabreForRainLoop\CardDAV;
|
||||
|
||||
use Sabre\DAV;
|
||||
use SabreForRainLoop\DAV;
|
||||
|
||||
/**
|
||||
* AddressBook interface
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CardDAV;
|
||||
namespace SabreForRainLoop\CardDAV;
|
||||
|
||||
use Sabre\DAV;
|
||||
use SabreForRainLoop\DAV;
|
||||
|
||||
/**
|
||||
* Card interface
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CardDAV;
|
||||
namespace SabreForRainLoop\CardDAV;
|
||||
|
||||
/**
|
||||
* IDirectory interface
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CardDAV;
|
||||
namespace SabreForRainLoop\CardDAV;
|
||||
|
||||
use Sabre\DAV;
|
||||
use Sabre\DAVACL;
|
||||
use Sabre\VObject;
|
||||
use SabreForRainLoop\DAV;
|
||||
use SabreForRainLoop\DAVACL;
|
||||
use SabreForRainLoop\VObject;
|
||||
|
||||
/**
|
||||
* CardDAV plugin
|
||||
|
|
@ -38,7 +38,7 @@ class Plugin extends DAV\ServerPlugin {
|
|||
/**
|
||||
* Server class
|
||||
*
|
||||
* @var Sabre\DAV\Server
|
||||
* @var SabreForRainLoop\DAV\Server
|
||||
*/
|
||||
protected $server;
|
||||
|
||||
|
|
@ -64,8 +64,8 @@ class Plugin extends DAV\ServerPlugin {
|
|||
$server->xmlNamespaces[self::NS_CARDDAV] = 'card';
|
||||
|
||||
/* Mapping Interfaces to {DAV:}resourcetype values */
|
||||
$server->resourceTypeMapping['Sabre\\CardDAV\\IAddressBook'] = '{' . self::NS_CARDDAV . '}addressbook';
|
||||
$server->resourceTypeMapping['Sabre\\CardDAV\\IDirectory'] = '{' . self::NS_CARDDAV . '}directory';
|
||||
$server->resourceTypeMapping['SabreForRainLoop\\CardDAV\\IAddressBook'] = '{' . self::NS_CARDDAV . '}addressbook';
|
||||
$server->resourceTypeMapping['SabreForRainLoop\\CardDAV\\IDirectory'] = '{' . self::NS_CARDDAV . '}directory';
|
||||
|
||||
/* Adding properties that may never be changed */
|
||||
$server->protectedProperties[] = '{' . self::NS_CARDDAV . '}supported-address-data';
|
||||
|
|
@ -73,7 +73,7 @@ class Plugin extends DAV\ServerPlugin {
|
|||
$server->protectedProperties[] = '{' . self::NS_CARDDAV . '}addressbook-home-set';
|
||||
$server->protectedProperties[] = '{' . self::NS_CARDDAV . '}supported-collation-set';
|
||||
|
||||
$server->propertyMap['{http://calendarserver.org/ns/}me-card'] = 'Sabre\\DAV\\Property\\Href';
|
||||
$server->propertyMap['{http://calendarserver.org/ns/}me-card'] = 'SabreForRainLoop\\DAV\\Property\\Href';
|
||||
|
||||
$this->server = $server;
|
||||
|
||||
|
|
@ -654,7 +654,7 @@ class Plugin extends DAV\ServerPlugin {
|
|||
|
||||
/**
|
||||
* This method is used to generate HTML output for the
|
||||
* Sabre\DAV\Browser\Plugin. This allows us to generate an interface users
|
||||
* SabreForRainLoop\DAV\Browser\Plugin. This allows us to generate an interface users
|
||||
* can use to create new calendars.
|
||||
*
|
||||
* @param DAV\INode $node
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CardDAV\Property;
|
||||
namespace SabreForRainLoop\CardDAV\Property;
|
||||
|
||||
use Sabre\DAV;
|
||||
use Sabre\CardDAV;
|
||||
use SabreForRainLoop\DAV;
|
||||
use SabreForRainLoop\CardDAV;
|
||||
|
||||
/**
|
||||
* Supported-address-data property
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CardDAV;
|
||||
namespace SabreForRainLoop\CardDAV;
|
||||
|
||||
use Sabre\DAV;
|
||||
use Sabre\DAVACL;
|
||||
use SabreForRainLoop\DAV;
|
||||
use SabreForRainLoop\DAVACL;
|
||||
|
||||
/**
|
||||
* UserAddressBooks class
|
||||
|
|
@ -243,7 +243,7 @@ class UserAddressBooks extends DAV\Collection implements DAV\IExtendedCollection
|
|||
* Returns the list of supported privileges for this node.
|
||||
*
|
||||
* The returned data structure is a list of nested privileges.
|
||||
* See Sabre\DAVACL\Plugin::getDefaultSupportedPrivilegeSet for a simple
|
||||
* See SabreForRainLoop\DAVACL\Plugin::getDefaultSupportedPrivilegeSet for a simple
|
||||
* standard structure.
|
||||
*
|
||||
* If null is returned from this method, the default privilege set is used,
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CardDAV;
|
||||
namespace SabreForRainLoop\CardDAV;
|
||||
|
||||
use Sabre\DAV;
|
||||
use Sabre\VObject;
|
||||
use SabreForRainLoop\DAV;
|
||||
use SabreForRainLoop\VObject;
|
||||
|
||||
/**
|
||||
* VCF Exporter
|
||||
|
|
@ -22,7 +22,7 @@ class VCFExportPlugin extends DAV\ServerPlugin {
|
|||
/**
|
||||
* Reference to Server class
|
||||
*
|
||||
* @var Sabre\DAV\Server
|
||||
* @var SabreForRainLoop\DAV\Server
|
||||
*/
|
||||
protected $server;
|
||||
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\CardDAV;
|
||||
namespace SabreForRainLoop\CardDAV;
|
||||
|
||||
/**
|
||||
* Version Class
|
||||
*
|
||||
* This class contains the Sabre\CardDAV version information
|
||||
* This class contains the SabreForRainLoop\CardDAV version information
|
||||
*
|
||||
* @copyright Copyright (C) 2007-2013 fruux GmbH (https://fruux.com/).
|
||||
* @author Evert Pot (http://evertpot.com/)
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\DAV\Auth\Backend;
|
||||
namespace SabreForRainLoop\DAV\Auth\Backend;
|
||||
|
||||
use Sabre\DAV;
|
||||
use Sabre\HTTP;
|
||||
use SabreForRainLoop\DAV;
|
||||
use SabreForRainLoop\HTTP;
|
||||
|
||||
/**
|
||||
* HTTP Basic authentication backend class
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\DAV\Auth\Backend;
|
||||
namespace SabreForRainLoop\DAV\Auth\Backend;
|
||||
|
||||
use Sabre\HTTP;
|
||||
use Sabre\DAV;
|
||||
use SabreForRainLoop\HTTP;
|
||||
use SabreForRainLoop\DAV;
|
||||
|
||||
/**
|
||||
* HTTP Digest authentication backend class
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\DAV\Auth\Backend;
|
||||
use Sabre\DAV;
|
||||
namespace SabreForRainLoop\DAV\Auth\Backend;
|
||||
use SabreForRainLoop\DAV;
|
||||
|
||||
/**
|
||||
* Apache authenticator
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\DAV\Auth\Backend;
|
||||
namespace SabreForRainLoop\DAV\Auth\Backend;
|
||||
|
||||
/**
|
||||
* This is the base class for any authentication object.
|
||||
|
|
@ -17,11 +17,11 @@ interface BackendInterface {
|
|||
* If authentication is successful, true must be returned.
|
||||
* If authentication fails, an exception must be thrown.
|
||||
*
|
||||
* @param \Sabre\DAV\Server $server
|
||||
* @param \SabreForRainLoop\DAV\Server $server
|
||||
* @param string $realm
|
||||
* @return bool
|
||||
*/
|
||||
function authenticate(\Sabre\DAV\Server $server,$realm);
|
||||
function authenticate(\SabreForRainLoop\DAV\Server $server,$realm);
|
||||
|
||||
/**
|
||||
* Returns information about the currently logged in username.
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\DAV\Auth\Backend;
|
||||
namespace SabreForRainLoop\DAV\Auth\Backend;
|
||||
|
||||
use Sabre\DAV;
|
||||
use SabreForRainLoop\DAV;
|
||||
|
||||
/**
|
||||
* This is an authentication backend that uses a file to manage passwords.
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\DAV\Auth\Backend;
|
||||
namespace SabreForRainLoop\DAV\Auth\Backend;
|
||||
|
||||
/**
|
||||
* This is an authentication backend that uses a file to manage passwords.
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\DAV\Auth;
|
||||
use Sabre\DAV;
|
||||
namespace SabreForRainLoop\DAV\Auth;
|
||||
use SabreForRainLoop\DAV;
|
||||
|
||||
/**
|
||||
* This plugin provides Authentication for a WebDAV server.
|
||||
|
|
@ -21,7 +21,7 @@ class Plugin extends DAV\ServerPlugin {
|
|||
/**
|
||||
* Reference to main server object
|
||||
*
|
||||
* @var Sabre\DAV\Server
|
||||
* @var SabreForRainLoop\DAV\Server
|
||||
*/
|
||||
protected $server;
|
||||
|
||||
|
|
@ -100,7 +100,7 @@ class Plugin extends DAV\ServerPlugin {
|
|||
*
|
||||
* @param string $method
|
||||
* @param string $uri
|
||||
* @throws Sabre\DAV\Exception\NotAuthenticated
|
||||
* @throws SabreForRainLoop\DAV\Exception\NotAuthenticated
|
||||
* @return bool
|
||||
*/
|
||||
public function beforeMethod($method, $uri) {
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\DAV\Browser;
|
||||
namespace SabreForRainLoop\DAV\Browser;
|
||||
|
||||
use Sabre\DAV;
|
||||
use SabreForRainLoop\DAV;
|
||||
|
||||
/**
|
||||
* GuessContentType plugin
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\DAV\Browser;
|
||||
namespace SabreForRainLoop\DAV\Browser;
|
||||
|
||||
use Sabre\DAV;
|
||||
use SabreForRainLoop\DAV;
|
||||
|
||||
/**
|
||||
* This is a simple plugin that will map any GET request for non-files to
|
||||
|
|
@ -19,7 +19,7 @@ class MapGetToPropFind extends DAV\ServerPlugin {
|
|||
/**
|
||||
* reference to server class
|
||||
*
|
||||
* @var Sabre\DAV\Server
|
||||
* @var SabreForRainLoop\DAV\Server
|
||||
*/
|
||||
protected $server;
|
||||
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\DAV\Browser;
|
||||
namespace SabreForRainLoop\DAV\Browser;
|
||||
|
||||
use Sabre\DAV;
|
||||
use SabreForRainLoop\DAV;
|
||||
|
||||
/**
|
||||
* Browser Plugin
|
||||
|
|
@ -31,12 +31,12 @@ class Plugin extends DAV\ServerPlugin {
|
|||
* @var array
|
||||
*/
|
||||
public $iconMap = array(
|
||||
'Sabre\\DAV\\IFile' => 'icons/file',
|
||||
'Sabre\\DAV\\ICollection' => 'icons/collection',
|
||||
'Sabre\\DAVACL\\IPrincipal' => 'icons/principal',
|
||||
'Sabre\\CalDAV\\ICalendar' => 'icons/calendar',
|
||||
'Sabre\\CardDAV\\IAddressBook' => 'icons/addressbook',
|
||||
'Sabre\\CardDAV\\ICard' => 'icons/card',
|
||||
'SabreForRainLoop\\DAV\\IFile' => 'icons/file',
|
||||
'SabreForRainLoop\\DAV\\ICollection' => 'icons/collection',
|
||||
'SabreForRainLoop\\DAVACL\\IPrincipal' => 'icons/principal',
|
||||
'SabreForRainLoop\\CalDAV\\ICalendar' => 'icons/calendar',
|
||||
'SabreForRainLoop\\CardDAV\\IAddressBook' => 'icons/addressbook',
|
||||
'SabreForRainLoop\\CardDAV\\ICard' => 'icons/card',
|
||||
);
|
||||
|
||||
/**
|
||||
|
|
@ -49,7 +49,7 @@ class Plugin extends DAV\ServerPlugin {
|
|||
/**
|
||||
* reference to server class
|
||||
*
|
||||
* @var Sabre\DAV\Server
|
||||
* @var SabreForRainLoop\DAV\Server
|
||||
*/
|
||||
protected $server;
|
||||
|
||||
|
|
@ -400,7 +400,7 @@ class Plugin extends DAV\ServerPlugin {
|
|||
|
||||
// We also know fairly certain that if an object is a non-extended
|
||||
// SimpleCollection, we won't need to show the panel either.
|
||||
if (get_class($node)==='Sabre\\DAV\\SimpleCollection')
|
||||
if (get_class($node)==='SabreForRainLoop\\DAV\\SimpleCollection')
|
||||
return;
|
||||
|
||||
$output.= '<tr><td colspan="2"><form method="post" action="">
|
||||
|
Before Width: | Height: | Size: 4.2 KiB After Width: | Height: | Size: 4.2 KiB |
|
Before Width: | Height: | Size: 7.1 KiB After Width: | Height: | Size: 7.1 KiB |
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
|
Before Width: | Height: | Size: 5.6 KiB After Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.4 KiB |
|
Before Width: | Height: | Size: 2.8 KiB After Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 3.4 KiB |
|
Before Width: | Height: | Size: 5.4 KiB After Width: | Height: | Size: 5.4 KiB |
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\DAV;
|
||||
namespace SabreForRainLoop\DAV;
|
||||
|
||||
/**
|
||||
* SabreDAV DAV client
|
||||
|
|
@ -24,7 +24,7 @@ class Client {
|
|||
* respective class.
|
||||
*
|
||||
* The {DAV:}resourcetype property is automatically added. This maps to
|
||||
* Sabre\DAV\Property\ResourceType
|
||||
* SabreForRainLoop\DAV\Property\ResourceType
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
|
|
@ -103,7 +103,7 @@ class Client {
|
|||
$this->authType = self::AUTH_BASIC | self::AUTH_DIGEST;
|
||||
}
|
||||
|
||||
$this->propertyMap['{DAV:}resourcetype'] = 'Sabre\\DAV\\Property\\ResourceType';
|
||||
$this->propertyMap['{DAV:}resourcetype'] = 'SabreForRainLoop\\DAV\\Property\\ResourceType';
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -376,6 +376,9 @@ class Client {
|
|||
$curlSettings[CURLOPT_USERPWD] = $this->userName . ':' . $this->password;
|
||||
}
|
||||
|
||||
// var_dump($url);
|
||||
// var_dump($curlSettings);
|
||||
|
||||
list(
|
||||
$response,
|
||||
$curlInfo,
|
||||
|
|
@ -383,9 +386,12 @@ class Client {
|
|||
$curlError
|
||||
) = $this->curlRequest($url, $curlSettings);
|
||||
|
||||
// var_dump($response);
|
||||
|
||||
$headerBlob = substr($response, 0, $curlInfo['header_size']);
|
||||
$response = substr($response, $curlInfo['header_size']);
|
||||
|
||||
|
||||
// In the case of 100 Continue, or redirects we'll have multiple lists
|
||||
// of headers for each separate HTTP response. We can easily split this
|
||||
// because they are separated by \r\n\r\n
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\DAV;
|
||||
namespace SabreForRainLoop\DAV;
|
||||
|
||||
/**
|
||||
* Collection class
|
||||
|
|
@ -21,7 +21,7 @@ abstract class Collection extends Node implements ICollection {
|
|||
* nodes, and compares the name.
|
||||
* Generally its wise to override this, as this can usually be optimized
|
||||
*
|
||||
* This method must throw Sabre\DAV\Exception\NotFound if the node does not
|
||||
* This method must throw SabreForRainLoop\DAV\Exception\NotFound if the node does not
|
||||
* exist.
|
||||
*
|
||||
* @param string $name
|
||||
|
|
@ -10,7 +10,7 @@
|
|||
* @license http://code.google.com/p/sabredav/wiki/License Modified BSD License
|
||||
*/
|
||||
|
||||
namespace Sabre\DAV;
|
||||
namespace SabreForRainLoop\DAV;
|
||||
|
||||
/**
|
||||
* Main Exception class.
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\DAV\Exception;
|
||||
namespace SabreForRainLoop\DAV\Exception;
|
||||
|
||||
/**
|
||||
* BadRequest
|
||||
|
|
@ -12,7 +12,7 @@ namespace Sabre\DAV\Exception;
|
|||
* @author Evert Pot (http://evertpot.com/)
|
||||
* @license http://code.google.com/p/sabredav/wiki/License Modified BSD License
|
||||
*/
|
||||
class BadRequest extends \Sabre\DAV\Exception {
|
||||
class BadRequest extends \SabreForRainLoop\DAV\Exception {
|
||||
|
||||
/**
|
||||
* Returns the HTTP statuscode for this exception
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\DAV\Exception;
|
||||
namespace SabreForRainLoop\DAV\Exception;
|
||||
|
||||
/**
|
||||
* Conflict
|
||||
|
|
@ -12,7 +12,7 @@ namespace Sabre\DAV\Exception;
|
|||
* @author Evert Pot (http://evertpot.com/)
|
||||
* @license http://code.google.com/p/sabredav/wiki/License Modified BSD License
|
||||
*/
|
||||
class Conflict extends \Sabre\DAV\Exception {
|
||||
class Conflict extends \SabreForRainLoop\DAV\Exception {
|
||||
|
||||
/**
|
||||
* Returns the HTTP statuscode for this exception
|
||||
|
|
@ -1,8 +1,8 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\DAV\Exception;
|
||||
namespace SabreForRainLoop\DAV\Exception;
|
||||
|
||||
use Sabre\DAV;
|
||||
use SabreForRainLoop\DAV;
|
||||
|
||||
/**
|
||||
* ConflictingLock
|
||||
|
|
@ -1,16 +1,16 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\DAV\Exception;
|
||||
namespace SabreForRainLoop\DAV\Exception;
|
||||
|
||||
/**
|
||||
* FileNotFound
|
||||
*
|
||||
* Deprecated: Warning, this class is deprecated and will be removed in a
|
||||
* future version of SabreDAV. Please use Sabre\DAV\Exception\NotFound instead.
|
||||
* future version of SabreDAV. Please use SabreForRainLoop\DAV\Exception\NotFound instead.
|
||||
*
|
||||
* @copyright Copyright (C) 2007-2013 fruux GmbH (https://fruux.com/).
|
||||
* @author Evert Pot (http://evertpot.com/)
|
||||
* @deprecated Use Sabre\DAV\Exception\NotFound instead
|
||||
* @deprecated Use SabreForRainLoop\DAV\Exception\NotFound instead
|
||||
* @license http://code.google.com/p/sabredav/wiki/License Modified BSD License
|
||||
*/
|
||||
class FileNotFound extends NotFound {
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
<?php
|
||||
|
||||
namespace Sabre\DAV\Exception;
|
||||
namespace SabreForRainLoop\DAV\Exception;
|
||||
|
||||
/**
|
||||
* Forbidden
|
||||
|
|
@ -11,7 +11,7 @@ namespace Sabre\DAV\Exception;
|
|||
* @author Evert Pot (http://evertpot.com/)
|
||||
* @license http://code.google.com/p/sabredav/wiki/License Modified BSD License
|
||||
*/
|
||||
class Forbidden extends \Sabre\DAV\Exception {
|
||||
class Forbidden extends \SabreForRainLoop\DAV\Exception {
|
||||
|
||||
/**
|
||||
* Returns the HTTP statuscode for this exception
|
||||