ILIAS  release_5-1 Revision 5.0.0-5477-g43f3e3fab5f
ilDAVLocks Class Reference
+ Collaboration diagram for ilDAVLocks:

Public Member Functions

 ilDAVLocks ()
 
 lockRef ($refId, $iliasUserId, $davUser, $token, $expires, $depth, $scope)
 Creates a lock an object, unless there are locks on the object or its parents, which prevent the creation of the lock. More...
 
 lockWithoutCheckingDAV (&$objDAV, $iliasUserId, $davUser, $token, $expires, $depth, $scope)
 Creates a write lock. More...
 
 lockWithoutCheckingObj ($objId, $nodeId, $iliasUserId, $davUser, $token, $expires, $depth, $scope)
 
 updateLockWithoutCheckingDAV (&$objDAV, $token, $expires)
 Updates a write lock. More...
 
 updateLockWithoutCheckingObj ($objId, $nodeId, $token, $expires)
 Updates a write lock. More...
 
 unlockWithoutCheckingDAV (&$objDAV, $token)
 Discards a write lock. More...
 
 getLockDAV (&$objDAV, $token)
 Returns the lock with the specified token on the specified DAV object. More...
 
 getLocksOnObjectDAV (&$objDAV)
 Returns all locks on the specified object. More...
 
 getLocksOnObjectObj ($objId, $nodeId=0)
 Returns all locks on the specified object id. More...
 
 getLocksOnPathDAV (&$pathDAV)
 Returns all locks on the specified object path. More...
 
 getLocksOnPathRef ($refId)
 Returns all locks on the specified object, specified by a reference id. More...
 
 cleanUp ()
 System maintenance: get rid of locks that have expired over an hour ago. More...
 

Protected Member Functions

 writelog ($message)
 Writes a message to the logfile.,. More...
 

Private Attributes

 $table = 'dav_lock'
 
 $isDebug = false
 Set this to true, to get debug output in the ILIAS log. More...
 

Detailed Description

Definition at line 42 of file class.ilDAVLocks.php.

Member Function Documentation

◆ cleanUp()

ilDAVLocks::cleanUp ( )

System maintenance: get rid of locks that have expired over an hour ago.

Since we have no index over the 'expires' column, this causes a (very slow) table space scan.

Definition at line 526 of file class.ilDAVLocks.php.

527 {
528 global $ilDB, $tree;
529
530 // 1. Get rid of locks that have expired over an hour ago
531 $old = time() - 3600;
532 $q = 'DELETE'
533 .' FROM '.$this->table
534 .' WHERE expires < '.$ilDB->quote($old,'integer')
535 ;
536 $ilDB->manipulate($q);
537
538 // 2. Get rid of null resources which are not associated to
539 // a lock due to step 1, or due to a database inconsistency
540 // because we are working with non-transactional tables
541 $q = 'SELECT dat.obj_id '
542 .' FROM object_data AS dat'
543 .' LEFT JOIN '.$this->table.' lck'
544 .' ON dat.obj_id = lck.obj_id'
545 .' WHERE dat.type = '.$ilDB->quote('null','text')
546 .' AND lck.obj_id IS NULL'
547 ;
548/* TODO: smeyer.' FOR UPDATE' */
549
550 $r = $ilDB->query($q);
551 while ($row = $r->fetchRow(DB_FETCHMODE_ASSOC))
552 {
553 $references = ilObject::_getAllReferences($row['obj_id']);
554 $obj = new ilObjNull($row['obj_id'], false);
555 if (count($references) == 0)
556 {
557 $obj->delete();
558 } else {
559 foreach ($references as $refId)
560 {
561 $obj->setRefId($refId);
562 $obj->delete();
563 $nodeData = $tree->getNodeData($refId);
564 $tree->deleteTree($nodeData);
565 }
566 }
567 }
568 }
const DB_FETCHMODE_ASSOC
Definition: class.ilDB.php:10
static _getAllReferences($a_id)
get all reference ids of object
$r
Definition: example_031.php:79
global $ilDB

References $ilDB, $r, $row, ilObject\_getAllReferences(), and DB_FETCHMODE_ASSOC.

Referenced by unlockWithoutCheckingDAV().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getLockDAV()

ilDAVLocks::getLockDAV ( $objDAV,
  $token 
)

Returns the lock with the specified token on the specified DAV object.

