FileUpload\FileUpload::addCallback PHP Method

addCallback() public method

Register callback for an event
public addCallback ( string $event, Closure $callback )
$event string
$callback Closure
    public function addCallback($event, \Closure $callback)
    {
        $this->callbacks[$event][] = $callback;
    }

Usage Example

Example #1
0
 /**
  * Process of uploading file
  *
  * @param Closure $callback
  * @param Validator $validator
  * @return array
  */
 public function process(Closure $callback = null, Validator $validator = null)
 {
     $fileId = $this->request->get($this->fileIdAttr);
     $files = $this->request->files;
     if (!$fileId) {
         $file = new File();
         $file->user_id = $this->user->id;
         $file->addNewFromFiles($files);
         $fileId = $file->id;
     }
     $localFileSystem = $this->localFileSystem;
     $remoteFileSystem = $this->remoteFileSystem;
     $tempPath = $this->tempPath . '/' . $fileId;
     $destPath = $this->destPath . '/' . $fileId;
     $tempAbsolutePath = $this->basicPath . $this->tempPath . '/' . $fileId;
     !$localFileSystem->has($tempPath) ? $localFileSystem->getAdapter()->createDir($tempAbsolutePath) : '';
     if (!$validator) {
         $validator = $this->validator;
     }
     $fileSystem = new FileUploaderSystem();
     $pathResolver = new PathResolver($this->basicPath . $this->tempPath . '/' . $fileId);
     $filesArray = $this->getFilesInfoArray($files);
     $serverArray = $this->request->server->all();
     $fileUploader = new FileUpload($filesArray['file'], $serverArray);
     $fileUploader->setPathResolver($pathResolver);
     $fileUploader->setFileSystem($fileSystem);
     $fileUploader->addValidator($validator);
     $callbackResult = null;
     //callback
     $fileUploader->addCallback('completed', function (FileUploadFile $files) use($callback, $fileId, $tempPath, $destPath, $localFileSystem, $remoteFileSystem, &$callbackResult) {
         $file = new File($fileId);
         $file->path = $destPath;
         $file->status = $file::STATUS_UPLOADED;
         $file->size = $localFileSystem->get($tempPath . '/' . $files->name)->getSize();
         $file->save();
         $fileContent = $localFileSystem->read($tempPath . '/' . $files->name);
         $remoteFileSystem->write($destPath . '/' . $files->name, $fileContent);
         $localFileSystem->delete($tempPath . '/' . $files->name);
         $localFileSystem->delete($tempPath);
         if ($callback) {
             $callbackResult = $callback($file);
         }
     });
     list($fileUploadObject, $headers) = $fileUploader->processAll();
     $properties = get_object_vars($fileUploadObject[0]);
     // O_O mama mia
     /* foreach ($properties as $property=> $value) {
            if ($property != 'path') {
                $info[$property] = $value;
            }
        } */
     unset($properties['path']);
     $result = array('info' => $properties);
     if ($result['info']['error'] != 0) {
         $file->delete();
     }
     if ($callbackResult) {
         $result = array_merge($result, $callbackResult);
     }
     $result[$this->fileIdAttr] = $fileId;
     $this->lastUploadedResult = $result;
     return $result;
 }