/**
  * Touch internal
  *
  */
 public function _touch($filter, $duration)
 {
     Charcoal_ParamTrait::validateImplements(1, 'Charcoal_IFileFilter', $filter);
     Charcoal_ParamTrait::validateInteger(2, $duration, TRUE);
     $expire_date = date('Y-m-d H:i:s', strtotime("+{$duration} seconds"));
     // meta suffix
     $suffix = '.' . CACHE_FILE_EXT_META;
     // select files and delete them all
     $files = $this->_cache_root_dir->listFiles($meta_filter);
     if ($files && is_array($files)) {
         foreach ($files as $file) {
             $key = basename($file, $suffix);
             // read cache meta file
             $meta = $this->_readMeta($meta_file);
             if ($meta === FALSE) {
                 $meta = $this->_buildMeta($key);
                 if ($meta === FALSE) {
                     continue;
                 }
             }
             // save meta file
             $meta['expire_date'] = $expire_date;
             $this->_writeMeta($meta_file, p($meta));
         }
     }
 }