Blame view

sources/lib/private/files/cache/homecache.php 1.36 KB
31b7f2792   Kload   Upgrade to ownclo...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  <?php
  /**
   * Copyright (c) 2012 Robin Appelman <icewind@owncloud.com>
   * This file is licensed under the Affero General Public License version 3 or
   * later.
   * See the COPYING-README file.
   */
  
  namespace OC\Files\Cache;
  
  class HomeCache extends Cache {
  	/**
  	 * get the size of a folder and set it in the cache
  	 *
  	 * @param string $path
  	 * @return int
  	 */
  	public function calculateFolderSize($path) {
a293d369c   Kload   Update sources to...
19
  		if ($path !== '/' and $path !== '' and $path !== 'files') {
31b7f2792   Kload   Upgrade to ownclo...
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
  			return parent::calculateFolderSize($path);
  		}
  
  		$totalSize = 0;
  		$entry = $this->get($path);
  		if ($entry && $entry['mimetype'] === 'httpd/unix-directory') {
  			$id = $entry['fileid'];
  			$sql = 'SELECT SUM(`size`) FROM `*PREFIX*filecache` ' .
  				'WHERE `parent` = ? AND `storage` = ? AND `size` >= 0';
  			$result = \OC_DB::executeAudited($sql, array($id, $this->getNumericStorageId()));
  			if ($row = $result->fetchRow()) {
  				list($sum) = array_values($row);
  				$totalSize = (int)$sum;
  				if ($entry['size'] !== $totalSize) {
  					$this->update($id, array('size' => $totalSize));
  				}
  			}
  		}
  		return $totalSize;
  	}
  
  	public function get($path) {
  		$data = parent::get($path);
  		if ($path === '' or $path === '/') {
  			// only the size of the "files" dir counts
  			$filesData = parent::get('files');
  
  			if (isset($filesData['size'])) {
  				$data['size'] = $filesData['size'];
  			}
  		}
  		return $data;
  	}
  }