From e25301b1900b2bc0337a88f9ff8c43c2c94233b8 Mon Sep 17 00:00:00 2001 From: sim2github Date: Sat, 3 May 2014 18:09:16 +0300 Subject: [PATCH] Fix PHP warning: invalid argument for foreach, when cache dir is empty and argument is bool:false --- cms/includes/classes/Cache.class.php | 102 +++++++++++++++++++++------ 1 file changed, 81 insertions(+), 21 deletions(-) diff --git a/cms/includes/classes/Cache.class.php b/cms/includes/classes/Cache.class.php index 618ae67..9f018df 100644 --- a/cms/includes/classes/Cache.class.php +++ b/cms/includes/classes/Cache.class.php @@ -1,20 +1,56 @@ _cacheDir = $cacheDir; $this->_settings = $settings; } - public function createCacheContent($content, $content_type, $charset) + /** + * Return cache with given parameters + * @param $content + * @param $content_type + * @param $charset + * @return string + */ + public function createCacheContent($content, $content_type, $charset) { $cacheContent = 'cacheId && $this->doCaching) { @@ -66,7 +106,10 @@ $cacheContent .= '} } } - private function _createCacheSettingsFile() + /** + * Save settings file + */ + private function _createCacheSettingsFile() { $content = "_settings['session_prefix'].'\';'."\n"; @@ -80,7 +123,11 @@ $cacheContent .= '} @fclose($fp); } - public function clear($page=false) + /** + * Delete all cache files and settings file. If $page set delete only this page cache file. + * @param bool $page + */ + public function clear($page=false) { if(!$page) { @@ -96,24 +143,37 @@ $cacheContent .= '} { // delete cache files of a specifid page: $page = rawurlencode(strtolower($page)); - // select page.cache and page,*.cahe - foreach(glob($this->_cacheDir.'{'.$page.'.cache,'.$page.'%2C*.cache}', GLOB_BRACE) as $cacheFile) // "%2C" = "," - { - @unlink($cacheFile); - } + // select page.cache and page,*.caсhe + $cacheFiles = glob($this->_cacheDir . '{' . $page . '.cache,' . $page . '%2C*.cache}', GLOB_BRACE); + if ($cacheFiles) { + foreach ($cacheFiles as $cacheFile) // "%2C" = "," + { + @unlink($cacheFile); + } + } } } - public function clearPhoto($id) + /** + * Delete photo cache file + * @param $id + */ + public function clearPhoto($id) { // select *,photo,[id].cache and *,photo,[id],*.cache - foreach(glob($this->_cacheDir.'{*%2C'.IMAGE_IDENTIFIER.'%2C'.$id.'.cache,*%2C'.IMAGE_IDENTIFIER.'%2C'.$id.'%2C*.cache}', GLOB_BRACE) as $cacheFile) - { - @unlink($cacheFile); - } + $cacheFiles = glob($this->_cacheDir . '{*%2C' . IMAGE_IDENTIFIER . '%2C' . $id . '.cache,*%2C' . IMAGE_IDENTIFIER . '%2C' . $id . '%2C*.cache}', GLOB_BRACE); + if ($cacheFiles) { + foreach ($cacheFiles as $cacheFile) { + @unlink($cacheFile); + } + } } - function clearRelated($page) + /** + * Clear cache of overview pages + * @param $page + */ + function clearRelated($page) { $dbr = Database::$content->prepare("SELECT include_page FROM ".Database::$db_settings['pages_table']." WHERE lower(page)=lower(:page) LIMIT 1"); $dbr->bindParam(':page', $page, PDO::PARAM_STR);