Exemplo n.º 1
0
 /**
  * check if a file or folder has been updated since $time
  *
  * @param string $path
  * @param int $time
  * @throws \OCP\Files\StorageNotAvailableException
  * @return bool
  */
 public function hasUpdated($path, $time)
 {
     $this->init();
     $path = $this->cleanPath($path);
     try {
         $response = $this->client->propfind($this->encodePath($path), array('{DAV:}getlastmodified', '{DAV:}getetag', '{http://owncloud.org/ns}permissions'));
         if (isset($response['{DAV:}getetag'])) {
             $cachedData = $this->getCache()->get($path);
             $etag = trim($response['{DAV:}getetag'], '"');
             if ($cachedData['etag'] !== $etag) {
                 return true;
             } else {
                 if (isset($response['{http://owncloud.org/ns}permissions'])) {
                     $permissions = $this->parsePermissions($response['{http://owncloud.org/ns}permissions']);
                     return $permissions !== $cachedData['permissions'];
                 } else {
                     return false;
                 }
             }
         } else {
             $remoteMtime = strtotime($response['{DAV:}getlastmodified']);
             return $remoteMtime > $time;
         }
     } catch (Exception\NotFound $e) {
         return false;
     } catch (Exception $e) {
         throw new StorageNotAvailableException();
     }
 }
Exemplo n.º 2
0
 public function listFolder($user, $path, $folderDepth)
 {
     $fullUrl = substr($this->baseUrl, 0, -4);
     $settings = array('baseUri' => $fullUrl, 'userName' => $user);
     if ($user === 'admin') {
         $settings['password'] = $this->adminUser[1];
     } else {
         $settings['password'] = $this->regularUser;
     }
     $client = new SClient($settings);
     $response = $client->propfind($this->davPath . "/", array('{DAV:}getetag'), $folderDepth);
     return $response;
 }
Exemplo n.º 3
0
	/** {@inheritdoc} */
	public function free_space($path) {
		$this->init();
		$path = $this->cleanPath($path);
		try {
			// TODO: cacheable ?
			$response = $this->client->propfind($this->encodePath($path), array('{DAV:}quota-available-bytes'));
			if (isset($response['{DAV:}quota-available-bytes'])) {
				return (int)$response['{DAV:}quota-available-bytes'];
			} else {
				return FileInfo::SPACE_UNKNOWN;
			}
		} catch (\Exception $e) {
			return FileInfo::SPACE_UNKNOWN;
		}
	}
 /**
  * get nodes from adapter backend
  *
  * @param string $path
  * @return array nodes
  */
 private function getNodesFromBackend($path)
 {
     $response = $this->client->propfind($this->encodePath($path), array(), 1);
     $result = array();
     $statNode = true;
     $path = $path === false ? '' : $path;
     foreach ($response as $key => $value) {
         if ($statNode) {
             $nodePath = $path;
             $statNode = false;
         } else {
             $nodePath = $path . '/' . urldecode(basename($key));
         }
         $result[] = $this->rawDataToNode($nodePath, $value);
     }
     return $result;
 }
Exemplo n.º 5
0
 /** {@inheritdoc} */
 public function getPermissions($path)
 {
     $this->init();
     $path = $this->cleanPath($path);
     $response = $this->client->propfind($this->encodePath($path), array('{http://owncloud.org/ns}permissions'));
     if (isset($response['{http://owncloud.org/ns}permissions'])) {
         return $this->parsePermissions($response['{http://owncloud.org/ns}permissions']);
     } else {
         if ($this->is_dir($path)) {
             return \OCP\Constants::PERMISSION_ALL;
         } else {
             if ($this->file_exists($path)) {
                 return \OCP\Constants::PERMISSION_ALL - \OCP\Constants::PERMISSION_CREATE;
             } else {
                 return 0;
             }
         }
     }
 }
Exemplo n.º 6
0
 /** {@inheritdoc} */
 public function touch($path, $mtime = null)
 {
     $this->init();
     if (is_null($mtime)) {
         $mtime = time();
     }
     $path = $this->cleanPath($path);
     // if file exists, update the mtime, else create a new empty file
     if ($this->file_exists($path)) {
         try {
             $this->statCache->remove($path);
             $this->client->proppatch($this->encodePath($path), ['{DAV:}lastmodified' => $mtime]);
             // non-owncloud clients might not have accepted the property, need to recheck it
             $response = $this->client->propfind($this->encodePath($path), ['{DAV:}getlastmodified'], 0);
             if (isset($response['{DAV:}getlastmodified'])) {
                 $remoteMtime = strtotime($response['{DAV:}getlastmodified']);
                 if ($remoteMtime !== $mtime) {
                     // server has not accepted the mtime
                     return false;
                 }
             }
         } catch (ClientHttpException $e) {
             if ($e->getHttpStatus() === 501) {
                 return false;
             }
             $this->convertException($e, $path);
             return false;
         } catch (\Exception $e) {
             $this->convertException($e, $path);
             return false;
         }
     } else {
         $this->file_put_contents($path, '');
     }
     return true;
 }
Exemplo n.º 7
0
<?php

use Sabre\VObject;
use Sabre\DAV;
include 'vendor/autoload.php';
require_once realpath(dirname(__FILE__) . '/cardDav_connection.php');
$client = new DAV\Client($settings);
$method = filter_input(INPUT_GET, "method");
if (empty($method)) {
    $method = "calDAV";
}
if ($method == "cardDAV") {
    $firstresponse = $client->propfind('/remote.php/carddav/addressbooks/' . $settings["userName"], array('{DAV:}displayname'), 1);
    foreach ($firstresponse as $addressbook => $value) {
        if (empty($value)) {
            continue;
        }
        $response = $client->propfind($addressbook, array('{DAV:}displayname'), 1);
        foreach ($response as $vcardUrl => $value) {
            if ($vcardUrl == $addressbook) {
                continue;
            }
            $vcardresponse = $client->request('GET', $vcardUrl);
            $vcard = VObject\Reader::read($vcardresponse["body"]);
            $name = (string) $vcard->FN;
            $bday_raw = explode("-", (string) $vcard->BDAY);
            if (!empty($bday_raw[0])) {
                $bdays[$name] = mktime(0, 0, 0, $bday_raw[1], $bday_raw[2], $bday_raw[0]) * 1000;
            }
        }
    }