summaryrefslogtreecommitdiff
path: root/includes
diff options
context:
space:
mode:
authorDries Buytaert <dries@buytaert.net>2009-09-13 17:49:51 +0000
committerDries Buytaert <dries@buytaert.net>2009-09-13 17:49:51 +0000
commite1ad90ba40b74ec103b9113e49b9792b2b422d22 (patch)
tree2a49dafa4b67c66d53fda4de19a38e0a321a9bb2 /includes
parentb5cee8fe4945c0ebdc621f82992aa9b4eb698b0c (diff)
downloadbrdo-e1ad90ba40b74ec103b9113e49b9792b2b422d22.tar.gz
brdo-e1ad90ba40b74ec103b9113e49b9792b2b422d22.tar.bz2
- Patch #575360 by dropcube: added API function to check if a cache bin is empty.
Diffstat (limited to 'includes')
-rw-r--r--includes/cache-install.inc5
-rw-r--r--includes/cache.inc36
2 files changed, 40 insertions, 1 deletions
diff --git a/includes/cache-install.inc b/includes/cache-install.inc
index 3ab41410d..3be7588eb 100644
--- a/includes/cache-install.inc
+++ b/includes/cache-install.inc
@@ -28,5 +28,8 @@ class DrupalFakeCache implements DrupalCacheInterface {
function clear($cid = NULL, $wildcard = FALSE) {
}
-
+
+ function isEmpty() {
+ return TRUE;
+ }
}
diff --git a/includes/cache.inc b/includes/cache.inc
index e87e2f889..6069ce004 100644
--- a/includes/cache.inc
+++ b/includes/cache.inc
@@ -168,6 +168,21 @@ function cache_clear_all($cid = NULL, $bin = NULL, $wildcard = FALSE) {
}
/**
+ * Check if a cache bin is empty.
+ *
+ * A cache bin is considered empty if it does not contain any valid data for any
+ * cache ID.
+ *
+ * @param $bin
+ * The cache bin to check.
+ * @return
+ * TRUE if the cache bin specified is empty.
+ */
+function cache_is_empty($bin) {
+ return _cache_get_object($bin)->isEmpty();
+}
+
+/**
* Interface for cache implementations.
*
* All cache implementations have to implement this interface. DrupalDatabaseCache
@@ -260,6 +275,17 @@ interface DrupalCacheInterface {
* match. If '*' is given as $cid, the bin $bin will be emptied.
*/
function clear($cid = NULL, $wildcard = FALSE);
+
+ /**
+ * Check if a cache bin is empty.
+ *
+ * A cache bin is considered empty if it does not contain any valid data for
+ * any cache ID.
+ *
+ * @return
+ * TRUE if the cache bin specified is empty.
+ */
+ function isEmpty();
}
/**
@@ -449,4 +475,14 @@ class DrupalDatabaseCache implements DrupalCacheInterface {
}
}
}
+
+ function isEmpty() {
+ $this->garbageCollection();
+ $query = db_select($this->bin);
+ $query->addExpression('1');
+ $result = $query->range(0, 1)
+ ->execute()
+ ->fetchField();
+ return empty($result);
+ }
}