/**
  * Set the Transit Transporter to use based on the attachment settings.
  *
  * @param Model $model
  * @param \Transit\Transit $transit
  * @param array $attachment
  */
 protected function _setTransporter(Model $model, Transit $transit, array $attachment)
 {
     if (empty($attachment['transport'])) {
         return;
     }
     $transit->setTransporter($this->_getTransporter($attachment['transport']));
 }
 /**
  * Validate the field against the validation rules.
  *
  * @uses Transit\Transit
  * @uses Transit\File
  * @uses Transit\Validator\ImageValidator
  *
  * @param Model $model
  * @param array $data
  * @param string $method
  * @param array $params
  * @return bool
  * @throws UnexpectedValueException
  */
 protected function _validate(Model $model, $data, $method, array $params)
 {
     foreach ($data as $field => $value) {
         if ($this->_allowEmpty($model, $field, $value)) {
             return true;
         } else {
             if ($this->_isEmpty($value)) {
                 return false;
             }
         }
         $file = null;
         // Upload, use temp file
         if (is_array($value)) {
             $file = new File($value);
             // Import, copy file for validation
         } else {
             if (!empty($value)) {
                 $target = TMP . md5($value);
                 $transit = new Transit($value);
                 $transit->setDirectory(TMP);
                 // Already imported from previous validation
                 if (file_exists($target)) {
                     $file = new File($target);
                     // Local file
                 } else {
                     if (file_exists($value)) {
                         $file = new File($value);
                         // Attempt to copy from remote
                     } else {
                         if (preg_match('/^http/i', $value)) {
                             if ($transit->importFromRemote()) {
                                 $file = $transit->getOriginalFile();
                                 $file->rename(basename($target));
                             }
                             // Or from stream
                         } else {
                             if ($transit->importFromStream()) {
                                 $file = $transit->getOriginalFile();
                                 $file->rename(basename($target));
                             }
                         }
                     }
                 }
                 // Save temp so we can delete later
                 if ($file) {
                     $this->_tempFile = $file;
                 }
             }
         }
         if (!$file) {
             $this->log(sprintf('Invalid upload or import for validation: %s', json_encode($value)), LOG_DEBUG);
             return false;
         }
         $validator = new ImageValidator();
         $validator->setFile($file);
         return call_user_func_array(array($validator, $method), $params);
     }
     return false;
 }
Example #3
0
<?php

require_once 'include.php';
use Transit\Transit;
use Transit\Transformer\Image\CropTransformer;
use Transit\Transporter\Aws\S3Transporter;
use Transit\Validator\ImageValidator;
if ($_FILES) {
    $validator = new ImageValidator();
    $validator->addRule('size', 'File size is too large', 2003000);
    $transit = new Transit($_FILES['file']);
    $transit->setDirectory(__DIR__ . '/tmp/')->setValidator($validator)->setTransporter(new S3Transporter('access', 'secret', array('bucket' => '', 'region' => '')))->addTransformer(new CropTransformer(array('width' => 100)));
    try {
        if ($transit->upload()) {
            $transit->getOriginalFile()->rename(function ($name) {
                return md5($name);
            });
            if ($transit->transform()) {
                debug($transit->getAllFiles());
                debug($transit->transport());
            }
        }
    } catch (Exception $e) {
        debug($e->getMessage());
    }
}
?>

<!DOCTYPE html>
<head>
	<title>Transit - Upload</title>
 /**
  * Test that exceptions are thrown if errors arise during upload.
  */
 public function testUploadErrors()
 {
     $this->data['tmp_name'] = null;
     try {
         $transit = new Transit($this->data);
         $transit->upload();
         $this->assertTrue(false);
     } catch (Exception $e) {
         $this->assertTrue(true);
     }
     $this->data['tmp_name'] = $this->tempFile;
     $this->data['error'] = 3;
     try {
         $transit = new Transit($this->data);
         $transit->upload();
         $this->assertTrue(false);
     } catch (Exception $e) {
         $this->assertTrue(true);
     }
 }
Example #5
0
function t()
{
    $t = new Transit(new JSONReader(), new JSONWriter());
    $t->registerHandler(new PointHandler());
    $t->registerHandler(new CircleHandler());
    return $t;
}