Parameters
$objDAVDAV object to get the lock for.
stringLock token.
Returns
An array of associative arrays for all the locks that were found. Each associative array has the following keys: 'ilias_owner' => user id, 'dav_owner' => user name, 'token' => locktoken 'expires' => expiration timestamp 'depth' => 0 or 'infinity' 'scope' => 'exclusive' or 'shared'

Definition at line 328 of file class.ilDAVLocks.php.

329 {
330 global $ilDB;
331 $this->writelog('getLocks('.$objDAV.')');
332 $objId = $objDAV->getObjectId();
333 $nodeId = $objDAV->getNodeId();
334
335 $q = 'SELECT ilias_owner, dav_owner, expires, depth, scope'
336 .' FROM '.$this->table
337 .' WHERE obj_id = '.$ilDB->quote($objId,'integer')
338 .' AND node_id = '.$ilDB->quote($nodeId,'integer')
339 .' AND token = '.$ilDB->quote($token,'text')
340 ;
341 $this->writelog('getLocks('.$objDAV.') query='.$q);
342 $r = $ilDB->query($q);
343
344 $result = array();
345 while ($row = $r->fetchRow(DB_FETCHMODE_ASSOC))
346 {
347 if ($row['depth'] == -1) $row['depth'] = 'infinity';
348 $row['scope'] = ($row['scope'] == 'x') ? 'exclusive' : 'shared';
349 $row['token'] = $token;
350 $result = $row;
351 }
352 return $result;
353 }
$result
writelog($message)
Writes a message to the logfile.,.

References $ilDB, $r, $result, $row, DB_FETCHMODE_ASSOC, and writelog().

+ Here is the call graph for this function:

◆ getLocksOnObjectDAV()

ilDAVLocks::getLocksOnObjectDAV ( $objDAV)

Returns all locks on the specified object.

This method does not take into account inherited locks from parent objects.

Parameters
$objDAVDAV object to get the locks for.
Returns
An array of associative arrays for all the locks that were found. Each associative array has the following keys: 'ilias_owner' => user id, 'dav_owner' => user name, 'token' => locktoken 'expires' => expiration timestamp 'depth' => 0 or 'infinity' 'scope' => 'exclusive' or 'shared'

Definition at line 368 of file class.ilDAVLocks.php.

369 {
370 $objId = $objDAV->getObjectId();
371 $nodeId = $objDAV->getNodeId();
372
373 return $this->getLocksOnObjectObj($objId, $nodeId);
374 }
getLocksOnObjectObj($objId, $nodeId=0)
Returns all locks on the specified object id.

References getLocksOnObjectObj().

+ Here is the call graph for this function:

◆ getLocksOnObjectObj()

ilDAVLocks::getLocksOnObjectObj (   $objId,
  $nodeId = 0 
)

Returns all locks on the specified object id.

This method does not take into account inherited locks from parent objects.

Parameters
$objIdobject ID to get the locks for.
intnode a node of the object. For example the id of a page of a learning module. Specify 0 if the object does not have multiple nodes.
Returns
An array of associative arrays for all the locks that were found. Each associative array has the following keys: 'ilias_owner' => user id, 'dav_owner' => user name, 'token' => locktoken 'expires' => expiration timestamp 'depth' => 0 or 'infinity' 'scope' => 'exclusive' or 'shared'

Definition at line 391 of file class.ilDAVLocks.php.

392 {
393 global $ilDB;
394 $this->writelog('getLocks('.$objDAV.')');
395 $nodeId = 0;
396 $q = 'SELECT ilias_owner, dav_owner, token, expires, depth, scope'
397 .' FROM '.$this->table
398 .' WHERE obj_id = '.$ilDB->quote($objId,'integer')
399 .' AND node_id = '.$ilDB->quote($nodeId,'integer')
400 .' AND expires > '.$ilDB->quote(time(),'integer')
401 ;
402 $this->writelog('getLocks('.$objDAV.') query='.$q);
403 $r = $ilDB->query($q);
404
405 $result = array();
406 while ($row = $r->fetchRow(DB_FETCHMODE_ASSOC))
407 {
408 if ($row['depth'] == -1) $row['depth'] = 'infinity';
409 $row['scope'] = ($row['scope'] == 'x') ? 'exclusive' : 'shared';
410 $result[] = $row;
411 }
412 return $result;
413 }

References $ilDB, $r, $result, $row, DB_FETCHMODE_ASSOC, and writelog().

Referenced by getLocksOnObjectDAV().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ getLocksOnPathDAV()

ilDAVLocks::getLocksOnPathDAV ( $pathDAV)

Returns all locks on the specified object path.

Parameters
$pathDAVArray with DAV objects to get the locks for.
Returns
An array of associative arrays for all the locks that were found. Each associative array has the following keys: 'obj_id' => object id 'node_id' => node id 'ilias_owner' => user id, 'dav_owner' => user name, 'token' => locktoken 'expires' => expiration timestamp 'depth' => 0 or 'infinity' 'scope' => 'exclusive' or 'shared'

Definition at line 429 of file class.ilDAVLocks.php.

430 {
431 global $ilDB;
432 $this->writelog('getLocksOnPathDAV');
433
434 $q = 'SELECT obj_id, node_id, ilias_owner, dav_owner, token, expires, depth, scope'
435 .' FROM '.$this->table
436 .' WHERE expires > '.$ilDB->quote(time(),'integer')
437 .' AND ('
438 ;
439 $isFirst = true;
440 foreach ($pathDAV as $objDAV)
441 {
442 $objId = $objDAV->getObjectId();
443 $nodeId = $objDAV->getNodeId();
444 if ($isFirst)
445 {
446 $isFirst = false;
447 } else {
448 $q .= ' OR ';
449 }
450 $q .= '(obj_id = '.$ilDB->quote($objId,'integer').' AND node_id = '.$ilDB->quote($nodeId,'integer').')';
451 }
452 $q .= ')';
453
454 $this->writelog('getLocksOnPathDAV('.$objDAV.') query='.$q);
455 $r = $ilDB->query($q);
456
457 $result = array();
458 while ($row = $r->fetchRow(DB_FETCHMODE_ASSOC))
459 {
460 if ($row['depth'] == -1) $row['depth'] = 'infinity';
461 $row['scope'] = ($row['scope'] == 'x') ? 'exclusive' : 'shared';
462 $result[] = $row;
463 }
464 $this->writelog('getLocksOnPathDAV:'.var_export($result,true));
465 return $result;
466 }

References $ilDB, $r, $result, $row, DB_FETCHMODE_ASSOC, and writelog().

+ Here is the call graph for this function:

◆ getLocksOnPathRef()

ilDAVLocks::getLocksOnPathRef (   $refId)

Returns all locks on the specified object, specified by a reference id.

Parameters
$refIdThe reference id of the object
Returns
An array of associative arrays for all the locks that were found. Each associative array has the following keys: 'obj_id' => object id 'node_id' => node id 'ilias_owner' => user id, 'dav_owner' => user name, 'token' => locktoken 'expires' => expiration timestamp 'depth' => 0 or 'infinity' 'scope' => 'exclusive' or 'shared'

Definition at line 482 of file class.ilDAVLocks.php.

483 {
484 global $ilDB, $tree;
485 $this->writelog('getLocksOnPathRef('.$refId.')');
486
487 $pathFull = $tree->getPathFull($refId);
488
489 $q = 'SELECT obj_id, node_id, ilias_owner, dav_owner, token, expires, depth, scope'
490 .' FROM '.$this->table
491 .' WHERE expires > '.$ilDB->quote(time(),'integer')
492 .' AND ('
493 ;
494 $isFirst = true;
495 foreach ($pathFull as $pathItem)
496 {
497 $objId = $pathItem['obj_id'];
498 $nodeId = 0;
499 if ($isFirst)
500 {
501 $isFirst = false;
502 } else {
503 $q .= ' OR ';
504 }
505 $q .= '(obj_id = '.$ilDB->quote($objId,'integer').' AND node_id = '.$ilDB->quote($nodeId,'integer').')';
506 }
507 $q .= ')';
508
509 $this->writelog('getLocksOnPathRef('.$refId.') query='.$q);
510 $r = $ilDB->query($q);
511
512 $result = array();
513 while ($row = $r->fetchRow(DB_FETCHMODE_ASSOC))
514 {
515 if ($row['depth'] == -1) $row['depth'] = 'infinity';
516 $row['scope'] = ($row['scope'] == 'x') ? 'exclusive' : 'shared';
517 $result[] = $row;
518 }
519 return $result;
520 }

