|
|
@ -47,6 +47,48 @@ class OC_FileStorage_SMB extends OC_FileStorage_StreamWrapper{ |
|
|
|
$path=substr($path,0,-1); |
|
|
|
$path=substr($path,0,-1); |
|
|
|
} |
|
|
|
} |
|
|
|
return 'smb://'.$this->user.':'.$this->password.'@'.$this->host.$this->share.$this->root.$path; |
|
|
|
return 'smb://'.$this->user.':'.$this->password.'@'.$this->host.$this->share.$this->root.$path; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public function stat($path){ |
|
|
|
|
|
|
|
if(!$path and $this->root=='/'){//mtime doesn't work for shares |
|
|
|
|
|
|
|
$mtime=$this->shareMTime(); |
|
|
|
|
|
|
|
$stat=stat($this->constructUrl($path)); |
|
|
|
|
|
|
|
$stat['mtime']=$mtime; |
|
|
|
|
|
|
|
return $stat; |
|
|
|
|
|
|
|
}else{ |
|
|
|
|
|
|
|
return stat($this->constructUrl($path)); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* check if a file or folder has been updated since $time |
|
|
|
|
|
|
|
* @param int $time |
|
|
|
|
|
|
|
* @return bool |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
public function hasUpdated($path,$time){ |
|
|
|
|
|
|
|
if(!$path and $this->root=='/'){ |
|
|
|
|
|
|
|
//mtime doesn't work for shares, but giving the nature of the backend, doing a full update is still just fast enough |
|
|
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
}else{ |
|
|
|
|
|
|
|
$actualTime=$this->filemtime($path); |
|
|
|
|
|
|
|
return $actualTime>$time; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* get the best guess for the modification time of the share |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
private function shareMTime(){ |
|
|
|
|
|
|
|
$dh=$this->opendir(''); |
|
|
|
|
|
|
|
$lastCtime=0; |
|
|
|
|
|
|
|
while($file=readdir($dh)){ |
|
|
|
|
|
|
|
if($file!='.' and $file!='..'){ |
|
|
|
|
|
|
|
$ctime=$this->filemtime($file); |
|
|
|
|
|
|
|
if($ctime>$lastCtime){ |
|
|
|
|
|
|
|
$lastCtime=$ctime; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return $lastCtime; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|