original_string: public static function clearCache($remove = 'standard')
      {
          $locator = Grav::instance()['locator'];
          $output = [];
          $user_config = USER_DIR . 'config/system.yaml';
  
          switch ($remove) {
              case 'all':
                  $remove_paths = self::$all_remove;
                  break;
              case 'assets-only':
                  $remove_paths = self::$assets_remove;
                  break;
              case 'images-only':
                  $remove_paths = self::$images_remove;
                  break;
              case 'cache-only':
                  $remove_paths = self::$cache_remove;
                  break;
              case 'tmp-only':
                  $remove_paths = self::$tmp_remove;
                  break;
              case 'invalidate':
                  $remove_paths = [];
                  break;
              default:
                  if (Grav::instance()['config']->get('system.cache.clear_images_by_default')) {
                      $remove_paths = self::$standard_remove;
                  } else {
                      $remove_paths = self::$standard_remove_no_images;
                  }
  
          }
  
          // Delete entries in the doctrine cache if required
          if (in_array($remove, ['all', 'standard'])) {
              $cache = Grav::instance()['cache'];
              $cache->driver->deleteAll();
          }
  
          // Clearing cache event to add paths to clear
          Grav::instance()->fireEvent('onBeforeCacheClear', new Event(['remove' => $remove, 'paths' => &$remove_paths]));
  
          foreach ($remove_paths as $stream) {
  
              // Convert stream to a real path
              try {
                  $path = $locator->findResource($stream, true, true);
                  if($path === false) continue;
  
                  $anything = false;
                  $files = glob($path . '/*');
  
                  if (is_array($files)) {
                      foreach ($files as $file) {
                          if (is_link($file)) {
                              $output[] = '<yellow>Skipping symlink:  </yellow>' . $file;
                          } elseif (is_file($file)) {
                              if (@unlink($file)) {
                                  $anything = true;
                              }
                          } elseif (is_dir($file)) {
                              if (Folder::delete($file)) {
                                  $anything = true;
                              }
                          }
                      }
                  }
  
                  if ($anything) {
                      $output[] = '<red>Cleared:  </red>' . $path . '/*';
                  }
              } catch (\Exception $e) {
                  // stream not found or another error while deleting files.
                  $output[] = '<red>ERROR: </red>' . $e->getMessage();
              }
          }
  
          $output[] = '';
  
          if (($remove === 'all' || $remove === 'standard') && file_exists($user_config)) {
              touch($user_config);
  
              $output[] = '<red>Touched: </red>' . $user_config;
              $output[] = '';
          }
  
          // Clear stat cache
          @clearstatcache();
  
          // Clear opcache
          if (function_exists('opcache_reset')) {
              @opcache_reset();
          }
  
          return $output;
      }
code: public static function clearCache($remove = 'standard')
      {
          $locator = Grav::instance()['locator'];
          $output = [];
          $user_config = USER_DIR . 'config/system.yaml';
  
          switch ($remove) {
              case 'all':
                  $remove_paths = self::$all_remove;
                  break;
              case 'assets-only':
                  $remove_paths = self::$assets_remove;
                  break;
              case 'images-only':
                  $remove_paths = self::$images_remove;
                  break;
              case 'cache-only':
                  $remove_paths = self::$cache_remove;
                  break;
              case 'tmp-only':
                  $remove_paths = self::$tmp_remove;
                  break;
              case 'invalidate':
                  $remove_paths = [];
                  break;
              default:
                  if (Grav::instance()['config']->get('system.cache.clear_images_by_default')) {
                      $remove_paths = self::$standard_remove;
                  } else {
                      $remove_paths = self::$standard_remove_no_images;
                  }
  
          }
  
          // Delete entries in the doctrine cache if required
          if (in_array($remove, ['all', 'standard'])) {
              $cache = Grav::instance()['cache'];
              $cache->driver->deleteAll();
          }
  
          // Clearing cache event to add paths to clear
          Grav::instance()->fireEvent('onBeforeCacheClear', new Event(['remove' => $remove, 'paths' => &$remove_paths]));
  
          foreach ($remove_paths as $stream) {
  
              // Convert stream to a real path
              try {
                  $path = $locator->findResource($stream, true, true);
                  if($path === false) continue;
  
                  $anything = false;
                  $files = glob($path . '/*');
  
                  if (is_array($files)) {
                      foreach ($files as $file) {
                          if (is_link($file)) {
                              $output[] = '<yellow>Skipping symlink:  </yellow>' . $file;
                          } elseif (is_file($file)) {
                              if (@unlink($file)) {
                                  $anything = true;
                              }
                          } elseif (is_dir($file)) {
                              if (Folder::delete($file)) {
                                  $anything = true;
                              }
                          }
                      }
                  }
  
                  if ($anything) {
                      $output[] = '<red>Cleared:  </red>' . $path . '/*';
                  }
              } catch (\Exception $e) {
                  // stream not found or another error while deleting files.
                  $output[] = '<red>ERROR: </red>' . $e->getMessage();
              }
          }
  
          $output[] = '';
  
          if (($remove === 'all' || $remove === 'standard') && file_exists($user_config)) {
              touch($user_config);
  
              $output[] = '<red>Touched: </red>' . $user_config;
              $output[] = '';
          }
  
          // Clear stat cache
          @clearstatcache();
  
          // Clear opcache
          if (function_exists('opcache_reset')) {
              @opcache_reset();
          }
  
          return $output;
      }