References $ilDB, $r, $result, $row, DB_FETCHMODE_ASSOC, and writelog().

Referenced by lockRef().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ilDAVLocks()

ilDAVLocks::ilDAVLocks ( )

Definition at line 49 of file class.ilDAVLocks.php.

50 {
51 }

◆ lockRef()

ilDAVLocks::lockRef (   $refId,
  $iliasUserId,
  $davUser,
  $token,
  $expires,
  $depth,
  $scope 
)

Creates a lock an object, unless there are locks on the object or its parents, which prevent the creation of the lock.

As described in RFC2518, chapter 7.1, a write lock prevents all principals whithout the lock from successfully executing a PUT, POST, PROPPATCH, LOCK, UNLOCK, MOVE, DELETE, or MKCOL on the locked resource. All other current methods, GET in particular, function independently of the lock. For a collection, the lock also affects the ability to add and remove members.

Parameters
intReference id of the object to be locked.
intThe id of a node of the object. For example the id of a page of a learning module. Specify 0 if the object does not have multiple nodes.
intILIAS user id of the lock owner.
stringDAV user of the lock owner.
stringLock token.
intexpiration timestamp for the lock.
boolDepth of the lock. Must be 0 or 'infinity'.
boolScope of the lock. Must be 'exclusive' or 'shared'.
Returns
true, if creation of lock succeeded, returns a string if the creation failed.

Definition at line 76 of file class.ilDAVLocks.php.

77 {
78 $this->writelog('lockRef('.$refId.','.$iliasUserId.','.$davUser.','.$token.','.$expires.','.$depth.','.$scope.')');
79 global $tree, $txt;
80
81 $result = true;
82 $data = $tree->getNodeData($refId);
83
84 // Check whether a lock on the path to the object prevents the creation
85 // of a new lock
86 $locksOnPath = $this->getLocksOnPathRef($refId);
87
88 if ($scope == 'exclusive' && count($locksOnPath) > 0) {
89 $result = 'couldnt create exclusive lock due to existing lock on path '.var_export($locksOnPath,true);
90 }
91
92 foreach ($locksOnPath as $lock)
93 {
94 if ($lock['token'] == $token &&
95 $lock['obj_id'] == $data['obj_id'] &&
96 $lock['ilias_owner'] == $iliasUserId)
97 {
98 if ($this->updateLockWithoutCheckingObj($data['obj_id'], 0, $token, $expires))
99 {
100 return true;
101 }
102 else
103 {
104 return 'couldnt update lock';
105 }
106 }
107 }
108
109 if ($result === true)
110 {
111 foreach ($locksOnPath as $lock)
112 {
113 if ($lock['scope'] == 'exclusive' &&
114 ($lock['depth'] == 'infinity' || $lock['obj_id'] == $data['obj_id']) &&
115 $lock['ilias_owner'] != $iliasUserId)
116 {
117 $result = 'couldnt create lock due to exclusive lock on path '.var_export($lock,true);
118 break;
119 }
120 }
121 }
122
123 // Check whether a lock on the children (subtree) of the object prevents
124 // the creation of a new lock
125 if ($result === true && $depth == 'infinity')
126 {
127 // XXX - if lock has depth infinity, we must check for locks in the subtree
128 }
129
130 if ($result === true)
131 {
133 $data['obj_id'], 0,
134 $iliasUserId, $davUser, $token, $expires, $depth, $scope
135 );
136 }
137 return $result;
138 }
updateLockWithoutCheckingObj($objId, $nodeId, $token, $expires)
Updates a write lock.
getLocksOnPathRef($refId)
Returns all locks on the specified object, specified by a reference id.
lockWithoutCheckingObj($objId, $nodeId, $iliasUserId, $davUser, $token, $expires, $depth, $scope)
$txt
Definition: error.php:12
$data

References $data, $result, $txt, getLocksOnPathRef(), lockWithoutCheckingObj(), updateLockWithoutCheckingObj(), and writelog().

+ Here is the call graph for this function:

◆ lockWithoutCheckingDAV()

ilDAVLocks::lockWithoutCheckingDAV ( $objDAV,
  $iliasUserId,
  $davUser,
  $token,
  $expires,
  $depth,
  $scope 
)

Creates a write lock.

Important: This is a low-level function, which does not check on existing locks, before creating the lock data.

