本文整理汇总了PHP中Sabre\DAV\PropPatch类的典型用法代码示例。如果您正苦于以下问题:PHP PropPatch类的具体用法?PHP PropPatch怎么用?PHP PropPatch使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了PropPatch类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: updateAddressBook
/**
* Updates properties for an address book.
*
* The list of mutations is stored in a Sabre\DAV\PropPatch object.
* To do the actual updates, you must tell this object which properties
* you're going to process with the handle() method.
*
* Calling the handle method is like telling the PropPatch object "I
* promise I can handle updating this property".
*
* Read the PropPatch documenation for more info and examples.
*
* @param string $addressBookId
* @param \Sabre\DAV\PropPatch $propPatch
* @return void
*/
public function updateAddressBook($addressBookId, \Sabre\DAV\PropPatch $propPatch)
{
foreach ($this->addressBooks as &$book) {
if ($book['id'] !== $addressBookId) {
continue;
}
$propPatch->handleRemaining(function ($mutations) use(&$book) {
foreach ($mutations as $key => $value) {
$book[$key] = $value;
}
return true;
});
}
}
示例2: propPatch
public function propPatch($path, DAV\PropPatch $propPatch)
{
$node = $this->server->tree->getNodeForPath($path);
// The File object is the only thing we can change properties on:
if (!$node instanceof \SambaDAV\File) {
return;
}
// These properties are silently ignored for now;
// smbclient has no 'touch' command; for documentation purposes:
// {urn:schemas-microsoft-com:}Win32CreationTime
// {urn:schemas-microsoft-com:}Win32LastAccessTime
// {urn:schemas-microsoft-com:}Win32LastModifiedTime
$handled = ['{DAV:}ishidden', '{DAV:}isreadonly', '{urn:schemas-microsoft-com:}Win32FileAttributes'];
$propPatch->handle($handled, [$node, 'updateProperties']);
}
示例3: propPatch
/**
* Updates properties for a path
*
* This method received a PropPatch object, which contains all the
* information about the update.
*
* Usually you would want to call 'handleRemaining' on this object, to get;
* a list of all properties that need to be stored.
*
* @param string $path
* @param PropPatch $propPatch
* @return void
*/
function propPatch($path, PropPatch $propPatch)
{
$propPatch->handleRemaining(function ($properties) use($path) {
$updateStmt = $this->pdo->prepare("REPLACE INTO propertystorage (path, name, value) VALUES (?, ?, ?)");
$deleteStmt = $this->pdo->prepare("DELETE FROM propertystorage WHERE path = ? AND name = ?");
foreach ($properties as $name => $value) {
if (!is_null($value)) {
$updateStmt->execute([$path, $name, $value]);
} else {
$deleteStmt->execute([$path, $name]);
}
}
return true;
});
}
示例4: updateAddressBook
/**
* Updates properties for an address book.
*
* The list of mutations is stored in a Sabre\DAV\PropPatch object.
* To do the actual updates, you must tell this object which properties
* you're going to process with the handle() method.
*
* Calling the handle method is like telling the PropPatch object "I
* promise I can handle updating this property".
*
* Read the PropPatch documenation for more info and examples.
*
* @param string $addressBookId
* @param \Sabre\DAV\PropPatch $propPatch
* @return void
*/
function updateAddressBook($addressBookId, \Sabre\DAV\PropPatch $propPatch)
{
$supportedProperties = ['{DAV:}displayname', '{' . Plugin::NS_CARDDAV . '}addressbook-description'];
$propPatch->handle($supportedProperties, function ($mutations) use($addressBookId) {
$updates = [];
foreach ($mutations as $property => $newValue) {
switch ($property) {
case '{DAV:}displayname':
$updates['displayname'] = $newValue;
break;
case '{' . Plugin::NS_CARDDAV . '}addressbook-description':
$updates['description'] = $newValue;
break;
}
}
$query = $this->db->getQueryBuilder();
$query->update('addressbooks');
foreach ($updates as $key => $value) {
$query->set($key, $query->createNamedParameter($value));
}
$query->where($query->expr()->eq('id', $query->createNamedParameter($addressBookId)))->execute();
$this->addChange($addressBookId, "", 2);
return true;
});
}
示例5: updateAddressBook
/**
* Updates properties for an address book.
*
* The list of mutations is stored in a Sabre\DAV\PropPatch object.
* To do the actual updates, you must tell this object which properties
* you're going to process with the handle() method.
*
* Calling the handle method is like telling the PropPatch object "I
* promise I can handle updating this property".
*
* Read the PropPatch documenation for more info and examples.
*
* @param string $addressBookId
* @param \Sabre\DAV\PropPatch $propPatch
* @return void
*/
function updateAddressBook($addressBookId, \Sabre\DAV\PropPatch $propPatch)
{
$supportedProperties = ['{DAV:}displayname', '{' . CardDAV\Plugin::NS_CARDDAV . '}addressbook-description'];
$propPatch->handle($supportedProperties, function ($mutations) use($addressBookId) {
$updates = [];
foreach ($mutations as $property => $newValue) {
switch ($property) {
case '{DAV:}displayname':
$updates['displayname'] = $newValue;
break;
case '{' . CardDAV\Plugin::NS_CARDDAV . '}addressbook-description':
$updates['description'] = $newValue;
break;
}
}
$query = 'UPDATE ' . $this->addressBooksTableName . ' SET ';
$first = true;
foreach ($updates as $key => $value) {
if ($first) {
$first = false;
} else {
$query .= ', ';
}
$query .= ' `' . $key . '` = :' . $key . ' ';
}
$query .= ' WHERE id = :addressbookid';
$stmt = $this->pdo->prepare($query);
$updates['addressbookid'] = $addressBookId;
$stmt->execute($updates);
$this->addChange($addressBookId, "", 2);
return true;
});
}
示例6: propPatch
/**
* Updates properties on this node.
*
* This method received a PropPatch object, which contains all the
* information about the update.
*
* To update specific properties, call the 'handle' method on this object.
* Read the PropPatch documentation for more information.
*
* @param PropPatch $propPatch
* @return void
*/
function propPatch(PropPatch $propPatch)
{
$propPatch->handleRemaining(function (array $properties) {
$resourceData = $this->getResourceData();
foreach ($properties as $propertyName => $propertyValue) {
// If it was null, we need to delete the property
if (is_null($propertyValue)) {
unset($resourceData['properties'][$propertyName]);
} else {
$resourceData['properties'][$propertyName] = $propertyValue;
}
}
$this->putResourceData($resourceData);
return true;
});
}
示例7: propPatch
/**
* Updates properties for a path
*
* This method received a PropPatch object, which contains all the
* information about the update.
*
* Usually you would want to call 'handleRemaining' on this object, to get;
* a list of all properties that need to be stored.
*
* @param string $path
* @param PropPatch $propPatch
* @return void
*/
function propPatch($path, PropPatch $propPatch)
{
if (!isset($this->data[$path])) {
$this->data[$path] = [];
}
$propPatch->handleRemaining(function ($properties) use($path) {
foreach ($properties as $propName => $propValue) {
if (is_null($propValue)) {
unset($this->data[$path][$propName]);
} else {
$this->data[$path][$propName] = $propValue;
}
return true;
}
});
}
示例8: propPatch
/**
* Updates properties on this node.
*
* This method received a PropPatch object, which contains all the
* information about the update.
*
* To update specific properties, call the 'handle' method on this object.
* Read the PropPatch documentation for more information.
*
* @param array $mutations
* @return bool|array
*/
public function propPatch(PropPatch $proppatch)
{
$proppatch->handleRemaining(function ($updateProperties) {
switch ($this->failMode) {
case 'updatepropsfalse':
return false;
case 'updatepropsarray':
$r = [];
foreach ($updateProperties as $k => $v) {
$r[$k] = 402;
}
return $r;
case 'updatepropsobj':
return new \STDClass();
}
});
}
示例9: updateAddressBook
/**
* Updates an addressbook's properties
*
* See \Sabre\DAV\IProperties for a description of the mutations array, as
* well as the return value.
*
* @param mixed $addressbookid
* @see \Sabre\DAV\IProperties::updateProperties
* @return bool|array
*/
public function updateAddressBook($addressbookid, PropPatch $propPatch)
{
$changes = array();
$mutations = $propPatch->getRemainingMutations();
foreach ($mutations as $property => $newvalue) {
switch ($property) {
case '{DAV:}displayname':
$changes['displayname'] = $newvalue;
break;
case '{' . \Sabre\CardDAV\Plugin::NS_CARDDAV . '}addressbook-description':
$changes['description'] = $newvalue;
break;
default:
// If any unsupported values were being updated, we must
// let the entire request fail.
return false;
}
}
list($id, $backend) = $this->getBackendForAddressBook($addressbookid);
return $backend->updateAddressBook($id, $changes);
}
示例10: updateCalendar
/**
* Updates properties for a calendar.
*
* The list of mutations is stored in a Sabre\DAV\PropPatch object.
* To do the actual updates, you must tell this object which properties
* you're going to process with the handle() method.
*
* Calling the handle method is like telling the PropPatch object "I
* promise I can handle updating this property".
*
* Read the PropPatch documentation for more info and examples.
*
* @param mixed $calendarId
* @param \Sabre\DAV\PropPatch $propPatch
* @return void
*/
function updateCalendar($calendarId, \Sabre\DAV\PropPatch $propPatch)
{
$propPatch->handleRemaining(function ($props) use($calendarId) {
foreach ($this->calendars as $k => $calendar) {
if ($calendar['id'] === $calendarId) {
foreach ($props as $propName => $propValue) {
if (is_null($propValue)) {
unset($this->calendars[$k][$propName]);
} else {
$this->calendars[$k][$propName] = $propValue;
}
}
return true;
}
}
});
}
示例11: updatePrincipal
/**
* Updates one ore more webdav properties on a principal.
*
* The list of mutations is stored in a Sabre\DAV\PropPatch object.
* To do the actual updates, you must tell this object which properties
* you're going to process with the handle() method.
*
* Calling the handle method is like telling the PropPatch object "I
* promise I can handle updating this property".
*
* Read the PropPatch documenation for more info and examples.
*
* @param string $path
* @param \Sabre\DAV\PropPatch $propPatch
*/
public function updatePrincipal($path, \Sabre\DAV\PropPatch $propPatch)
{
$value = null;
foreach ($this->principals as $principalIndex => $value) {
if ($value['uri'] === $path) {
$principal = $value;
break;
}
}
if (!$principal) {
return;
}
$propPatch->handleRemaining(function ($mutations) use($principal, $principalIndex) {
foreach ($mutations as $prop => $value) {
if (is_null($value) && isset($principal[$prop])) {
unset($principal[$prop]);
} else {
$principal[$prop] = $value;
}
}
$this->principals[$principalIndex] = $principal;
return true;
});
}
示例12: propPatch
/**
* Updates properties on this node.
*
* This method received a PropPatch object, which contains all the
* information about the update.
*
* To update specific properties, call the 'handle' method on this object.
* Read the PropPatch documentation for more information.
*
* @param PropPatch $propPatch
* @return void
*/
function propPatch(PropPatch $propPatch)
{
// other properties than 'message' are read only
$propPatch->handle(self::PROPERTY_NAME_MESSAGE, [$this, 'updateComment']);
}
示例13: handleUpdateProperties
/**
* Update ownCloud-specific properties
*
* @param string $path
* @param PropPatch $propPatch
*
* @return void
*/
public function handleUpdateProperties($path, PropPatch $propPatch)
{
$propPatch->handle(self::GETLASTMODIFIED_PROPERTYNAME, function ($time) use($path) {
if (empty($time)) {
return false;
}
$node = $this->tree->getNodeForPath($path);
if (is_null($node)) {
return 404;
}
$node->touch($time);
return true;
});
$propPatch->handle(self::GETETAG_PROPERTYNAME, function ($etag) use($path) {
if (empty($etag)) {
return false;
}
$node = $this->tree->getNodeForPath($path);
if (is_null($node)) {
return 404;
}
if ($node->setEtag($etag) !== -1) {
return true;
}
return false;
});
}
示例14: propPatch
/**
* @inheritdoc
*/
function propPatch(PropPatch $propPatch)
{
$propPatch->handle(self::PROPERTY_NAME_READ_MARKER, [$this, 'setReadMarker']);
}
示例15: updateProperties
/**
* This method updates a resource's properties
*
* The properties array must be a list of properties. Array-keys are
* property names in clarknotation, array-values are it's values.
* If a property must be deleted, the value should be null.
*
* Note that this request should either completely succeed, or
* completely fail.
*
* The response is an array with properties for keys, and http status codes
* as their values.
*
* @param string $path
* @param array $properties
* @return array
*/
function updateProperties($path, array $properties) {
$propPatch = new PropPatch($properties);
$this->emit('propPatch', [$path, $propPatch]);
$propPatch->commit();
return $propPatch->getResult();
}