From aae85978ecfefe7b2293cfeb8b90f1ee88c1284b Mon Sep 17 00:00:00 2001 From: dongsheng Date: Mon, 8 Sep 2008 08:48:07 +0000 Subject: [PATCH] MDL-13766, users can delele their own cache files in fp. --- lang/en_utf8/repository.php | 2 + lib/filelib.php | 24 +++++++- repository/lib.php | 115 +++++++++++++++++++++--------------- repository/ws.php | 5 ++ 4 files changed, 95 insertions(+), 51 deletions(-) diff --git a/lang/en_utf8/repository.php b/lang/en_utf8/repository.php index bfc932b571..beec7452f4 100644 --- a/lang/en_utf8/repository.php +++ b/lang/en_utf8/repository.php @@ -12,7 +12,9 @@ $string['areauserpersonal'] = 'Personal'; $string['attachment'] = 'Attachment'; $string['back'] = '< Back'; $string['cacheexpire'] = 'Cache expire'; +$string['cachecleared'] = 'Cached files are removed'; $string['close'] = 'Close'; +$string['cleancache'] = 'Clean my cache files'; $string['copying'] = 'Copying'; $string['configcacheexpire'] = 'Configurate the cache expired time (in minutes).'; $string['configsaved'] = 'Configuration saved!'; diff --git a/lib/filelib.php b/lib/filelib.php index 358c25202a..bc49323679 100644 --- a/lib/filelib.php +++ b/lib/filelib.php @@ -1862,9 +1862,9 @@ class curl_cache { } } public function get($param){ - global $CFG; + global $CFG, $USER; $this->cleanup($CFG->repository_cache_expire); - $filename = md5(serialize($param)); + $filename = 'u'.$USER->id.'_'.md5(serialize($param)); if(file_exists($this->dir.$filename)) { $lasttime = filemtime($this->dir.$filename); if(time()-$lasttime > $CFG->repository_cache_expire) @@ -1880,7 +1880,8 @@ class curl_cache { return false; } public function set($param, $val){ - $filename = md5(serialize($param)); + global $CFG, $USER; + $filename = 'u'.$USER->id.'_'.md5(serialize($param)); $fp = fopen($this->dir.$filename, 'w'); fwrite($fp, serialize($val)); fclose($fp); @@ -1897,4 +1898,21 @@ class curl_cache { } } } + /** + * delete current user's cache file + * + * @return null + */ + public function refresh(){ + global $CFG, $USER; + if($dir = opendir($this->dir)){ + while (false !== ($file = readdir($dir))) { + if(!is_dir($file) && $file != '.' && $file != '..') { + if(strpos($file, 'u'.$USER->id.'_')!==false){ + @unlink($this->dir.$file); + } + } + } + } + } } diff --git a/repository/lib.php b/repository/lib.php index 76562f8abd..c096f1af2d 100644 --- a/repository/lib.php +++ b/repository/lib.php @@ -1150,6 +1150,7 @@ function repository_get_client($context){ $strback = get_string('back', 'repository'); $strcancel = get_string('cancel'); $strclose = get_string('close', 'repository'); + $strccache = get_string('cleancache', 'repository'); $strcopying = get_string('copying', 'repository'); $strdownbtn = get_string('getfile', 'repository'); $strdownload = get_string('downloadsucc', 'repository'); @@ -1268,7 +1269,7 @@ function _client(){ {position: 'top', height: 32, resize: false, body:'
', gutter: '2'}, {position: 'left', width: 200, resize: true, - body:'', gutter: '0 5 0 2', minWidth: 150, maxWidth: 300 }, + body:'
', gutter: '0 5 0 2', minWidth: 150, maxWidth: 300 }, {position: 'center', body: '
', scroll: true, gutter: '0 2 0 0' } ] @@ -1319,6 +1320,71 @@ function _client(){ // init repository list repo_list = new YAHOO.util.Element('repo-list-$suffix'); repo_list.on('contentReady', function(e){ + var searchbar = new YAHOO.util.Element('search-div-$suffix'); + searchbar.get('element').innerHTML = ''; + var searchbtn = new YAHOO.util.Element('search-btn-$suffix'); + searchbtn.callback = { + success: function(o) { + var panel = new YAHOO.util.Element('panel-$suffix'); + try { + if(!o.responseText){ + var panel = new YAHOO.util.Element('panel-$suffix'); + panel.get('element').innerHTML = 'no'; + return; + } + var json = YAHOO.lang.JSON.parse(o.responseText); + } catch(e) { + alert('$strinvalidjson - '+o.responseText); + } + _client.ds = {}; + if(!json.list || json.list.length<1){ + var panel = new YAHOO.util.Element('panel-$suffix'); + panel.get('element').innerHTML = 'no'; + return; + } + _client.ds.list = json.list; + if(_client.ds.list) { + if(_client.viewmode) { + _client.viewthumb(); + } else { + _client.viewlist(); + } + var input_ctl = new YAHOO.util.Element('search-input-$suffix'); + input_ctl.get('element').value=''; + } + } + } + searchbtn.input_ctl = new YAHOO.util.Element('search-input-$suffix'); + searchbtn.on('click', function(e){ + var keyword = this.input_ctl.get('value'); + var params = []; + params['s'] = keyword; + params['env']=_client.env; + params['action']='gsearch'; + params['sesskey']='$sesskey'; + params['ctx_id']=$context->id; + _client.loading('load'); + var trans = YAHOO.util.Connect.asyncRequest('POST', + '$CFG->httpswwwroot/repository/ws.php?action=gsearch', this.callback, _client.postdata(params)); + }); + var repo_kit_div = new YAHOO.util.Element('repo-kit-$suffix'); + repo_kit_div.get('element').innerHTML = ''; + var repo_kit_ccache = new YAHOO.util.Element('repo-kit-ccacle-$suffix'); + repo_kit_ccache.callback = { + success: function(o) { + var panel = new YAHOO.util.Element('panel-$suffix'); + panel.get('element').innerHTML = "

"+o.responseText+"

"; + } + } + repo_kit_ccache.on('click', function(e){ + var params = []; + params['env']=_client.env; + params['sesskey']='$sesskey'; + params['ctx_id']=$context->id; + _client.loading('load'); + var trans = YAHOO.util.Connect.asyncRequest('POST', + '$CFG->httpswwwroot/repository/ws.php?action=ccache', this.callback, _client.postdata(params)); + }); for(var i=0; i<_client.repos.length; i++) { var repo = _client.repos[i]; var li = document.createElement('li'); @@ -1344,53 +1410,6 @@ function _client(){ li.appendChild(opt); this.appendChild(li); repo = null; - var searchbar = new YAHOO.util.Element('search-div-$suffix'); - searchbar.get('element').innerHTML = ''; - var searchbtn = new YAHOO.util.Element('search-btn-$suffix'); - searchbtn.callback = { - success: function(o) { - var panel = new YAHOO.util.Element('panel-$suffix'); - try { - if(!o.responseText){ - var panel = new YAHOO.util.Element('panel-$suffix'); - panel.get('element').innerHTML = 'no'; - return; - } - var json = YAHOO.lang.JSON.parse(o.responseText); - } catch(e) { - alert('$strinvalidjson - '+o.responseText); - } - _client.ds = {}; - if(!json.list || json.list.length<1){ - var panel = new YAHOO.util.Element('panel-$suffix'); - panel.get('element').innerHTML = 'no'; - return; - } - _client.ds.list = json.list; - if(_client.ds.list) { - if(_client.viewmode) { - _client.viewthumb(); - } else { - _client.viewlist(); - } - var input_ctl = new YAHOO.util.Element('search-input-$suffix'); - input_ctl.get('element').value=''; - } - } - } - searchbtn.input_ctl = new YAHOO.util.Element('search-input-$suffix'); - searchbtn.on('click', function(e){ - var keyword = this.input_ctl.get('value'); - var params = []; - params['s'] = keyword; - params['env']=_client.env; - params['action']='gsearch'; - params['sesskey']='$sesskey'; - params['ctx_id']=$context->id; - _client.loading('load'); - var trans = YAHOO.util.Connect.asyncRequest('POST', - '$CFG->httpswwwroot/repository/ws.php?action=gsearch', this.callback, _client.postdata(params)); - }); } }); } diff --git a/repository/ws.php b/repository/ws.php index 40becc9c9c..d918864ee8 100644 --- a/repository/ws.php +++ b/repository/ws.php @@ -55,6 +55,11 @@ if($action=='gsearch'){ } die(json_encode(array('list'=>$list))); } +if ($action=='ccache') { + $cache = new curl_cache; + $cache->refresh(); + die(get_string('cachecleared', 'repository')); +} $sql = 'SELECT i.name, i.typeid, r.type FROM {repository} r, {repository_instances} i WHERE i.id='.$repo_id.' AND i.typeid=r.id'; if(!$repository = $DB->get_record_sql($sql)) { -- 2.39.5