As described in RFC2518, chapter 7.1, a write lock prevents all principals whithout the lock from successfully executing a PUT, POST, PROPPATCH, LOCK, UNLOCK, MOVE, DELETE, or MKCOL on the locked resource. All other current methods, GET in particular, function independently of the lock. For a collection, the lock also affects the ability to add and remove members.

Parameters
$objDAVDAV object to be locked.
intILIAS user id of the lock owner.
stringDAV user of the lock owner.
stringLock token.
intexpiration timestamp for the lock.
boolDepth of the lock. Must be 0 or 'infinity'.
boolScope of the lock. Must be 'exclusive' or 'shared'.
Returns
true, if creation of lock succeeded.

Definition at line 162 of file class.ilDAVLocks.php.

163 {
164 $objId = $objDAV->getObjectId();
165 $nodeId = $objDAV->getNodeId();
166
167 return $this->lockWithoutCheckingObj($objId, $nodeId, $iliasUserId, $davUser, $token, $expires, $depth, $scope);
168 }

References lockWithoutCheckingObj().

+ Here is the call graph for this function:

◆ lockWithoutCheckingObj()

ilDAVLocks::lockWithoutCheckingObj (   $objId,
  $nodeId,
  $iliasUserId,
  $davUser,
  $token,
  $expires,
  $depth,
  $scope 
)
       Creates a write lock.

       Important: This is a low-level function, which does not check on existing
       locks, before creating the lock data.

       As described in RFC2518, chapter 7.1, a write lock prevents all principals whithout
       the lock from successfully executing a PUT, POST, PROPPATCH, LOCK, UNLOCK, MOVE,
       DELETE, or MKCOL on the locked resource. All other current methods, GET in particular,
       function independently of the lock.
       For a collection, the lock also affects the ability to add and remove members.

       @param int id of the object to be locked.
       @param int node The id of a node of the object. For example the id of a page of a
       learning module. Specify 0 if the object does not have multiple nodes.

. *

Parameters
intILIAS user id of the lock owner.
stringDAV user of the lock owner.
stringLock token.
intexpiration timestamp for the lock.
boolDepth of the lock. Must be 0 or 'infinity'.
boolScope of the lock. Must be 'exclusive' or 'shared'.
Returns
true, if creation of lock succeeded.

Definition at line 193 of file class.ilDAVLocks.php.

194 {
195 global $ilDB;
196
197 switch ($depth)
198 {
199 case 'infinity' : $depth = -1;
200 break;
201 case 0 :
202 $depth = 0;
203 break;
204 default :
205 trigger_error('invalid depth '.$depth,E_ERROR);
206 return;
207 }
208
209 switch ($scope)
210 {
211 case 'exclusive' : $scope = 'x'; break;
212 case 'shared' : $scope = 's'; break;
213 default : trigger_error('invalid scope '.$scope,E_ERROR); return;
214 }
215
216 $q = 'INSERT INTO '.$this->table
217 .' SET obj_id = '.$ilDB->quote($objId,'integer')
218 .', node_id = '.$ilDB->quote($nodeId,'integer')
219 .', ilias_owner = '.$ilDB->quote($iliasUserId,'text')
220 .', dav_owner = '.$ilDB->quote($davUser,'text')
221 .', token = '.$ilDB->quote($token,'text')
222 .', expires = '.$ilDB->quote($expires,'integer')
223 .', depth = '.$ilDB->quote($depth,'integer')
224 .', type = \'w\''
225 .', scope = '.$ilDB->quote($scope,'text')
226 ;
227 $this->writelog('lock query='.$q);
228 $result = $ilDB->manipulate($q);
229 return ! PEAR::isError($result);
230 }
isError($data, $code=null)
Tell whether a value is a PEAR error.
Definition: PEAR.php:279

References $ilDB, $result, PEAR\isError(), and writelog().

Referenced by lockRef(), and lockWithoutCheckingDAV().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ unlockWithoutCheckingDAV()

ilDAVLocks::unlockWithoutCheckingDAV ( $objDAV,
  $token 
)

Discards a write lock.

Important: This is a low-level function, which does not check on existing locks, before deleting the lock data.

Parameters
$objDAVDAV object to be locked.
stringLock token.
Returns
true on success.

Definition at line 285 of file class.ilDAVLocks.php.

286 {
287 global $ilDB;
288 $this->writelog('unlock('.$objDAV.','.$token.')');
289
290 $objId = $objDAV->getObjectId();
291 $nodeId = $objDAV->getNodeId();
292
293 // Unlock object
294 // FIXME - Maybe we should delete all rows with the same token, not
295 // just the ones with the same token, obj_id and node_id.
296 $q = 'DELETE FROM '.$this->table
297 .' WHERE token = '.$ilDB->quote($token,'text')
298 .' AND obj_id = '.$ilDB->quote($objId,'integer')
299 .' AND node_id = '.$ilDB->quote($nodeId,'integer')
300 ;
301 $this->writelog('unlock query='.$q);
302 $aff = $ilDB->manipulate($q);
303 $success = $aff > 0;
304
305 // clean up expired locks in 1 out of 100 unlock requests
306 if (rand(1,100) == 1)
307 {
308 $this->cleanUp();
309 }
310
311 return $success;
312 }
$success
Definition: Utf8Test.php:87
cleanUp()
System maintenance: get rid of locks that have expired over an hour ago.

References $ilDB, $success, cleanUp(), and writelog().

+ Here is the call graph for this function:

◆ updateLockWithoutCheckingDAV()

ilDAVLocks::updateLockWithoutCheckingDAV ( $objDAV,
  $token,
  $expires 
)

Updates a write lock.

Important: This is a low-level function, which does not check on existing locks, before updating the lock data.

Parameters
stringLock token.
intexpiration timestamp for the lock.
Returns
true on success.

Definition at line 242 of file class.ilDAVLocks.php.

243 {
244 global $ilDB;
245 $objId = $objDAV->getObjectId();
246 $nodeId = $objDAV->getNodeId();
247
248 return $this->updateLockWithoutCheckingObj($objId, $nodeId, $token, $expires);
249 }

References $ilDB, and updateLockWithoutCheckingObj().

+ Here is the call graph for this function:

◆ updateLockWithoutCheckingObj()

ilDAVLocks::updateLockWithoutCheckingObj (   $objId,
  $nodeId,
  $token,
  $expires 
)

Updates a write lock.

Important: This is a low-level function, which does not check on existing locks, before updating the lock data.

Parameters
stringLock token.
intexpiration timestamp for the lock.
Returns
true on success.

Definition at line 261 of file class.ilDAVLocks.php.

262 {
263 global $ilDB;
264
265 $q = 'UPDATE '.$this->table
266 .' SET expires = '.$ilDB->quote($expires,'integer')
267 .' WHERE token = '.$ilDB->quote($token,'text')
268 .' AND obj_id = '.$ilDB->quote($objId,'integer')
269 .' AND node_id = '.$ilDB->quote($nodeId,'integer')
270 ;
271 $aff = $ilDB->manipulate($q);
272 return $aff > 0;
273 }

References $ilDB.

Referenced by lockRef(), and updateLockWithoutCheckingDAV().

+ Here is the caller graph for this function:

◆ writelog()

ilDAVLocks::writelog (   $message)
protected

Writes a message to the logfile.,.

Parameters
messageString.
Returns
void.

Definition at line 575 of file class.ilDAVLocks.php.

576 {
577 global $log, $ilias;
578 if ($this->isDebug)
579 {
580 $log->write(
581 $ilias->account->getLogin()
582 .' DAV ilDAVLocks.'.str_replace("\n",";",$message)
583 );
584 }
585 /*
586 if ($this->logFile)
587 {
588 $fh = fopen($this->logFile, 'a');
589 fwrite($fh, date('Y-m-d h:i:s '));
590 fwrite($fh, str_replace("\n",";",$message));
591 fwrite($fh, "\n\n");
592 fclose($fh);
593 }*/
594 }

References $log.

Referenced by getLockDAV(), getLocksOnObjectObj(), getLocksOnPathDAV(), getLocksOnPathRef(), lockRef(), lockWithoutCheckingObj(), and unlockWithoutCheckingDAV().

+ Here is the caller graph for this function:

Field Documentation

◆ $isDebug

ilDAVLocks::$isDebug = false
private

Set this to true, to get debug output in the ILIAS log.

Definition at line 47 of file class.ilDAVLocks.php.

◆ $table

ilDAVLocks::$table = 'dav_lock'
private

Definition at line 44 of file class.ilDAVLocks.php.


The documentation for this class was generated from the following file: