ILIAS  release_4-4 Revision
All Data Structures Namespaces Files Functions Variables Modules Pages
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)
 Creates a write lock. More...
 
 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.

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

Referenced by unlockWithoutCheckingDAV().

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  }
static _getAllReferences($a_id)
get all reference ids of object
const DB_FETCHMODE_ASSOC
Definition: class.ilDB.php:10
$r
+ 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.

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

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.,.
const DB_FETCHMODE_ASSOC
Definition: class.ilDB.php:10
$r
+ 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.

References getLocksOnObjectObj().

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.
+ 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.

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

Referenced by getLocksOnObjectDAV().

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  }
$result
writelog($message)
Writes a message to the logfile.,.
const DB_FETCHMODE_ASSOC
Definition: class.ilDB.php:10
$r
+ 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.

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

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  }
$result
writelog($message)
Writes a message to the logfile.,.
const DB_FETCHMODE_ASSOC
Definition: class.ilDB.php:10
$r
+ 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.

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

Referenced by lockRef().

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  }
$result
writelog($message)
Writes a message to the logfile.,.
const DB_FETCHMODE_ASSOC
Definition: class.ilDB.php:10
$r
+ 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.

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

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.
$result
lockWithoutCheckingObj($objId, $nodeId, $iliasUserId, $davUser, $token, $expires, $depth, $scope)
Creates a write lock.
getLocksOnPathRef($refId)
Returns all locks on the specified object, specified by a reference id.
writelog($message)
Writes a message to the logfile.,.
while($lm_rec=$ilDB->fetchAssoc($lm_set)) $data
+ 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.

References lockWithoutCheckingObj().

163  {
164  $objId = $objDAV->getObjectId();
165  $nodeId = $objDAV->getNodeId();
166 
167  return $this->lockWithoutCheckingObj($objId, $nodeId, $iliasUserId, $davUser, $token, $expires, $depth, $scope);
168  }
lockWithoutCheckingObj($objId, $nodeId, $iliasUserId, $davUser, $token, $expires, $depth, $scope)
Creates a write lock.
+ 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.

Parameters
intid of the object to be locked.
intnode 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. . *
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.

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

Referenced by lockRef(), and lockWithoutCheckingDAV().

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  }
$result
writelog($message)
Writes a message to the logfile.,.
isError($data, $code=null)
Tell whether a value is a PEAR error.
Definition: PEAR.php:279
+ 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.

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

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  }
writelog($message)
Writes a message to the logfile.,.
cleanUp()
System maintenance: get rid of locks that have expired over an hour ago.
$success
Definition: Utf8Test.php:87
+ 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.

References updateLockWithoutCheckingObj().

243  {
244  global $ilDB;
245  $objId = $objDAV->getObjectId();
246  $nodeId = $objDAV->getNodeId();
247 
248  return $this->updateLockWithoutCheckingObj($objId, $nodeId, $token, $expires);
249  }
updateLockWithoutCheckingObj($objId, $nodeId, $token, $expires)
Updates a write lock.
+ 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.

Referenced by lockRef(), and updateLockWithoutCheckingDAV().

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  }
+ 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.

References $log.

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

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  }
+ 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: