Sirius\Upload\Handler::setSanitizerCallback PHP Method

setSanitizerCallback() public method

Set the sanitizer function for cleaning up the file names
public setSanitizerCallback ( callable $callback ) : Handler
$callback callable
return Handler
    function setSanitizerCallback($callback)
    {
        if (!is_callable($callback)) {
            throw new \InvalidArgumentException('The $callback parameter is not a valid callable entity');
        }
        $this->sanitizerCallback = $callback;
        return $this;
    }

Usage Example

Example #1
0
 public function register(Silex\Application $app)
 {
     // This exposes the main upload object as a service
     $app['upload'] = function () use($app) {
         $allowedExensions = $app['config']->get('general/accept_file_types');
         $uploadHandler = new UploadHandler($app['upload.container']);
         $uploadHandler->setPrefix($app['upload.prefix']);
         $uploadHandler->setOverwrite($app['upload.overwrite']);
         $uploadHandler->addRule('extension', array('allowed' => $allowedExensions));
         $pattern = $app['config']->get('general/upload/pattern', '[^A-Za-z0-9\\.]+');
         $replacement = $app['config']->get('general/upload/replacement', '-');
         $lowercase = $app['config']->get('general/upload/lowercase', true);
         $uploadHandler->setSanitizerCallback(function ($filename) use($pattern, $replacement, $lowercase) {
             if ($lowercase) {
                 return preg_replace("/{$pattern}/", $replacement, strtolower($filename));
             }
             return preg_replace("/{$pattern}/", $replacement, $filename);
         });
         return $uploadHandler;
     };
     // This exposes the file container as a configurabole object please refer to:
     // Sirius\Upload\Container\ContainerInterface
     // Any compatible file handler can be used.
     $app['upload.container'] = function () use($app) {
         $base = $app['resources']->getPath($app['upload.namespace']);
         if (!is_writable($base)) {
             throw new \RuntimeException("Unable to write to upload destination. Check permissions on {$base}", 1);
         }
         $container = new FlysystemContainer($app['filesystem']->getFilesystem($app['upload.namespace']));
         return $container;
     };
     // This allows multiple upload locations, all prefixed with a namespace. The default is /files
     // Note, if you want to provide an alternative namespace, you must set a path on the $app['resources']
     // service
     $app['upload.namespace'] = 'files';
     // This gets prepended to all file saves, can be reset to "" or add your own closure for more complex ones.
     $app['upload.prefix'] = date('Y-m') . '/';
     $app['upload.overwrite'] = false;
 }