summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrey Andreev <narf@bofh.bg>2012-11-30 01:19:35 +0100
committerAndrey Andreev <narf@bofh.bg>2012-11-30 01:19:35 +0100
commitb37d2bc462af918276111d0439592aa445ac6277 (patch)
treeaed6d4d3fae2c8d43d2ba10b41240058d79ffd71
parent4173823ba1b45955d63cb5e8d60f02312e345bda (diff)
Add CI_Output::delete_cache()
(an improved version of PR #609)
-rw-r--r--system/core/Output.php39
-rw-r--r--user_guide_src/source/changelog.rst4
-rw-r--r--user_guide_src/source/general/caching.rst12
3 files changed, 51 insertions, 4 deletions
diff --git a/system/core/Output.php b/system/core/Output.php
index 7bfde07c7..98deff55c 100644
--- a/system/core/Output.php
+++ b/system/core/Output.php
@@ -627,6 +627,45 @@ class CI_Output {
// --------------------------------------------------------------------
/**
+ * Delete cache
+ *
+ * @param string $uri URI string
+ * @return bool
+ */
+ public function delete_cache($uri = '')
+ {
+ $CI =& get_instance();
+ $cache_path = $CI->config->item('cache_path');
+ if ($cache_path === '')
+ {
+ $cache_path = APPPATH.'cache/';
+ }
+
+ if ( ! is_dir($cache_path))
+ {
+ log_message('error', 'Unable to find cache path: '.$cache_path);
+ return FALSE;
+ }
+
+ if (empty($uri))
+ {
+ $uri = $CI->uri->uri_string();
+ }
+
+ $cache_path .= md5($CI->config->item('base_url').$CI->config->item('index_page').$uri);
+
+ if ( ! @unlink($cache_path))
+ {
+ log_message('error', 'Unable to delete cache file for '.$uri);
+ return FALSE;
+ }
+
+ return TRUE;
+ }
+
+ // --------------------------------------------------------------------
+
+ /**
* Set Cache Header
*
* Set the HTTP headers to match the server-side file cache settings
diff --git a/user_guide_src/source/changelog.rst b/user_guide_src/source/changelog.rst
index 09c425d0a..6570eb790 100644
--- a/user_guide_src/source/changelog.rst
+++ b/user_guide_src/source/changelog.rst
@@ -295,8 +295,8 @@ Release Date: Not Released
- Renamed method ``_call_hook()`` to ``call_hook()`` in the :doc:`Hooks Library <general/hooks>`.
- :doc:`Output Library <libraries/output>` changes include:
- Added a second argument to method ``set_content_type()`` that allows setting the document charset as well.
- - Added method ``get_content_type()``.
- - Added method ``get_header()``.
+ - Added methods ``get_content_type()`` and ``get_header()``.
+ - Added method ``delete_cache()``.
- ``$config['time_reference']`` now supports all timezone strings supported by PHP.
- :doc:`Config Library <libraries/config>` changes include:
- Changed ``site_url()`` method to accept an array as well.
diff --git a/user_guide_src/source/general/caching.rst b/user_guide_src/source/general/caching.rst
index c40f652ac..48385d6c9 100644
--- a/user_guide_src/source/general/caching.rst
+++ b/user_guide_src/source/general/caching.rst
@@ -56,5 +56,13 @@ If you no longer wish to cache a file you can remove the caching tag and
it will no longer be refreshed when it expires.
.. note:: Removing the tag will not delete the cache immediately. It will
- have to expire normally. If you need to remove it earlier you
- will need to manually delete it from your cache directory. \ No newline at end of file
+ have to expire normally.
+
+If you need to manually delete the cache, you can use the ``delete_cache()``
+method::
+
+ // Deletes cache for the currently requested URI
+ $this->output->delete_cache();
+
+ // Deletes cache for /foo/bar
+ $this->output->delete_cache('/foo/bar'); \ No newline at end of file