- Added the ability to change a files mtime via webdavs propset.
- Added some minor debug help to fscache
This commit is contained in:
parent
9379c3e128
commit
85853f9ec2
5 changed files with 43 additions and 11 deletions
|
@ -92,6 +92,19 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* sets the last modification time of the file (mtime) to the value given
|
||||
* in the second parameter or to now if the second param is empty.
|
||||
* Even if the modification time is set to a custom value the access time is set to now.
|
||||
*/
|
||||
public function setLastModifiedTime($mtime) {
|
||||
OC_Filesystem::setFileMtime($this->path, $mtime);
|
||||
}
|
||||
|
||||
public function endsWith( $str, $sub ) {
|
||||
return ( substr( $str, strlen( $str ) - strlen( $sub ) ) === $sub );
|
||||
}
|
||||
|
||||
/**
|
||||
* Updates properties on this node,
|
||||
*
|
||||
|
@ -110,13 +123,16 @@ abstract class OC_Connector_Sabre_Node implements Sabre_DAV_INode, Sabre_DAV_IPr
|
|||
}
|
||||
}
|
||||
else {
|
||||
if(!array_key_exists( $propertyName, $existing )){
|
||||
$query = OC_DB::prepare( 'INSERT INTO *PREFIX*properties (userid,propertypath,propertyname,propertyvalue) VALUES(?,?,?,?)' );
|
||||
$query->execute( array( OC_User::getUser(), $this->path, $propertyName,$propertyValue ));
|
||||
}
|
||||
else{
|
||||
$query = OC_DB::prepare( 'UPDATE *PREFIX*properties SET propertyvalue = ? WHERE userid = ? AND propertypath = ? AND propertyname = ?' );
|
||||
$query->execute( array( $propertyValue,OC_User::getUser(), $this->path, $propertyName ));
|
||||
if( $this->endsWith( $propertyName, "modificationTime")) {
|
||||
$this->setLastModifiedTime($propertyValue);
|
||||
} else {
|
||||
if(!array_key_exists( $propertyName, $existing )){
|
||||
$query = OC_DB::prepare( 'INSERT INTO *PREFIX*properties (userid,propertypath,propertyname,propertyvalue) VALUES(?,?,?,?)' );
|
||||
$query->execute( array( OC_User::getUser(), $this->path, $propertyName,$propertyValue ));
|
||||
} else {
|
||||
$query = OC_DB::prepare( 'UPDATE *PREFIX*properties SET propertyvalue = ? WHERE userid = ? AND propertypath = ? AND propertyname = ?' );
|
||||
$query->execute( array( $propertyValue,OC_User::getUser(), $this->path, $propertyName ));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -62,7 +62,7 @@ class OC_FileCache{
|
|||
if(is_array($result)){
|
||||
return $result;
|
||||
}else{
|
||||
OC_Log::write('file not found in cache ('.$path.')','core',OC_Log::DEBUG);
|
||||
OC_Log::write('get(): file not found in cache ('.$path.')','core',OC_Log::DEBUG);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -125,7 +125,9 @@ class OC_FileCache{
|
|||
$queryParts[]='mimepart=?';
|
||||
}
|
||||
$arguments[]=$id;
|
||||
$query=OC_DB::prepare('UPDATE *PREFIX*fscache SET '.implode(' , ',$queryParts).' WHERE id=?');
|
||||
|
||||
$sql = 'UPDATE *PREFIX*fscache SET '.implode(' , ',$queryParts).' WHERE id=?';
|
||||
$query=OC_DB::prepare($sql);
|
||||
$query->execute($arguments);
|
||||
}
|
||||
|
||||
|
@ -231,7 +233,7 @@ class OC_FileCache{
|
|||
if(is_array($result)){
|
||||
return $result;
|
||||
}else{
|
||||
OC_Log::write('file not found in cache ('.$path.')','core',OC_Log::DEBUG);
|
||||
OC_Log::write('getFolderContent(): file not found in cache ('.$path.')','core',OC_Log::DEBUG);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -264,7 +266,7 @@ class OC_FileCache{
|
|||
if(is_array($result)){
|
||||
return $result['id'];
|
||||
}else{
|
||||
OC_Log::write('file not found in cache ('.$path.')','core',OC_Log::DEBUG);
|
||||
OC_Log::write('getFieldId(): file not found in cache ('.$path.')','core',OC_Log::DEBUG);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
@ -293,6 +295,7 @@ class OC_FileCache{
|
|||
}else{
|
||||
$view=new OC_FilesystemView(($root=='/')?'':$root);
|
||||
}
|
||||
|
||||
$path=$params['path'];
|
||||
$fullPath=$view->getRoot().$path;
|
||||
$mimetype=$view->getMimeType($path);
|
||||
|
|
|
@ -65,6 +65,13 @@ class OC_Filestorage_Local extends OC_Filestorage{
|
|||
public function filemtime($path){
|
||||
return filemtime($this->datadir.$path);
|
||||
}
|
||||
|
||||
public function setFileMtime($path, $mtime){
|
||||
// sets the modification time of the file to the given value. If mtime is nil the current time is set.
|
||||
// note that the access time of the file always changes to the current time.
|
||||
return touch($this->datadir.$path, $mtime);
|
||||
}
|
||||
|
||||
public function file_get_contents($path){
|
||||
return file_get_contents($this->datadir.$path);
|
||||
}
|
||||
|
|
|
@ -345,6 +345,9 @@ class OC_Filesystem{
|
|||
static public function filemtime($path){
|
||||
return self::$defaultInstance->filemtime($path);
|
||||
}
|
||||
static public function setFileMtime($path, $mtime){
|
||||
return self::$defaultInstance->setFileMtime($path, $mtime);
|
||||
}
|
||||
static public function file_get_contents($path){
|
||||
return self::$defaultInstance->file_get_contents($path);
|
||||
}
|
||||
|
|
|
@ -156,6 +156,9 @@ class OC_FilesystemView {
|
|||
public function filemtime($path){
|
||||
return $this->basicOperation('filemtime',$path);
|
||||
}
|
||||
public function setFileMtime($path, $mtime){
|
||||
return $this->basicOperation('setFileMtime',$path, array('write'), $mtime);
|
||||
}
|
||||
public function file_get_contents($path){
|
||||
return $this->basicOperation('file_get_contents',$path,array('read'));
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue