예제 #1
0
 /**
  * update the filecache according to changes to the filesystem
  * @param string path
  * @param string root (optional)
  */
 public static function update($path, $root = false)
 {
     if ($root === false) {
         $view = OC_Filesystem::getView();
     } else {
         $view = new OC_FilesystemView($root);
     }
     $mimetype = $view->getMimeType($path);
     $size = 0;
     $cached = OC_FileCache_Cached::get($path, $root);
     $cachedSize = isset($cached['size']) ? $cached['size'] : 0;
     if ($view->is_dir($path . '/')) {
         if (OC_FileCache::inCache($path, $root)) {
             $cachedContent = OC_FileCache_Cached::getFolderContent($path, $root);
             foreach ($cachedContent as $file) {
                 $size += $file['size'];
             }
             $mtime = $view->filemtime($path . '/');
             $ctime = $view->filectime($path . '/');
             $writable = $view->is_writable($path . '/');
             OC_FileCache::put($path, array('size' => $size, 'mtime' => $mtime, 'ctime' => $ctime, 'mimetype' => $mimetype, 'writable' => $writable));
         } else {
             $count = 0;
             OC_FileCache::scan($path, null, $count, $root);
             return;
             //increaseSize is already called inside scan
         }
     } else {
         $size = OC_FileCache::scanFile($path, $root);
     }
     OC_FileCache::increaseSize(dirname($path), $size - $cachedSize, $root);
 }
예제 #2
0
 /**
  * scan a single file
  * @param string path
  * @param string root (optional)
  * @return int size of the scanned file
  */
 public static function scanFile($path, $root = '')
 {
     if (!$root) {
         $view = OC_Filesystem::getView();
     } else {
         $view = new OC_FilesystemView($root == '/' ? '' : $root);
     }
     if (!$view->is_readable($path)) {
         return;
     }
     //cant read, nothing we can do
     clearstatcache();
     $mimetype = $view->getMimeType($path);
     $stat = $view->stat($path);
     if ($mimetype == 'httpd/unix-directory') {
         $writable = $view->is_writable($path . '/');
     } else {
         $writable = $view->is_writable($path);
     }
     $stat['mimetype'] = $mimetype;
     $stat['writable'] = $writable;
     if ($path == '/') {
         $path = '';
     }
     self::put($path, $stat, $root);
     return $stat['size'];
 }
예제 #3
0
 /**
  * scan a single file
  * @param string path
  * @param string root (optional)
  * @return int size of the scanned file
  */
 public static function scanFile($path, $root = false)
 {
     // NOTE: Ugly hack to prevent shared files from going into the cache (the source already exists somewhere in the cache)
     if (substr($path, 0, 7) == '/Shared') {
         return;
     }
     if ($root === false) {
         $view = OC_Filesystem::getView();
     } else {
         $view = new OC_FilesystemView($root);
     }
     if (!$view->is_readable($path)) {
         return;
     }
     //cant read, nothing we can do
     clearstatcache();
     $mimetype = $view->getMimeType($path);
     $stat = $view->stat($path);
     if ($mimetype == 'httpd/unix-directory') {
         $stat['size'] = 0;
         $writable = $view->is_writable($path . '/');
     } else {
         $writable = $view->is_writable($path);
     }
     $stat['mimetype'] = $mimetype;
     $stat['writable'] = $writable;
     if ($path == '/') {
         $path = '';
     }
     self::put($path, $stat, $root);
     return $stat['size'];
 }
예제 #4
0
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
* GNU AFFERO GENERAL PUBLIC LICENSE for more details.
*
* You should have received a copy of the GNU Affero General Public
* License along with this library.  If not, see <http://www.gnu.org/licenses/>.
*
*/
// Check if we are a user
OCP\User::checkLoggedIn();
$filename = $_GET["file"];
$view = new OC_FilesystemView('/' . \OCP\User::getUser() . '/files_trashbin/files');
if (!$view->file_exists($filename)) {
    header("HTTP/1.0 404 Not Found");
    $tmpl = new OCP\Template('', '404', 'guest');
    $tmpl->assign('file', $filename);
    $tmpl->printPage();
    exit;
}
$ftype = $view->getMimeType($filename);
header('Content-Type:' . $ftype);
if (preg_match("/MSIE/", $_SERVER["HTTP_USER_AGENT"])) {
    header('Content-Disposition: attachment; filename="' . rawurlencode(basename($filename)) . '"');
} else {
    header('Content-Disposition: attachment; filename*=UTF-8\'\'' . rawurlencode(basename($filename)) . '; filename="' . rawurlencode(basename($filename)) . '"');
}
OCP\Response::disableCaching();
header('Content-Length: ' . $view->filesize($filename));
OC_Util::obEnd();
$view->readfile($filename);