diff options
Diffstat (limited to 'includes/file.inc')
-rw-r--r-- | includes/file.inc | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/includes/file.inc b/includes/file.inc index 3b7e03019..b7a096f98 100644 --- a/includes/file.inc +++ b/includes/file.inc @@ -767,10 +767,15 @@ function file_unmanaged_delete($path) { * An integer containing the number of bytes used. */ function file_space_used($uid = NULL, $status = FILE_STATUS_PERMANENT) { + $query = db_select('files', 'f'); + // Use separate placeholders for the status to avoid a bug in some versions + // of PHP. @see http://drupal.org/node/352956 + $query->where('f.status & :status1 = :status2', array(':status1' => $status, ':status2' => $status)); + $query->addExpression('SUM(f.filesize)', 'filesize'); if (!is_null($uid)) { - return db_query('SELECT SUM(filesize) FROM {files} WHERE uid = :uid AND status = :status', array(':uid' => $uid, ':status' => $status))->fetchField(); + $query->condition('f.uid', $uid); } - return db_query('SELECT SUM(filesize) FROM {files} WHERE status = :status', array(':status' => $status))->fetchField(); + return $query->execute()->fetchField(); } /** |