diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Base/DateTimeHelper.php b/snappymail/v/0.0.0/app/libraries/MailSo/Base/DateTimeHelper.php index 826b3bd26..b02b5ee0e 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Base/DateTimeHelper.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Base/DateTimeHelper.php @@ -43,7 +43,7 @@ abstract class DateTimeHelper } $sDateTime = \trim(\preg_replace('/ \([a-zA-Z0-9]+\)$/', '', $sDateTime)); - $oDateTime = \DateTime::createFromFormat('D, d M Y H:i:s O', $sDateTime, \MailSo\Base\DateTimeHelper::GetUtcTimeZoneObject()); + $oDateTime = \DateTime::createFromFormat(\DateTime::RFC822, $sDateTime, static::GetUtcTimeZoneObject()); return $oDateTime ? $oDateTime->getTimestamp() : 0; } @@ -61,10 +61,10 @@ abstract class DateTimeHelper if (\preg_match('/^[a-z]{2,4}, /i', $sDateTime)) // RFC2822 ~ "Thu, 10 Jun 2010 08:58:33 -0700 (PDT)" { - return \MailSo\Base\DateTimeHelper::ParseRFC2822DateString($sDateTime); + return static::ParseRFC2822DateString($sDateTime); } - $oDateTime = \DateTime::createFromFormat('d-M-Y H:i:s O', $sDateTime, \MailSo\Base\DateTimeHelper::GetUtcTimeZoneObject()); + $oDateTime = \DateTime::createFromFormat('d-M-Y H:i:s O', $sDateTime, static::GetUtcTimeZoneObject()); return $oDateTime ? $oDateTime->getTimestamp() : 0; } @@ -79,20 +79,21 @@ abstract class DateTimeHelper return 0; } - $oDateTime = \DateTime::createFromFormat('Y-m-d H:i:s O', $sDateTime, \MailSo\Base\DateTimeHelper::GetUtcTimeZoneObject()); + $oDateTime = \DateTime::createFromFormat('Y-m-d H:i:s O', $sDateTime, static::GetUtcTimeZoneObject()); return $oDateTime ? $oDateTime->getTimestamp() : 0; } /** * Parse date string formated as "2015-05-08T14:32:18.483-07:00" + * DateTime::RFC3339_EXTENDED */ public static function TryToParseSpecEtagFormat(string $sDateTime) : int { - $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))); + $sDateTime = \preg_replace('/ \([a-zA-Z0-9]+\)$/', '', \trim($sDateTime)); + $sDateTime = \preg_replace('/(:[\d]{2})\.[\d]{3}/', '$1', \trim($sDateTime)); + $sDateTime = \preg_replace('/(-[\d]{2})T([\d]{2}:)/', '$1 $2', \trim($sDateTime)); + $sDateTime = \preg_replace('/([\-+][\d]{2}):([\d]{2})$/', ' $1$2', \trim($sDateTime)); - return \MailSo\Base\DateTimeHelper::ParseDateStringType1($sDateTime); + return static::ParseDateStringType1($sDateTime); } } diff --git a/snappymail/v/0.0.0/app/libraries/RainLoop/Providers/AddressBook/CardDAV.php b/snappymail/v/0.0.0/app/libraries/RainLoop/Providers/AddressBook/CardDAV.php index ae1422a0a..ab490fb49 100644 --- a/snappymail/v/0.0.0/app/libraries/RainLoop/Providers/AddressBook/CardDAV.php +++ b/snappymail/v/0.0.0/app/libraries/RainLoop/Providers/AddressBook/CardDAV.php @@ -27,6 +27,9 @@ trait CardDAV $this->oLogger->WriteException($oException); } + /** + * find every *.vcf with empty + */ if (\is_array($aResponse)) { $mResult = array(); @@ -35,7 +38,6 @@ trait CardDAV $sKey = \rtrim(\trim($sKey), '\\/'); if (!empty($sKey) && is_array($aItem)) { - $aItem = \array_change_key_case($aItem, \CASE_LOWER); if (isset($aItem['{DAV:}getetag'])) { $aMatch = array(); diff --git a/snappymail/v/0.0.0/app/libraries/snappymail/dav/client.php b/snappymail/v/0.0.0/app/libraries/snappymail/dav/client.php index 0ee873f4f..06ff9abc3 100644 --- a/snappymail/v/0.0.0/app/libraries/snappymail/dav/client.php +++ b/snappymail/v/0.0.0/app/libraries/snappymail/dav/client.php @@ -143,19 +143,21 @@ class Client throw new \InvalidArgumentException('The passed data is not valid XML'); } - $ns = \array_search('urn:DAV', $responseXML->getNamespaces(true)); - $ns = $ns ? "{$ns}:" : ''; + $ns = \array_search('urn:DAV', $responseXML->getNamespaces(true)) ?: 'd'; // $ns_card = \array_search('urn:ietf:params:xml:ns:carddav', $responseXML->getNamespaces(true)); $result = array(); - foreach ($responseXML->xpath("{$ns}response") as $response) { - $href = $response->xpath("{$ns}href"); + $responseXML->registerXPathNamespace($ns, 'urn:DAV'); + foreach ($responseXML->xpath("{$ns}:response") as $response) { + $response->registerXPathNamespace($ns, 'urn:DAV'); + $href = $response->xpath("{$ns}:href"); $href = (string) $href[0]; $properties = array(); - foreach ($response->xpath("{$ns}propstat") as $propStat) { - $status = $propStat->xpath("{$ns}status"); + foreach ($response->xpath("{$ns}:propstat") as $propStat) { + $propStat->registerXPathNamespace($ns, 'urn:DAV'); + $status = $propStat->xpath("{$ns}:status"); list($httpVersion, $statusCode, $message) = \explode(' ', (string)$status[0], 3); $properties[$statusCode] = static::parseProperties(\dom_import_simplexml($propStat));