Example #1
0
 public function validate($data = NULL)
 {
     foreach ($this->_meta->fields() as $column => $field) {
         if ($field instanceof Field_File) {
             Torn_Uploader::init($field, $this);
         }
     }
     return parent::validate($data);
 }
Example #2
0
 public function action_upload()
 {
     $field = 'Filedata';
     if (($value = Arr::get($_FILES, $field, FALSE)) === FALSE) {
         $this->request->response = 'error';
         return;
     }
     if (!Upload::not_empty($value) or !Upload::valid($value)) {
         $this->request->response = 'error';
         return;
     }
     if ($tmp_name = Torn_Uploader::upload_to_cache($value, $field)) {
         $this->request->response = 'done;' . $tmp_name;
     } else {
         $this->request->response = 'error';
     }
 }
Example #3
0
<?php

defined('SYSPATH') or die('No direct script access.');
if (Kohana::config('torn')->default_controller) {
    Route::set('torn/upload', 'torn/upload')->defaults(array('controller' => 'torn', 'action' => 'upload'));
    Route::set('torn/config', 'torn/config')->defaults(array('controller' => 'torn', 'action' => 'config'));
    Route::set('torn/cancel', 'torn/cancel(/<hash>)', array('hash' => '(?:[a-z0-9]{32}-[a-z0-9]{32})|(?:--hash--)'))->defaults(array('controller' => 'torn', 'action' => 'cancel', 'hash' => NULL));
    Route::set('torn/media', 'torn/media/<media>', array('media' => '(.+?\\.(js|swf))(\\+.+?\\.js)*'))->defaults(array('controller' => 'torn', 'action' => 'media'));
}
Torn_Uploader::garbage_collector();
Example #4
0
 public function invoke(Validate $array, $field)
 {
     $value = $array[$field];
     if (!is_array($value)) {
         return TRUE;
     }
     $cache = Cache::instance();
     $surfix = Kohana::config('torn')->surfix->temp;
     $cached = $this->model->get($field . $surfix);
     $current = $this->model->get($field, FALSE);
     $used_cached = FALSE;
     $empty_check = FALSE;
     if (!Upload::not_empty($value) and empty($cached) and !empty($current)) {
         $this->model->set($field, $current);
         $array[$field] = $current;
         return TRUE;
     }
     if (!Upload::not_empty($value) and preg_match('/^[a-z0-9]{32}-[a-z0-9]{32}$/iD', $cached)) {
         $value = Arr::get($cache->get($cached), 'upload', $value);
         $used_cached = TRUE;
     }
     $modified_rules = $this->rules;
     foreach ($this->rules as $rule => $params) {
         if (!utf8::strcasecmp($rule, 'Upload::not_empty')) {
             unset($modified_rules[$rule]);
             $modified_rules['Torn_Uploader::not_empty'] = NULL;
             break;
         }
     }
     $validate = Validate::factory(array($field => $value))->filters($field, $this->filters)->rules($field, $modified_rules)->callbacks($field, $this->callbacks);
     if (!$validate->check()) {
         foreach ($validate->errors() as $v) {
             list($error, $params) = $v;
             $array->error($field, $error, $params);
         }
         return FALSE;
     }
     $validate = $array->as_array();
     $value = $validate[$field];
     if ($tmp_name = Torn_Uploader::upload_to_cache($value, $field) and !$used_cached) {
         $array[$field] = $tmp_name;
     } else {
         $array[$field] = Arr::get($_POST, $field . $surfix, $value);
     }
     $this->model->set($field, $array[$field]);
     return TRUE;
 }