Cherrypick: Added the ability to change a files mtime via webdavs propset.

This commit is contained in:
Klaas Freitag 2012-02-10 11:30:38 +01:00 committed by Arthur Schiwon
parent 686590bd3a
commit 71e71b75ee
3 changed files with 36 additions and 7 deletions

View file

@ -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 ));
}
}
}

View file

@ -67,9 +67,19 @@ class OC_Filestorage_Local extends OC_Filestorage{
public function filemtime($path){
return filemtime($this->datadir.$path);
}
<<<<<<< HEAD
public function fileatime($path){
return fileatime($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);
}
>>>>>>> 85853f9... - Added the ability to change a files mtime via webdavs propset.
public function file_get_contents($path){
return file_get_contents($this->datadir.$path);
}

View file

@ -369,6 +369,9 @@ class OC_Filesystem{
static public function fileatime($path){
return self::basicOperation('fileatime',$path);
}
static public function setFileMtime($path, $mtime){
return self::$defaultInstance->setFileMtime($path, $mtime);
}
static public function file_get_contents($path){
return self::basicOperation('file_get_contents',$path,array('read'));
}