code_tokens: public static function clearCache ( $ remove = 'standard' ) { $ locator = Grav :: instance ( ) [ 'locator' ] ; $ output = [ ] ; $ user_config = USER_DIR . 'config/system.yaml' ; switch ( $ remove ) { case 'all' : $ remove_paths = self :: $ all_remove ; break ; case 'assets-only' : $ remove_paths = self :: $ assets_remove ; break ; case 'images-only' : $ remove_paths = self :: $ images_remove ; break ; case 'cache-only' : $ remove_paths = self :: $ cache_remove ; break ; case 'tmp-only' : $ remove_paths = self :: $ tmp_remove ; break ; case 'invalidate' : $ remove_paths = [ ] ; break ; default : if ( Grav :: instance ( ) [ 'config' ] -> get ( 'system.cache.clear_images_by_default' ) ) { $ remove_paths = self :: $ standard_remove ; } else { $ remove_paths = self :: $ standard_remove_no_images ; } } // Delete entries in the doctrine cache if required if ( in_array ( $ remove , [ 'all' , 'standard' ] ) ) { $ cache = Grav :: instance ( ) [ 'cache' ] ; $ cache -> driver -> deleteAll ( ) ; } // Clearing cache event to add paths to clear Grav :: instance ( ) -> fireEvent ( 'onBeforeCacheClear' , new Event ( [ 'remove' => $ remove , 'paths' => & $ remove_paths ] ) ) ; foreach ( $ remove_paths as $ stream ) { // Convert stream to a real path try { $ path = $ locator -> findResource ( $ stream , true , true ) ; if ( $ path === false ) continue ; $ anything = false ; $ files = glob ( $ path . '/*' ) ; if ( is_array ( $ files ) ) { foreach ( $ files as $ file ) { if ( is_link ( $ file ) ) { $ output [ ] = '<yellow>Skipping symlink:  </yellow>' . $ file ; } elseif ( is_file ( $ file ) ) { if ( @ unlink ( $ file ) ) { $ anything = true ; } } elseif ( is_dir ( $ file ) ) { if ( Folder :: delete ( $ file ) ) { $ anything = true ; } } } } if ( $ anything ) { $ output [ ] = '<red>Cleared:  </red>' . $ path . '/*' ; } } catch ( \ Exception $ e ) { // stream not found or another error while deleting files. $ output [ ] = '<red>ERROR: </red>' . $ e -> getMessage ( ) ; } } $ output [ ] = '' ; if ( ( $ remove === 'all' || $ remove === 'standard' ) && file_exists ( $ user_config ) ) { touch ( $ user_config ) ; $ output [ ] = '<red>Touched: </red>' . $ user_config ; $ output [ ] = '' ; } // Clear stat cache @ clearstatcache ( ) ; // Clear opcache if ( function_exists ( 'opcache_reset' ) ) { @ opcache_reset ( ) ; } return $ output ; }
docstring: Helper method to clear all Grav caches
  
  @param string $remove standard|all|assets-only|images-only|cache-only
  
  @return array
docstring_tokens: Helper method to clear all Grav caches