$path=substr($path,0,-1);
}
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;
}
}